From 62ba204537c377bbce4a6508a472aa72ba4f2563 Mon Sep 17 00:00:00 2001 From: Pablo Zmdl Date: Wed, 3 Jun 2026 11:06:59 +0200 Subject: [PATCH] Run playwright tests in CI via compose setup Signed-off-by: Pablo Zmdl --- .github/workflows/playwright-on-push.yml | 94 +------------------ .../playwright-on-workflow-dispatch.yml | 71 ++------------ 2 files changed, 11 insertions(+), 154 deletions(-) diff --git a/.github/workflows/playwright-on-push.yml b/.github/workflows/playwright-on-push.yml index 4391dc4c..b43a4f19 100644 --- a/.github/workflows/playwright-on-push.yml +++ b/.github/workflows/playwright-on-push.yml @@ -34,99 +34,13 @@ jobs: steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 - with: - node-version: 24.15.0 - - - name: Install dependencies - run: cd php/tests && npm ci --omit=optional - - - name: Install Playwright Browsers - run: cd php/tests && npx playwright install --with-deps chromium - - - name: Set up php 8.5 - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # v2.37.0 - with: - extensions: apcu - php-version: 8.5 - coverage: none - ini-file: development - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Adjust some things and fix permissions - run: | - cd php - rm -r ./data - rm -r ./session - composer install --no-dev - composer clear-cache - sudo chmod 777 -R ../ - - - name: Start fresh development server - run: | - docker rm --force nextcloud-aio-{mastercontainer,apache,notify-push,nextcloud,redis,database,domaincheck,whiteboard,imaginary,talk,collabora,borgbackup} || true - docker volume rm nextcloud_aio_{mastercontainer,apache,database,database_dump,nextcloud,nextcloud_data,redis,backup_cache,elasticsearch} || true - docker pull ghcr.io/nextcloud-releases/all-in-one:develop - docker run \ - -d \ - --init \ - --name nextcloud-aio-mastercontainer \ - --restart always \ - --publish 8080:8080 \ - --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \ - --volume ./php:/var/www/docker-aio/php \ - --volume ./Containers/mastercontainer/internal.Caddyfile:/internal.Caddyfile \ - --volume ./Containers/mastercontainer/headers.Caddyfile:/headers.Caddyfile \ - --volume ./Containers/mastercontainer/start.sh:/start.sh \ - --volume /var/run/docker.sock:/var/run/docker.sock:ro \ - --env SKIP_DOMAIN_VALIDATION=true \ - --env APACHE_PORT=11000 \ - ghcr.io/nextcloud-releases/all-in-one:develop - echo Waiting for 10 seconds for the development container to start ... - sleep 10 - - name: Run Playwright tests for initial setup - run: | - cd php/tests - export DEBUG=pw:api - if ! npx playwright test tests/initial-setup.spec.js; then - docker logs nextcloud-aio-mastercontainer - docker logs nextcloud-aio-borgbackup - exit 1 - fi - - - name: Start fresh development server - run: | - docker rm --force nextcloud-aio-{mastercontainer,apache,notify-push,nextcloud,redis,database,domaincheck,whiteboard,imaginary,talk,collabora,borgbackup} || true - docker volume rm nextcloud_aio_{mastercontainer,apache,database,database_dump,nextcloud,nextcloud_data,redis,backup_cache,elasticsearch} || true - docker run \ - -d \ - --init \ - --name nextcloud-aio-mastercontainer \ - --restart always \ - --publish 8080:8080 \ - --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \ - --volume ./php:/var/www/docker-aio/php \ - --volume ./Containers/mastercontainer/internal.Caddyfile:/internal.Caddyfile \ - --volume ./Containers/mastercontainer/headers.Caddyfile:/headers.Caddyfile \ - --volume ./Containers/mastercontainer/start.sh:/start.sh \ - --volume /var/run/docker.sock:/var/run/docker.sock:ro \ - --env SKIP_DOMAIN_VALIDATION=false \ - --env APACHE_PORT=11000 \ - ghcr.io/nextcloud-releases/all-in-one:develop - echo Waiting for 10 seconds for the development container to start ... - sleep 10 + run: ./php/tests/run.sh ./php/tests/tests/initial-setup.spec.js + env: + SKIP_DOMAIN_VALIDATION: 'true' - name: Run Playwright tests for backup restore - run: | - cd php/tests - export DEBUG=pw:api - if ! npx playwright test tests/restore-instance.spec.js; then - docker logs nextcloud-aio-mastercontainer - docker logs nextcloud-aio-borgbackup - exit 1 - fi + run: ./php/tests/run.sh ./php/tests/tests/restore-instance.spec.js - name: Start deSEC mock and fresh development server run: | diff --git a/.github/workflows/playwright-on-workflow-dispatch.yml b/.github/workflows/playwright-on-workflow-dispatch.yml index a605c511..a9419889 100644 --- a/.github/workflows/playwright-on-workflow-dispatch.yml +++ b/.github/workflows/playwright-on-workflow-dispatch.yml @@ -19,72 +19,15 @@ jobs: steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 - with: - node-version: 24.15.0 - - - name: Install dependencies - run: cd php/tests && npm ci --omit=optional - - - name: Install Playwright Browsers - run: cd php/tests && npx playwright install --with-deps chromium - - - name: Start fresh development server - run: | - docker rm --force nextcloud-aio-{mastercontainer,apache,notify-push,nextcloud,redis,database,domaincheck,whiteboard,imaginary,talk,collabora,borgbackup} || true - docker volume rm nextcloud_aio_{mastercontainer,apache,database,database_dump,nextcloud,nextcloud_data,redis,backup_cache,elasticsearch} || true - docker pull ghcr.io/nextcloud-releases/all-in-one:develop - docker run \ - -d \ - --init \ - --name nextcloud-aio-mastercontainer \ - --restart always \ - --publish 8080:8080 \ - --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \ - --volume /var/run/docker.sock:/var/run/docker.sock:ro \ - --env SKIP_DOMAIN_VALIDATION=true \ - --env APACHE_PORT=11000 \ - ghcr.io/nextcloud-releases/all-in-one:develop - echo Waiting for 10 seconds for the development container to start ... - sleep 10 - - name: Run Playwright tests for initial setup - run: | - cd php/tests - export DEBUG=pw:api - if ! npx playwright test tests/initial-setup.spec.js; then - docker logs nextcloud-aio-mastercontainer - docker logs nextcloud-aio-borgbackup - exit 1 - fi - - - name: Start fresh development server - run: | - docker rm --force nextcloud-aio-{mastercontainer,apache,notify-push,nextcloud,redis,database,domaincheck,whiteboard,imaginary,talk,collabora,borgbackup} || true - docker volume rm nextcloud_aio_{mastercontainer,apache,database,database_dump,nextcloud,nextcloud_data,redis,backup_cache,elasticsearch} || true - docker run \ - -d \ - --init \ - --name nextcloud-aio-mastercontainer \ - --restart always \ - --publish 8080:8080 \ - --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \ - --volume /var/run/docker.sock:/var/run/docker.sock:ro \ - --env SKIP_DOMAIN_VALIDATION=false \ - --env APACHE_PORT=11000 \ - ghcr.io/nextcloud-releases/all-in-one:develop - echo Waiting for 10 seconds for the development container to start ... - sleep 10 + env: + TEST_CODE_FROM_IMAGE: yes + run: ./php/tests/run.sh ./php/tests/tests/initial-setup.spec.js - name: Run Playwright tests for backup restore - run: | - cd php/tests - export DEBUG=pw:api - if ! npx playwright test tests/restore-instance.spec.js; then - docker logs nextcloud-aio-mastercontainer - docker logs nextcloud-aio-borgbackup - exit 1 - fi + env: + TEST_CODE_FROM_IMAGE: yes + run: ./php/tests/run.sh ./php/tests/tests/restore-instance.spec.js - name: Start deSEC mock and fresh development server run: | @@ -151,4 +94,4 @@ jobs: name: playwright-report path: php/tests/playwright-report/ retention-days: 14 - overwrite: true + overwrite: true \ No newline at end of file