From e79671b51f00dbffc7c7d6f13bbe6c4dad58073b Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Fri, 16 Oct 2026 04:59:39 -0700 Subject: [PATCH] test(e2e): skip the WebGL replay-presentation case where WebGL is unavailable (#29649) Headless Linux CI (xvfb, no GPU) falls back to the DOM renderer, so the WebGL scenario added in #29331 waited for a canvas that never attaches. Other WebGL specs already skip the same way. --- tests/e2e/terminal-replay-presentation.spec.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/e2e/terminal-replay-presentation.spec.ts b/tests/e2e/terminal-replay-presentation.spec.ts index 37542ab95da..18557cd22c3 100644 --- a/tests/e2e/terminal-replay-presentation.spec.ts +++ b/tests/e2e/terminal-replay-presentation.spec.ts @@ -57,9 +57,18 @@ for (const scenario of [ ) const screen = orcaPage.locator('[data-replay-paint-probe="true"]') const input = screen.locator('.xterm-helper-textarea') - await (scenario.gpu === 'on' - ? expect.poll(() => screen.locator('canvas').count()).toBeGreaterThan(0) - : expect(screen.locator('.xterm-rows')).toBeVisible()) + if (scenario.gpu === 'on') { + const webglAttached = await screen + .locator('canvas') + .first() + .waitFor({ state: 'attached', timeout: 10_000 }) + .then(() => true) + .catch(() => false) + // Why: headless Linux CI (xvfb, no GPU) falls back to the DOM renderer. + test.skip(!webglAttached, 'WebGL renderer is unavailable in this environment') + } else { + await expect(screen.locator('.xterm-rows')).toBeVisible() + } await expect(input).toBeFocused() // Why: feature-tip tooltips can overlap the screen clip and change between captures. await orcaPage.addStyleTag({