Playwright start
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user