name: Docker on: push: paths: - '.github/workflows/test_docker.yml' - '**/Dockerfile*' branches: - main - release-* pull_request: paths: - .github/workflows/test_docker.yml - '**/Dockerfile*' - scripts/DRIVER_VERSION - '**/pom.xml' branches: - main - release-* jobs: test: name: Test timeout-minutes: 120 runs-on: ${{ matrix.runs-on }} env: PW_MAX_RETRIES: 3 strategy: fail-fast: false matrix: flavor: [jammy, noble, resolute] runs-on: [ubuntu-24.04, ubuntu-24.04-arm] include: - runs-on: ubuntu-24.04 arch: amd64 - runs-on: ubuntu-24.04-arm arch: arm64 steps: - uses: actions/checkout@v6 - name: Build Docker image run: | bash utils/docker/build.sh --${{ matrix.arch }} ${{ matrix.flavor }} playwright-java:localbuild-${{ matrix.flavor }} - name: Start container run: | CONTAINER_ID=$(docker run \ --rm \ --name playwright-docker-test \ --platform linux/${{ matrix.arch }} \ --user=pwuser \ --workdir /home/pwuser \ --shm-size=2g \ -e CI \ -e PW_MAX_RETRIES \ -d -t \ playwright-java:localbuild-${{ matrix.flavor }} /bin/bash) echo "CONTAINER_ID=$CONTAINER_ID" >> $GITHUB_ENV - name: Copy repository inside docker container run: | docker cp . "$CONTAINER_ID":/home/pwuser/playwright # /root/.m2 was populated as root during image build; move it to # pwuser so the locally-installed SNAPSHOT artifacts resolve. docker exec --user root "$CONTAINER_ID" bash -c ' chown -R pwuser /home/pwuser/playwright mv /root/.m2 /home/pwuser/.m2 chown -R pwuser /home/pwuser/.m2 ' - name: Run smoke tests in container run: | docker exec "$CONTAINER_ID" /home/pwuser/playwright/tools/test-local-installation/create_project_and_run_tests.sh -Dgroups=smoke - name: Test ClassLoader run: | docker exec "${CONTAINER_ID}" /home/pwuser/playwright/tools/test-spring-boot-starter/package_and_run_async_test.sh - name: Stop container run: | docker stop "$CONTAINER_ID"