2

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

 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

完整的例子在这里。要复制问题,请执行以下操作:

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

有趣的文件如下:

  • Dockerfile:
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
  • run_test_drive.sh:
#!/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
  • 码头工人-compose.yml
version: '3'

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

1 回答 1

1

我将 chrome 和 chrome 驱动程序版本升级到最新版本,现在它可以工作了!所以这个代码版本运行良好。

于 2020-06-19T07:27:14.337 回答