Skip to content

Commit cd4da76

Browse files
DennisSmolekclaude
andcommitted
ci: budget for SwiftShader's ~1fps on heavy examples
First real CI run: Xvfb+SwiftShader WebGPU path WORKS (3/4 passed on a free runner, incl. MRT bloom). skinning-instancing timed out on readiness — 30 settle frames at software-raster framerates exceeds 60s. Settle frames 30→12, readiness timeout 180s in CI, test timeout 300s in CI. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent b7c356e commit cd4da76

3 files changed

Lines changed: 9 additions & 5 deletions

File tree

playwright.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const WEBGPU_ARGS = [
2121

2222
export default defineConfig({
2323
testDir: 'tests',
24-
timeout: 90_000,
24+
timeout: process.env.CI ? 300_000 : 90_000,
2525
retries: process.env.CI ? 1 : 0,
2626
reporter: process.env.CI ? [['github'], ['list']] : 'list',
2727
use: {

src/utils/ReadinessSignal.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ declare global {
1717
}
1818
}
1919

20-
const SETTLE_FRAMES = 30
20+
// Kept low: on CI's SwiftShader (software raster) heavy examples run at ~1 fps,
21+
// so every settle frame costs real wall-clock against the smoke timeout.
22+
const SETTLE_FRAMES = 12
2123

2224
export function ReadinessSignal() {
2325
const settled = useRef(0)

tests/smoke.spec.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ for (const { slug } of examples) {
2424

2525
await page.goto(`/examples/${slug}`)
2626

27-
// Readiness = loaders settled + 30 clean frames (window.__exampleReady, set by
28-
// <ReadinessSignal> inside DemoHelpers). Poll instead of sleeping.
27+
// Readiness = loaders settled + clean frames (window.__exampleReady, set by
28+
// <ReadinessSignal> inside DemoHelpers). Poll instead of sleeping. CI gets a
29+
// bigger budget: SwiftShader renders heavy examples at ~1 fps, so settle frames
30+
// cost real wall-clock there (verified: 30 instances + blur blew 60s twice).
2931
await page.waitForFunction(() => window.__exampleReady === true, undefined, {
30-
timeout: 60_000,
32+
timeout: process.env.CI ? 180_000 : 60_000,
3133
})
3234

3335
// Real webgpu context, not a WebGL2 fallback: getContext returns the existing

0 commit comments

Comments
 (0)