E2E tests: 54 WASM shell timeouts with native 15MB build #106

Open
opened 2026-03-31 19:53:34 +00:00 by mik-tf · 0 comments
Owner

Problem

With the native Dioxus build (web-native feature, 15MB WASM), 54 out of 167 Playwright E2E tests fail with 5-minute timeouts. All failures are tests that require full WASM shell navigation (login → store → open island). Tests that use direct HTTP/API calls pass fine.

Root cause

The 15MB native WASM bundle takes 60-120s to load in headless Chromium. When Playwright runs multiple browser contexts in parallel, they compete for CPU/memory, pushing load times beyond the 5-minute timeout.

In session 6, the same tests passed (40/41) because fewer tests ran or had less resource contention.

Test results (session 7)

Layer Result
Smoke 122/124 (2 skipped)
Integration 18/19 (1 fail — Redis API change, unrelated)
Playwright E2E 111/167 (54 timeouts, 1 real fail, 1 edge case)

Non-timeout failures

  • Compute CP6: RPC discover — instant fail (12ms), likely API change from development merge
  • Conversation persistence — 1.3m, WASM load edge case timeout

Options to fix

  1. Increase timeout to 600s (10 min) — simplest, doubles test runtime
  2. Limit Playwright workers to 1 (workers: 1 in config) — serializes tests, each gets dedicated resources
  3. Split test suites — run API-only tests separately from shell-navigation tests
  4. Combination — workers=1 for shell tests, parallel for API tests
  • Part of #104 (Dioxus SPA migration)
  • Iframe build (9.5MB WASM) does not have this problem
## Problem With the native Dioxus build (`web-native` feature, 15MB WASM), 54 out of 167 Playwright E2E tests fail with 5-minute timeouts. All failures are tests that require full WASM shell navigation (login → store → open island). Tests that use direct HTTP/API calls pass fine. ## Root cause The 15MB native WASM bundle takes 60-120s to load in headless Chromium. When Playwright runs multiple browser contexts in parallel, they compete for CPU/memory, pushing load times beyond the 5-minute timeout. In session 6, the same tests passed (40/41) because fewer tests ran or had less resource contention. ## Test results (session 7) | Layer | Result | |-------|--------| | Smoke | 122/124 (2 skipped) | | Integration | 18/19 (1 fail — Redis API change, unrelated) | | Playwright E2E | 111/167 (54 timeouts, 1 real fail, 1 edge case) | ## Non-timeout failures - **Compute CP6: RPC discover** — instant fail (12ms), likely API change from development merge - **Conversation persistence** — 1.3m, WASM load edge case timeout ## Options to fix 1. **Increase timeout to 600s** (10 min) — simplest, doubles test runtime 2. **Limit Playwright workers to 1** (`workers: 1` in config) — serializes tests, each gets dedicated resources 3. **Split test suites** — run API-only tests separately from shell-navigation tests 4. **Combination** — workers=1 for shell tests, parallel for API tests ## Related - Part of https://forge.ourworld.tf/lhumina_code/home/issues/104 (Dioxus SPA migration) - Iframe build (9.5MB WASM) does not have this problem
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/home#106
No description provided.