diff --git a/.github/WORKFLOWS.md b/.github/WORKFLOWS.md index 534e116a00a..6d8ef1bb8f2 100644 --- a/.github/WORKFLOWS.md +++ b/.github/WORKFLOWS.md @@ -394,6 +394,7 @@ Push to master/1.x | Daily 00:00 | `util-check-docs-urls.yml` | Doc link validation | | Daily 01:30, 02:30, 03:30 | `test-benchmark-nightly.yml` | Performance benchmarks | | Daily 02:00 | `test-get-n8n.yml` | get.n8n.io installer health | +| Daily 02:00 | `test-e2e-pc-nightly.yml` | E2E on the `-pc` image | | Daily 05:00 | `test-benchmark-destroy-nightly.yml`| Cleanup benchmark env | | Daily 06:00 | `util-sync-master-to-3x.yml` | Replay 3.x onto master (v3) | | Daily 08:00 | `build-v3-nightly.yml` | Nightly v3 Docker images | diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml index cb1e096c68c..e2a9a58eefc 100644 --- a/.github/workflows/docker-build-push.yml +++ b/.github/workflows/docker-build-push.yml @@ -699,7 +699,7 @@ jobs: name: Notify Cats on nightly build failure runs-on: ubuntu-latest needs: [build-and-push-docker] - if: needs.build-and-push-docker.result == 'failure' && github.event_name == 'schedule' + if: always() && needs.build-and-push-docker.result == 'failure' && github.event_name == 'schedule' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: diff --git a/.github/workflows/test-e2e-pc-nightly.yml b/.github/workflows/test-e2e-pc-nightly.yml new file mode 100644 index 00000000000..94c648c43d1 --- /dev/null +++ b/.github/workflows/test-e2e-pc-nightly.yml @@ -0,0 +1,76 @@ +name: 'Test: E2E on -pc image' + +# Boots the pointer-compressed n8n image and runs the e2e suite against it. + +on: + schedule: + - cron: '0 2 * * *' # after the nightly Docker build at midnight + workflow_dispatch: + inputs: + image: + description: 'n8n image to test' + required: false + default: 'n8nio/n8n:nightly-pc' + type: string + +permissions: + contents: read + +env: + TEST_IMAGE_N8N: ${{ inputs.image || 'n8nio/n8n:nightly-pc' }} + +jobs: + e2e-pc: + name: E2E on -pc image (${{ matrix.shard }}/4) + runs-on: blacksmith-4vcpu-ubuntu-2204 + timeout-minutes: 60 + strategy: + fail-fast: false + matrix: + shard: [1, 2, 3, 4] + steps: + - uses: useblacksmith/checkout@41cdeedae8edb2e684ba22896a5fd2a3cb85db6b # v1 + with: + persist-credentials: false + + - name: Pull image and assert pointer compression + run: | + docker pull --quiet "$TEST_IMAGE_N8N" + docker run --rm --entrypoint node "$TEST_IMAGE_N8N" -e " + if (!process.config.variables.v8_enable_pointer_compression) { + throw new Error('image is not pointer-compressed'); + } + console.log(process.version, 'pointer compression: on'); + " + + - name: Build the test harness + uses: ./.github/actions/setup-nodejs + with: + build-command: 'pnpm turbo build --filter=n8n-playwright...' + + - name: Install Playwright browsers + working-directory: packages/testing/playwright + run: npx playwright install chromium --with-deps + + - name: Run e2e against the image + working-directory: packages/testing/playwright + run: pnpm test:container:sqlite:e2e -- --shard=${{ matrix.shard }}/4 + + notify-on-failure: + name: Notify Cats on -pc e2e failure + runs-on: ubuntu-latest + needs: [e2e-pc] + if: always() && needs.e2e-pc.result == 'failure' && github.event_name == 'schedule' + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + sparse-checkout: .github/scripts/slack + sparse-checkout-cone-mode: false + - name: Notify Slack + env: + SLACK_TOKEN: ${{ secrets.QBOT_SLACK_TOKEN }} + run: | + node .github/scripts/slack/notify.mjs \ + --channel '#team-catalysts' \ + --text 'Nightly e2e on the -pc image failed - ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'