name: 'Test: E2E Coverage Weekly' on: schedule: - cron: '0 2 * * 1' # Every Monday at 2 AM workflow_dispatch: # Allow manual triggering env: NODE_OPTIONS: --max-old-space-size=16384 TESTCONTAINERS_RYUK_DISABLED: true PLAYWRIGHT_WORKERS: 4 PLAYWRIGHT_BROWSERS_PATH: packages/testing/playwright/.playwright-browsers jobs: coverage: runs-on: blacksmith-8vcpu-ubuntu-2204 name: Coverage Tests steps: - name: Checkout uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 - name: Setup Environment uses: ./.github/actions/setup-nodejs env: INCLUDE_TEST_CONTROLLER: 'true' - name: Build Docker Image with Coverage run: pnpm build:docker:coverage env: INCLUDE_TEST_CONTROLLER: 'true' - name: Install Browsers run: pnpm turbo run install-browsers --filter=n8n-playwright - name: Run Container Coverage Tests id: coverage-tests run: | pnpm --filter n8n-playwright test:container:sqlite \ --workers=${{ env.PLAYWRIGHT_WORKERS }} env: BUILD_WITH_COVERAGE: 'true' CURRENTS_RECORD_KEY: ${{ secrets.CURRENTS_RECORD_KEY }} CURRENTS_PROJECT_ID: 'LRxcNt' QA_PERFORMANCE_METRICS_WEBHOOK_URL: ${{ secrets.QA_PERFORMANCE_METRICS_WEBHOOK_URL }} QA_PERFORMANCE_METRICS_WEBHOOK_USER: ${{ secrets.QA_PERFORMANCE_METRICS_WEBHOOK_USER }} QA_PERFORMANCE_METRICS_WEBHOOK_PASSWORD: ${{ secrets.QA_PERFORMANCE_METRICS_WEBHOOK_PASSWORD }} - name: Generate Coverage Report if: always() && steps.coverage-tests.outcome != 'skipped' run: pnpm --filter n8n-playwright coverage:report - name: Upload Coverage Report Artifact if: always() uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: coverage-report path: packages/testing/playwright/coverage/ retention-days: 14 - name: Upload E2E Coverage to Codecov if: always() uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 with: token: ${{ secrets.CODECOV_TOKEN }} files: packages/testing/playwright/coverage/lcov.info flags: frontend-e2e name: playwright-e2e fail_ci_if_error: false