---
type: Task
status: AI Gen TODO
category: QA
isAgentGenerated: "true"
---

# Test: Network Resilience and WASM Loading

## Description

Verify the Blazor WASM app handles network failures gracefully — showing loading states, error boundaries, and retry behavior when `dotnet.js`, `.wasm` files, or `.dll` resources fail to load.

## Rationale

The app is a Blazor WASM single-page application that downloads the .NET runtime (`dotnet.js`, `dotnet.wasm`) and assemblies on first load. If any of these requests fail (server down, CDN outage, flaky connection), the entire app breaks. No existing test covers this failure mode; they all assume the dev or production server is reachable.

## Playwright Feature

This test uses **`page.route()`** (route interception) to selectively block or delay specific resource types:

| Test Case | Interception |
|---|---|
| `dotnet.js` fails to load | `page.route('**/dotnet.js', route => route.abort())` |
| `.dll` assembly fails | `page.route('**_framework_**', route => route.abort())` |
| Slow network | `page.route('**', route => route.continue({ delay: 5000 }))` |
| Timeout during WASM init | Combine slow network with reduced navigation timeout |

### What to Assert

- An error boundary element (`.blazor-error-boundary`, `#blazor-error-ui`) becomes visible.
- A user-facing message like "An unhandled error has occurred" or "Retry" appears.
- The `window.dotnet` global is undefined (runtime never loaded).
- The page body is **not** a blank white screen (user sees a styled error, not a crash).
- Clicking a "Retry" button triggers a page reload.

### Variations

- Block only `dotnet.wasm` but allow `dotnet.js` (tests partial-load scenario).
- Block `.pdb` symbol files (tests debug vs. release build quality).
- Simulate offline mode with `context.setOffline(true)` for full app navigation testing.
