Integrate flutter ui test with docker: drive test on headless chrome
1,635
I upgrade the chrome and chrome driver versions to latest and now it work! So this code version work well.
Author by
Nicola Landro
Linux user and Open Source fun. Deep learning PhD Student, Data scientist, Ai expert, Full stack web developer, Mobile developer, Musician.
Updated on December 01, 2022Comments
-
Nicola Landro over 1 year
I need to integrate flutter test drive into GitlabCI. I thing that easiest way to create a docker container (I use GitlabCI but you have the same problem if you use pure Docker or CircleCI or TravisCI or some pipeline into AWS or many other way) with chrome as device. But I get this error:
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
The complete example is here. To replicate the problem do this:
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
The interesting file are the follow:
- 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
- docker-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'