You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After PR #114 fixed the Playwright infrastructure (vite optimizeDeps scoping + port alignment + testDir + DCO + symmetric path filters), the workflow finally runs end-to-end on all three browser matrices. Tests execute, but 17 of 19 fail with the same root cause:
#pixi-containerexists in the served index.html (verified via the SPA shell), but no <canvas> element is ever attached inside it. PixiJS bootstrap is silently failing or not running in the CI environment.
One test passes ("[browser] › tests/performance.spec.js" line not shown — likely the simplest non-canvas-dependent assertion)
All canvas-dependent tests fail identically across chromium / firefox / webkit
Including tests/game-loads.spec.js:47:3 › Game loading › page loads without JavaScript errors — so there ARE JS errors during boot
Likely root causes (in order of probability)
PixiJS init throws in headless / WebGL environment — but webkit failing too is unusual; WebGL2 / WebGL fallback may be broken
Asset path mismatch in dev mode — wasm modules, sprite manifests, or audio files served with wrong content-type in vite dev (vs production build)
AffineScript-TEA bootstrap — vite.config.js has 'affinescript': '/src/app/tea' alias + optimizeDeps.entries: ['index.html']. If the SPA mount depends on TEA, the AOT compilation gap (per affinescript#57 status) may break dev-time boot
deno task res:build in workflow does compile-only — the workflow uses dev:vite (which compiles ReScript on-demand) instead of deno task build (full production build). If the asset pipeline (AssetPack) hasn't run, sprite manifests are missing
AFFINE_TEA_MIGRATION: true / USE_WASM_ROUTER: true flags in vite.config.js — if the wasm router fails to fetch its .wasm file (router.wasm), the boot pipeline aborts
Investigation recipe
Download a failed run's trace.zip artifact and inspect npx playwright show-trace
Check the browser console screenshot in test-results/*/test-failed-1.png
Run deno task dev:vite locally, point a browser at http://localhost:1984, observe DevTools console
If canvas works locally but not in CI: bisect by enabling/disabling AFFINE_TEA_MIGRATION flag
affinescript#57 — Phase 3 migration assistant (relevant to root cause Quickdraw test #3 above)
Severity
P2 — Playwright never gave a useful signal anyway (it's been red since 2026-05-02), so this isn't a regression. But it's worth resolving so the workflow becomes the load-bearing E2E gate it was meant to be.
Surface
After PR #114 fixed the Playwright infrastructure (vite optimizeDeps scoping + port alignment + testDir + DCO + symmetric path filters), the workflow finally runs end-to-end on all three browser matrices. Tests execute, but 17 of 19 fail with the same root cause:
#pixi-containerexists in the servedindex.html(verified via the SPA shell), but no<canvas>element is ever attached inside it. PixiJS bootstrap is silently failing or not running in the CI environment.What we know
http://localhost:1984and serves the page (port aligned in fix(e2e): Playwright fundamental — vite alias + ums sub-build (closes #113) #114)#pixi-containerdiv renders (DOM-loaded)tests/game-loads.spec.js:47:3 › Game loading › page loads without JavaScript errors— so there ARE JS errors during bootLikely root causes (in order of probability)
vite.config.jshas'affinescript': '/src/app/tea'alias +optimizeDeps.entries: ['index.html']. If the SPA mount depends on TEA, the AOT compilation gap (per affinescript#57 status) may break dev-time bootdeno task res:buildin workflow does compile-only — the workflow uses dev:vite (which compiles ReScript on-demand) instead ofdeno task build(full production build). If the asset pipeline (AssetPack) hasn't run, sprite manifests are missingAFFINE_TEA_MIGRATION: true/USE_WASM_ROUTER: trueflags in vite.config.js — if the wasm router fails to fetch its.wasmfile (router.wasm), the boot pipeline abortsInvestigation recipe
npx playwright show-tracetest-results/*/test-failed-1.pngdeno task dev:vitelocally, point a browser athttp://localhost:1984, observe DevTools consoleAFFINE_TEA_MIGRATIONflagCross-references
gh api repos/hyperpolymath/idaptik/branches/main/protection), so its red doesn't actually block mergesSeverity
P2 — Playwright never gave a useful signal anyway (it's been red since 2026-05-02), so this isn't a regression. But it's worth resolving so the workflow becomes the load-bearing E2E gate it was meant to be.