fix(ci): split smoke gate — required curl smoke + advisory Playwright - #60
Merged
Conversation
The combined smoke gate was the chronic CI pain point:
- Boots compose + runs the full Playwright Chromium suite in one job.
- 20-min timeout — slow signal on legitimate failures.
- Playwright surface (browser timing, animation, transient network)
flakes occasionally; flake = blocked PR until rerun.
- Sometimes the runner gets stuck pre-start and GitHub's job timeout
doesn't apply; the run hangs indefinitely until manually cancelled.
Happened to run 26681455502 today.
Split into two workflows so each part can have the cost/value contract
that suits it:
- `infra-compose-full-stack-smoke.yml` (REQUIRED) — curl-only
register → login → /me → register-new → dashboard round-trip.
Timeout 8 min. The curl path completes in ~3–4 min on warm runners,
so an 8-min ceiling fails fast instead of hanging for 20.
- `infra-compose-playwright-e2e.yml` (ADVISORY) — boots the same
stack, runs the apps/ui Playwright Chromium suite. NOT a required
check; a Playwright flake no longer blocks merges. Failure means
"go look at the run", not "rerun and hope".
The OpenAPI schema check that was bundled into smoke is dropped —
`apps-api-openapi-drift.yml` already runs the same check as a
dedicated required workflow.
Both workflows keep the same paths-filter triggers; smoke also keeps
the no-paths `pull_request:` from PR #59 so it reports a status on
docs PRs via the internal skip-with-success pattern.
Operator follow-up (manual, in branch protection settings):
- The Playwright job name "UI Playwright E2E (browser-based smoke)"
will appear in the required-check picker once it runs once. Leave
it OFF — that's the whole point of the split.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The combined smoke gate was the chronic CI pain point:
Change
Split into two workflows so each part has the cost/value contract that suits it:
The curl smoke completes in ~3–4 min on warm runners; the 8-min ceiling fails fast instead of hanging for 20. Playwright failures stop being merge blockers — a flake means "go look at the run", not "rerun and hope".
Also drops the OpenAPI schema check that was bundled into smoke — `apps-api-openapi-drift.yml` already runs the same check as a dedicated required workflow.
Operator follow-up
The Playwright job name `UI Playwright E2E (browser-based smoke)` will appear in the required-check picker once it runs once. Leave it OFF — that's the whole point of the split.
Test plan