Skip to content

Bump react and @types/react #533

Bump react and @types/react

Bump react and @types/react #533

Triggered via pull request September 22, 2026 06:13
Status Failure
Total duration 1h 41m 31s
Artifacts 2

e2e-pr.yml

on: pull_request
Matrix: e2e-pr-chromium
Fit to window
Zoom out
Zoom in

Annotations

20 errors and 4 notices
[chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical: tests/e2e/helpers.ts#L110
2) [chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.waitForFunction: Test timeout of 120000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:71:12) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/app-shell.spec.ts:44:3
[chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical: tests/e2e/app-shell.spec.ts#L0
2) [chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded.
[chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical: tests/e2e/helpers.ts#L110
2) [chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical TimeoutError: page.waitForFunction: Timeout 60000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:71:12) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/app-shell.spec.ts:44:3
[chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical: tests/e2e/app-shell.spec.ts#L0
2) [chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical Test timeout of 120000ms exceeded.
[chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser: tests/e2e/helpers.ts#L110
1) [chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: page.waitForFunction: Timeout 60000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:71:12) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/alt-drag-duplicate.spec.ts:11:3
[chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser: tests/e2e/alt-drag-duplicate.spec.ts#L10
1) [chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded while running "beforeEach" hook. 8 | } from './helpers'; 9 | > 10 | test.beforeEach(async ({ page }) => { | ^ 11 | await seedSampleScene(page); 12 | await dismissViewHint(page); 13 | }); at /__w/phaserforge/phaserforge/tests/e2e/alt-drag-duplicate.spec.ts:10:6
[chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser: tests/e2e/helpers.ts#L110
1) [chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.waitForFunction: Test timeout of 120000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:64:16) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/alt-drag-duplicate.spec.ts:11:3
[chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser: tests/e2e/alt-drag-duplicate.spec.ts#L10
1) [chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded while running "beforeEach" hook. 8 | } from './helpers'; 9 | > 10 | test.beforeEach(async ({ page }) => { | ^ 11 | await seedSampleScene(page); 12 | await dismissViewHint(page); 13 | }); at /__w/phaserforge/phaserforge/tests/e2e/alt-drag-duplicate.spec.ts:10:6
[chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser: tests/e2e/helpers.ts#L110
1) [chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser Error: page.waitForFunction: Test timeout of 120000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:71:12) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/alt-drag-duplicate.spec.ts:11:3
[chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser: tests/e2e/alt-drag-duplicate.spec.ts#L10
1) [chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser Test timeout of 120000ms exceeded while running "beforeEach" hook. 8 | } from './helpers'; 9 | > 10 | test.beforeEach(async ({ page }) => { | ^ 11 | await seedSampleScene(page); 12 | await dismissViewHint(page); 13 | }); at /__w/phaserforge/phaserforge/tests/e2e/alt-drag-duplicate.spec.ts:10:6
[chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical: tests/e2e/helpers.ts#L110
2) [chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.waitForFunction: Test timeout of 120000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:64:16) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:23:3
[chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical: tests/e2e/inspector.spec.ts#L22
2) [chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded while running "beforeEach" hook. 20 | test.setTimeout(120000); 21 | > 22 | test.beforeEach(async ({ page }) => { | ^ 23 | await seedSampleScene(page); 24 | await dismissViewHint(page); 25 | }); at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:22:6
[chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical: tests/e2e/helpers.ts#L110
2) [chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical TimeoutError: page.waitForFunction: Timeout 60000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:71:12) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:23:3
[chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical: tests/e2e/inspector.spec.ts#L22
2) [chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical Test timeout of 120000ms exceeded while running "beforeEach" hook. 20 | test.setTimeout(120000); 21 | > 22 | test.beforeEach(async ({ page }) => { | ^ 23 | await seedSampleScene(page); 24 | await dismissViewHint(page); 25 | }); at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:22:6
[chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical: tests/e2e/helpers.ts#L110
1) [chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: page.waitForFunction: Test timeout of 120000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:64:16) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:23:3
[chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical: tests/e2e/inspector.spec.ts#L22
1) [chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded while running "beforeEach" hook. 20 | test.setTimeout(120000); 21 | > 22 | test.beforeEach(async ({ page }) => { | ^ 23 | await seedSampleScene(page); 24 | await dismissViewHint(page); 25 | }); at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:22:6
[chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical: tests/e2e/helpers.ts#L110
1) [chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: page.waitForFunction: Timeout 60000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:71:12) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:23:3
[chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical: tests/e2e/inspector.spec.ts#L22
1) [chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Test timeout of 120000ms exceeded while running "beforeEach" hook. 20 | test.setTimeout(120000); 21 | > 22 | test.beforeEach(async ({ page }) => { | ^ 23 | await seedSampleScene(page); 24 | await dismissViewHint(page); 25 | }); at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:22:6
[chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical: tests/e2e/helpers.ts#L110
1) [chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical Error: page.waitForFunction: Test timeout of 120000ms exceeded. at helpers.ts:110 108 | // Explicit timeouts make failures deterministic (instead of hanging until the overall test timeout). 109 | await page.goto('./', { waitUntil: 'domcontentloaded', timeout: NAVIGATE_TIMEOUT_MS }); > 110 | await page.waitForFunction(() => Boolean(window.__PHASER_FORGE_TEST__?.isEnabled), { timeout: APP_BOOT_TIMEOUT_MS }); | ^ 111 | await expect(page.getByTestId('app-root')).toBeVisible({ timeout: APP_BOOT_TIMEOUT_MS }); 112 | }; 113 | at bootOnce (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:110:16) at withBootMutex (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:64:16) at gotoStudio (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:122:7) at seedSampleScene (/__w/phaserforge/phaserforge/tests/e2e/helpers.ts:150:3) at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:23:3
[chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical: tests/e2e/inspector.spec.ts#L22
1) [chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical Test timeout of 120000ms exceeded while running "beforeEach" hook. 20 | test.setTimeout(120000); 21 | > 22 | test.beforeEach(async ({ page }) => { | ^ 23 | await seedSampleScene(page); 24 | await dismissViewHint(page); 25 | }); at /__w/phaserforge/phaserforge/tests/e2e/inspector.spec.ts:22:6
🎭 Playwright Run Summary
46 failed [chromium] › tests/e2e/alt-drag-duplicate.spec.ts:15:5 › alt-drag duplicates a selected sprite @critical @browser [chromium] › tests/e2e/app-shell.spec.ts:20:5 › boots empty by default and loads scenes @smoke ─ [chromium] › tests/e2e/app-shell.spec.ts:43:5 › persists the last active project across reloads without a startup mode control @critical [chromium] › tests/e2e/app-shell.spec.ts:140:5 › imports embedded sprites into the scene @critical [chromium] › tests/e2e/app-shell.spec.ts:167:5 › removes an imported sprite from the scene graph @critical [chromium] › tests/e2e/app-shell.spec.ts:189:5 › toggles theme modes and persists preference @critical [chromium] › tests/e2e/app-shell.spec.ts:203:5 › side panes avoid horizontal overflow @critical [chromium] › tests/e2e/assets-dock.spec.ts:21:7 › Assets dock › imports an image and drags to canvas to create an entity with asset ref @critical @browser [chromium] › tests/e2e/assets-dock.spec.ts:67:7 › Assets dock › dragging an image asset onto the canvas preserves the current viewport @critical @browser [chromium] › tests/e2e/assets-dock.spec.ts:121:7 › Assets dock › dragging an image asset onto an existing sprite replaces its asset @critical @browser [chromium] › tests/e2e/assets-dock.spec.ts:262:7 › Assets dock › imports audio by path and assigns it to scene music via drop @critical @browser [chromium] › tests/e2e/bounce-bounds-layout.spec.ts:5:5 › Bounce: Bounds is a sibling panel (not nested) @critical [chromium] › tests/e2e/bounds-helper.spec.ts:9:5 › Bounds editor updates BoundsHit bounds @critical [chromium] › tests/e2e/browser-reload-preserves-view.spec.ts:19:5 › browser reload preserves editor camera view @smoke @regression [chromium] › tests/e2e/canvas-context-menu.spec.ts:32:5 › top-right selection actions are not shown (selection actions are near-cursor only) @critical [chromium] › tests/e2e/canvas-undo-redo.spec.ts:4:5 › drags an entity on the canvas and supports keyboard undo/redo @critical @browser [chromium] › tests/e2e/canvas.spec.ts:31:5 › selects an entity by clicking it on the canvas @critical @browser [chromium] › tests/e2e/canvas.spec.ts:38:5 › clicking empty canvas clears selection @critical ── [chromium] › tests/e2e/canvas.spec.ts:49:5 › marquee selects multiple entities by click-dragging empty canvas @critical @browser [chromium] › tests/e2e/canvas.spec.ts:64:5 › shift-click additively selects entities on the canvas @critical @browser [chromium] › tests/e2e/canvas.spec.ts:80:5 › supports undo/redo via viewbar buttons @critical ── [chromium] › tests/e2e/canvas.spec.ts:100:5 › resizes bounds and supports undo/redo @critical @browser [chromium] › tests/e2e/canvas.spec.ts:127:5 › drags a formation on the canvas and restores layout metadata on undo @critical @browser [chromium] › tests/e2e/canvas.spec.ts:142:5 › resizes editable bounds from the canvas handle @critical @browser [chromium] › tests/e2e/canvas.spec.ts:162:5 › supports zooming and panning once the camera can scroll @critical @browser [chromium] › tests/e2e/cloud-workspace-conflict.spec.ts:7:5 › Signed-in linked online projects stay local at startup and autosave to cloud without a conflict modal @smoke [chromium] › tests/e2e/formation-create.spec.ts:5:5 › creates a formation via the new draft workflow from Formations + Add @critical [chromium] › tests/e2e/formation-create.spec.ts:53:5 › assets menu entrypoint opens a formation draft seeded with that asset @critical [chromium] › tests/e2e/formation-member-alignment.spec.ts:4:5 › Formation members align with formation label @critical [chromium] › tests/e2e/grid-snapping.spec.ts:4:5 › grid snapping toggles and snaps small drags @critical [chromium] › tests/e2e/grouping-pingpong.spec.ts:4:5 › Ungroup / Group ping-pongs between formation and member multi
E2E PR Chromium (shard 1/2)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
🎭 Playwright Run Summary
46 failed [chromium] › tests/e2e/inspector.spec.ts:241:5 › bounds hit checkbox toggles BoundsHit condition @critical [chromium] › tests/e2e/inspector.spec.ts:257:5 › creates a formation from imported sprites and arranges it into a grid @critical [chromium] › tests/e2e/inspector.spec.ts:306:5 › assigns a MoveUntil action to an imported sprite @critical [chromium] › tests/e2e/inspector.spec.ts:337:5 › reassigns a sprite asset from another sprite via the inspector @critical [chromium] › tests/e2e/inspector.spec.ts:381:5 › assigns a group MoveUntil action to imported sprites and runs it in play mode @critical [chromium] › tests/e2e/inspector.spec.ts:431:5 › preview uses edited move velocity and bounce behavior @critical [chromium] › tests/e2e/inspector.spec.ts:474:5 › preview bounce reaches configured bounds edge before reversing @critical [chromium] › tests/e2e/inspector.spec.ts:538:5 › preview applies wrap behavior for an imported sprite move action @critical [chromium] › tests/e2e/layout-popover.spec.ts:11:5 › Layout popover applies fixed spacing by centers @critical [chromium] › tests/e2e/layout-popover.spec.ts:35:5 › Layout popover distributes selected item centers between endpoints @critical [chromium] › tests/e2e/loop-templates.spec.ts:11:5 › Loops category expands templates into repeat scaffolds @critical [chromium] › tests/e2e/loop-templates.spec.ts:41:5 › Loop templates work for legacy OnSceneStart (no __legacy__ eventId) @critical [chromium] › tests/e2e/mode-toggle-stability.spec.ts:4:5 › Preview → Edit → Preview keeps rendering (no blank canvas) @smoke @browser [chromium] › tests/e2e/playmode-escape.spec.ts:4:5 › Escape exits play mode back to edit mode @critical [chromium] › tests/e2e/project-picker.spec.ts:6:7 › Project picker › opens the picker from the project tree and preserves the sync toggle @smoke [chromium] › tests/e2e/project-picker.spec.ts:30:7 › Project picker › creates a new local project from the project tree manage menu @smoke [chromium] › tests/e2e/project-pixel-scale.spec.ts:5:7 › Project pixel scale › project settings rescale baseline asset-backed sprites on the canvas immediately @smoke [chromium] › tests/e2e/project-render-mode.spec.ts:6:7 › Project render mode › project settings save smooth-2d render mode through the manage dialog @smoke [chromium] › tests/e2e/project-tree-history.spec.ts:12:7 › Project tree + history › supports manage actions, restore, and copy flows @smoke [chromium] › tests/e2e/project-tree-history.spec.ts:74:7 › Project tree + history › expands multi-item revisions and skips disclosure UI for single-item rows @smoke [chromium] › tests/e2e/project-tree-history.spec.ts:150:7 › Project tree + history › groups repetitive adjacent history rows and expands to named details @smoke [chromium] › tests/e2e/project-tree-history.spec.ts:268:7 › Project tree + history › archives multiple revisions from the main history pane and exposes delete only in archived history @smoke [chromium] › tests/e2e/reload-recovers-latest-active-snapshot.spec.ts:24:5 › refresh during the async persistence window restores the latest head from IndexedDB alone @smoke [chromium] › tests/e2e/scene-background-tint-rendering.spec.ts:100:5 › scene background and entity tint match in edit and play without selection tint drift @critical [chromium] › tests/e2e/scene-background-tint-rendering.spec.ts:144:5 › black authored scene background survives browser reload @critical [chromium] › tests/e2e/scene-background-tint-rendering.spec.ts:168:5 › active scene background wins over base scene background in edit and play @critical [chromium] › tests/e2e/scene-goto-inspector.spec.ts:4:5 › Inspector: Call Id = scene.goto shows structured fields and defaults @critical [chromium] › tests/e2e/scene-graph-dragdrop.spec.ts:10:5 › Scene Graph: multi-select sprite
E2E PR Chromium (shard 2/2)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"

Artifacts

Produced during runtime
Name Size Digest
playwright-pr-chromium-1-of-2
62.7 MB
sha256:ccaad81445f22adf1b29e37cb78ed3ea9c87fd295785d7c695780c4c308c109a
playwright-pr-chromium-2-of-2
64.3 MB
sha256:0038ee09314d779cccf138d9971482f3370e0bd483381abda2648a63fe85e284