|
| 1 | +# Written by `/claudegrill:setup`. Safe to edit — it is a plain caller. |
| 2 | +# |
| 3 | +# THIS IS THE ONLY PR CHECK MOST PRODUCTS NEED. No ANTHROPIC_API_KEY, no agent, |
| 4 | +# runner minutes only. |
| 5 | +# |
| 6 | +# It works without AI because the developer already wrote the spec: they ran |
| 7 | +# /claudegrill:verify-fix locally, write-spec added a @fresh spec to their |
| 8 | +# branch, and they committed it with the fix. By the time CI sees the PR the |
| 9 | +# regression is already a deterministic assertion. |
| 10 | +# |
| 11 | +# ONE job, on pull requests only. Nothing runs on a schedule: the team's model is |
| 12 | +# a local /claudegrill:verify-fix while the fix is being written, and the e2e |
| 13 | +# suite on the PR. No cron, no nightly, no WordPress-core watcher. |
| 14 | +# |
| 15 | +# `scope: changed` narrows a run to the areas the diff maps to. That is safe by |
| 16 | +# construction — a changed file matching no `area_paths` pattern in |
| 17 | +# .themegrill-qa/suite.json falls back to the full tier, so an unmapped change |
| 18 | +# costs runner time, never coverage. |
| 19 | +# |
| 20 | +# Worth knowing, since nothing else runs the suite now: a spec whose area is |
| 21 | +# never touched by any PR will not execute. Set `scope: full` below if you would |
| 22 | +# rather every PR run the whole @fresh tier. |
| 23 | + |
| 24 | +name: QA suite |
| 25 | + |
| 26 | +on: |
| 27 | + pull_request: |
| 28 | + types: [opened, synchronize, reopened, ready_for_review] |
| 29 | + workflow_dispatch: |
| 30 | + |
| 31 | +jobs: |
| 32 | + # The only check. Scoped, fast, runs on every PR including drafts. |
| 33 | + pr: |
| 34 | + uses: ThemeGrill/claudegrill/.github/workflows/suite.yml@main |
| 35 | + with: |
| 36 | + product_slug: user-registration |
| 37 | + product_type: plugin |
| 38 | + scope: changed |
| 39 | + # The shared default is 45s, and it is too tight for THIS product. |
| 40 | + # |
| 41 | + # Nearly every spec here is a whole user journey — provision a form, |
| 42 | + # publish a page, register an account on the front end, log in as that |
| 43 | + # account, then delete it — which is a dozen page loads against |
| 44 | + # Playground's WASM PHP. Measured on a reset Playground locally the |
| 45 | + # slowest is ~25s, and the GitHub runner is comfortably slower than a |
| 46 | + # developer's machine: at 45s the three login specs passed only on retry |
| 47 | + # and the ajax spec timed out outright, all of them for want of headroom |
| 48 | + # rather than because anything was wrong. |
| 49 | + # |
| 50 | + # 90s is roughly 3x the measured worst case, so a genuinely hung spec is |
| 51 | + # still capped. It stays well inside the ceilings above it, which the |
| 52 | + # reusable workflow asks for: max_failures (3) x 90s is 4.5 minutes |
| 53 | + # against a 30-minute timeout_ms and a 40-minute job limit. |
| 54 | + test_timeout_ms: 90000 |
| 55 | + |
0 commit comments