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.

Share:
1,635
Nicola Landro
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, 2022

Comments

  • Nicola Landro
    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'