Skip to content

Commit 3deb6fa

Browse files
DavertMikclaude
andcommitted
ci(acceptance): add hang-proof Playwright smoke gate
Re-establishes acceptance-level CI signal for 4.x, which currently runs only unit/rest/runner suites while the disabled acceptance workflow still targets 3.x + docker WebDriverIO. - test/acceptance/codecept.Playwright.smoke.js: an explicit allowlist (els/session/within) of acceptance tests that pass reliably on the 4.x promise core. 52 passed / 2 skipped / 0 failed across three consecutive local runs. - .github/workflows/acceptance-smoke.yml: runs the smoke suite on every PR with both timeout-minutes: 20 and an outer `timeout 600` (exit 124 = hang = release blocker), installs Chromium, boots the PHP test app, and uploads test/acceptance/output/ on failure. The allowlist only grows: when a promise-core fix makes an excluded file pass, move it into the glob in the same PR. Long-term goal is to gate on the full codecept.Playwright.js and delete this config. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent a70c814 commit 3deb6fa

2 files changed

Lines changed: 63 additions & 0 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Acceptance smoke
2+
3+
on:
4+
push:
5+
branches:
6+
- 4.x
7+
pull_request:
8+
branches:
9+
- '**'
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
13+
cancel-in-progress: true
14+
15+
jobs:
16+
acceptance-smoke:
17+
name: Acceptance smoke (Playwright)
18+
runs-on: ubuntu-22.04
19+
timeout-minutes: 20
20+
21+
strategy:
22+
matrix:
23+
node-version: [20.x]
24+
25+
steps:
26+
- uses: actions/checkout@v6
27+
- name: Use Node.js ${{ matrix.node-version }}
28+
uses: actions/setup-node@v6
29+
with:
30+
node-version: ${{ matrix.node-version }}
31+
- run: npm i
32+
env:
33+
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true
34+
- name: Install Chromium
35+
run: npx playwright install --with-deps chromium
36+
- name: Start test app server
37+
run: nohup npm run test-app:start &
38+
- name: Wait for test app server
39+
run: |
40+
for i in {1..20}; do
41+
curl -sf http://127.0.0.1:8000/ && break
42+
sleep 1
43+
done
44+
- name: Run acceptance smoke suite (hang-proof)
45+
run: timeout 600 ./bin/codecept.js run --config test/acceptance/codecept.Playwright.smoke.js
46+
- name: Upload acceptance output on failure
47+
if: failure()
48+
uses: actions/upload-artifact@v4
49+
with:
50+
name: acceptance-smoke-output
51+
path: test/acceptance/output/
52+
if-no-files-found: ignore
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { config as base } from './codecept.Playwright.js'
2+
3+
// Allowlist of acceptance tests known to pass reliably on the 4.x promise core.
4+
// As promise-core fixes land and a file in plans/002-failing-acceptance.md
5+
// starts passing, move it into this glob. The long-term goal is to delete this
6+
// config and gate on the full codecept.Playwright.js.
7+
export const config = {
8+
...base,
9+
tests: './{els,session,within}_test.js',
10+
name: 'acceptance-smoke',
11+
}

0 commit comments

Comments
 (0)