Integrate flutter ui test with docker: drive test on headless chrome

Integrate flutter ui test with docker: drive test on headless chrome

我需要将 flutter test drive 集成到 GitlabCI 中。我认为创建 docker 容器的最简单方法(我使用 GitlabCI,但如果你使用纯 Docker 或 CircleCI 或 TravisCI 或一些管道进入 AWS 或许多其他方式,你会遇到同样的问题) chrome 作为设备。 但是我得到这个错误:

 Found multiple connected devices:
test_drive_1  | Web Server • web-server • web-javascript • Flutter Tools
test_drive_1  | Chrome     • chrome     • web-javascript • Google Chrome 74.0.3729.108
test_drive_1  | Using device Web Server.
test_drive_1  | Starting application: test_driver/app.dart
test_drive_1  | Launching test_driver/app.dart on Web Server in release mode...
test_drive_1  | Compiling test_driver/app.dart for the Web...                      29.8s
test_drive_1  | test_driver/app.dart is being served at http://localhost:36571
test_drive_1  | Application finished.
test_drive_1  | Waiting for connection from Dart debug extension at http://localhost:36571
test_drive_1  | Unable to start WebDriver Session for Flutter for Web testing. 
test_drive_1  | Make sure you have the correct WebDriver Server running at 4444. 
test_drive_1  | Make sure the WebDriver Server matches option --browser-name. 
test_drive_1  | WebDriverException (61): invalid argument: perfLoggingPrefs specified, but performance logging was not enabled
test_drive_1  |   (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 4.15.0-33-generic x86_64)
flutter_test_app_test_drive_1 exited with code 0

完整的例子是here。 要重现该问题,请执行以下操作:

git clone https://gitlab.com/nicolalandro/flutter_test_app.git
cd flutter_test_drive

cd docker
docker build -t flutter_test_drive .

cd ..
docker-compose up

有趣的文件如下:

from cirrusci/flutter:stable

RUN sudo apt update && sudo apt install -y gdebi-core libnss3 libgconf-2-4
ADD google-chrome-stable_current_amd64.deb .
RUN sudo gdebi -n google-chrome-stable_current_amd64.deb

WORKDIR /app
ADD chromedriver .
RUN sudo chmod +x chromedriver

# upgrade flutter
RUN cd /home/cirrus/sdks/flutter && git checkout master && git pull && flutter upgrade

RUN flutter config --enable-web && flutter doctor
#!/bin/sh
/app/chromedriver --whitelisted-ips --port=4444 &
FOO_PID=$!
# nohup sh -c /app/chromedriver --whitelisted-ips &

flutter doctor
flutter pub get
flutter clean

# run test
flutter drive --target=test_driver/app.dart --release

kill $FOO_PID
version: '3'

services:
  test_drive:
    image: flutter_test_drive
    volumes:
    - .:/flutter_project
    working_dir: /flutter_project
    command: "./run_test_drive.sh"
    ports:
    - '8000:8000'

我将 chrome 和 chrome 驱动程序版本升级到最新版本,现在可以使用了!所以this code version工作得很好。