diff --git a/ci/test.yml b/ci/test.yml index f68aea6a98..1b0fa39b64 100644 --- a/ci/test.yml +++ b/ci/test.yml @@ -394,3 +394,39 @@ connect-web: extends: .e2e connect-web only: <<: *run_everything_rules + +.e2e connect-web-extension: + stage: integration testing + variables: + COMPOSE_PROJECT_NAME: $CI_JOB_ID + COMPOSE_FILE: ./docker/docker-compose.connect-webextension-test.yml + URL: ${DEV_SERVER_URL}/connect/${CI_BUILD_REF_NAME}/ + HEADLESS: "true" + script: + - yarn install --immutable + - node ./packages/connect-examples/update-webextensions.js + - docker-compose pull + - docker-compose up -d trezor-user-env-unix + - docker-compose run test-run + after_script: + - docker-compose down + - docker network prune -f + artifacts: + expire_in: 7 days + when: always + paths: + - ./packages/integration-tests/screenshots + - ./packages/integration-tests/test-results + interruptible: true + +connect-web-extension: + extends: .e2e connect-web-extension + only: + <<: *run_everything_rules + when: always + +connect-web-extension manual: + extends: .e2e connect-web-extension + except: + <<: *run_everything_rules + when: manual diff --git a/docker/docker-compose.connect-webextension-test.yml b/docker/docker-compose.connect-webextension-test.yml new file mode 100644 index 0000000000..a222c22fa0 --- /dev/null +++ b/docker/docker-compose.connect-webextension-test.yml @@ -0,0 +1,36 @@ +version: "3.9" +services: + trezor-user-env-unix: + image: ghcr.io/trezor/trezor-user-env + environment: + - SDL_VIDEODRIVER=dummy + - XDG_RUNTIME_DIR=/var/tmp + - DISPLAY=$DISPLAY + - QT_X11_NO_MITSHM=1 + - LOCAL_USER_ID=$LOCAL_USER_ID + volumes: + - /tmp/.X11-unix:/tmp/.X11-unix:rw + + test-run: + image: mcr.microsoft.com/playwright:focal + container_name: webextension-test-runner + ipc: host + depends_on: + - trezor-user-env-unix + network_mode: service:trezor-user-env-unix + environment: + - URL=$URL + - HEADLESS=$HEADLESS + - DISPLAY=$DISPLAY + - LOCAL_USER_ID=$LOCAL_USER_ID + - CI_JOB_URL=$CI_JOB_URL + - CI_COMMIT_BRANCH=$CI_COMMIT_BRANCH + - CI_JOB_NAME=$CI_JOB_NAME + # useful for debugging tests + - PWDEBUG=console + + working_dir: /trezor-suite + command: bash -c "npx playwright install && yarn workspace @trezor/connect-webextension test:e2e" + volumes: + - ../:/trezor-suite + - /tmp/.X11-unix:/tmp/.X11-unix:rw diff --git a/docker/docker-connect-webextension-test.sh b/docker/docker-connect-webextension-test.sh new file mode 100755 index 0000000000..050305b5c7 --- /dev/null +++ b/docker/docker-connect-webextension-test.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -e + +xhost + +LOCAL_USER_ID="$(id -u "$USER")" +HEADLESS=false +export LOCAL_USER_ID +export HEADLESS + +docker-compose -f ./docker/docker-compose.connect-webextension-test.yml up --build --abort-on-container-exit