diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a51c4e0..e292ee5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -337,24 +337,18 @@ jobs: name: E2E Tests (shard ${{ matrix.shard }}/${{ strategy.job-total }}) runs-on: ubuntu-latest needs: [lint, load-tests, changes] - # PAUSED 2026-08-11 — remove this line to resume. test-summary's - # E2E-report steps are guarded on `needs.e2e-tests.result != 'skipped'` - # and degrade cleanly while this is off. Do NOT restore `if: always()` - # (that was the original value) — removed the same pattern from - # accessibility-tests/visual-tests 2026-08-12 after verifying live that - # it ignores workflow cancellation. - # - # Path filtering was added 2026-08-14 (see the `changes` job) to every - # other suite in this chain. When resuming e2e, delete the `if: false` - # line above and uncomment the real gated condition below instead of - # restoring plain always() — same always()+!cancelled() pairing used - # everywhere else in this file. - if: false - # if: | - # always() && !cancelled() && - # needs.lint.result == 'success' && - # (needs.load-tests.result == 'success' || needs.load-tests.result == 'skipped') && - # (needs.changes.result != 'success' || needs.changes.outputs.e2e == 'true') + # RESUMED 2026-08-17 — was paused since 2026-08-11 pending the e2e + # round-2 re-verification (all 12 shard groups / 543 tests confirmed + # clean, see PR #7). Path-filtered gating, same pattern as every other + # suite in this chain (always()+!cancelled() so this job is still + # evaluated when its predecessor was filtered-out-skipped, not just on + # success; never bare always() — that ignores workflow cancellation, + # verified live 2026-08-12). + if: | + always() && !cancelled() && + needs.lint.result == 'success' && + (needs.load-tests.result == 'success' || needs.load-tests.result == 'skipped') && + (needs.changes.result != 'success' || needs.changes.outputs.e2e == 'true') timeout-minutes: 60 strategy: fail-fast: false diff --git a/docs/ci_workflow_notes.md b/docs/ci_workflow_notes.md index 34ce27b..2dd1113 100644 --- a/docs/ci_workflow_notes.md +++ b/docs/ci_workflow_notes.md @@ -69,14 +69,18 @@ code or contort a naming scheme. ## Currently paused jobs -| Job | Status | Notes | -|---|---|---| -| `e2e-tests` | **paused** since 2026-08-11 (`if: false`) | By request, not due to failures. `test-summary`'s E2E-report steps are guarded on `needs.e2e-tests.result != 'skipped'` so the pipeline degrades cleanly on missing shard artifacts. To resume: delete the active `if: false` line and uncomment the real gated condition already sitting commented-out directly below it in `ci.yml` — do **not** restore `if: always()`, see the "Path-filtered CI" section below for why. | - -`e2e-tests` now depends on `needs: [lint, load-tests, changes]` (as of the -2026-08-14 path-filtering change below) rather than just `visual-tests` — -resuming it still works independent of any of those, since the job's own -`if:` is what actually controls it. +None. `e2e-tests` was paused 2026-08-11 through 2026-08-17 (`if: false`, by +request, not due to failures) and resumed once the full 543-test e2e round-2 +re-verification came back clean (PR #7) — it now uses the same path-filtered +`if:` pattern as every other suite in this chain (see "Path-filtered CI" +below), gated on `needs.changes.outputs.e2e`. `test-summary`'s E2E-report +steps are still guarded on `needs.e2e-tests.result != 'skipped'`, which was +originally added for the pause but stays harmless now that e2e runs +normally — a path-filtered skip (no `tests/e2e/**` changes in a given PR) +degrades the same way a paused job did. + +`e2e-tests` depends on `needs: [lint, load-tests, changes]` (as of the +2026-08-14 path-filtering change below) rather than just `visual-tests`. ---