Hot Reload Test Gauntlet
- Dominant language
- C#
- Stars
- 23.3k
- Forks
- 2k
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 290
Description
## Summary
A comprehensive test matrix for Hot Reload scenarios across all tooling surfaces. Every scenario should do something reasonable and present status/errors clearly to the user — both in the tool/IDE **and** in the app.
## Context
Part of the Hot Reload DX epic: https://github.com/dotnet/maui/issues/35229
## Scenarios
| # | Scenario | Description |
|---|----------|-------------|
| 1 | **MUH is called at all** | Confirm a valid edit invokes registered `MetadataUpdateHandler.UpdateApplication` |
| 2 | **MUH is called repeatedly** | Confirm multiple sequential valid edits invoke MUH each time |
| 3 | **Label text literal change** | Change `` and verify live update on the current page |
| 4 | **CollectionView DataTemplate text change** | Update text inside a `DataTemplate` and verify visible items update |
| 5 | **CollectionView DataTemplate structure change** | Add/remove a template child element and verify UI updates correctly |
| 6 | **ResourceDictionary value change** | Update a `StaticResource` (for example color/font size) and verify live update |
| 7 | **Style setter change** | Change implicit/explicit style setter and verify existing controls update |
| 8 | **No navigation required** | Verify changes are visible without navigating away and back |
| 9 | **C# syntax error** | Introduce a compile error in C# code during a hot reload session |
| 10 | **XAML syntax error** | Introduce malformed XAML during a hot reload session |
| 11 | **Rude edit (unsupported change)** | Make a change that [EnC does not support](https://learn.microsoft.com/en-us/visualstudio/debugger/supported-code-changes-csharp?view=visualstudio) (for example, change method signature, add/remove base class) |
| 12 | **MetadataUpdateHandler throws unhandled exception** | A registered `MetadataUpdateHandler` throws during `UpdateApplication` |
| 13 | **Connection to tool/IDE lost** | Ctrl+C `dotnet watch`, or close IDE while app is running |
| 14 | **Device disconnected / emulator closed** | Physical device unplugged or emulator process killed mid-session |
## Tooling Matrix
Each scenario above should be tested in:
| Tool | Error/status in tool/IDE | Error/status in app |
|------|--------------------------|---------------------|
| **Visual Studio** | ☐ | ☐ |
| **Visual Studio Code** | ☐ | ☐ |
| **`dotnet watch`** | ☐ | ☐ |
## Full Matrix
| Scenario | VS — Tool | VS — App | VS Code — Tool | VS Code — App | dotnet watch — CLI | dotnet watch — App |
|----------|-----------|----------|----------------|---------------|--------------------|--------------------|
| 1. MUH is called at all | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 2. MUH is called repeatedly | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 3. Label text literal change | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 4. CollectionView DataTemplate text change | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 5. CollectionView DataTemplate structure change | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 6. ResourceDictionary value change | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 7. Style setter change | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 8. No navigation required | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 9. C# syntax error | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 10. XAML syntax error | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 11. Rude edit | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 12. Handler throws exception | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 13. Connection lost | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
| 14. Device disconnected | ☐ | ☐ | ☐ | ☐ | ☐ | ☐ |
## Expectations
For every cell in the matrix:
- The result should be **surfaced clearly** to the user (not silently swallowed)
- The tool/IDE should show diagnostics or status (error list, terminal output, notification)
- The app should show a visible indicator (for example, hot reload status badge or error overlay)
- The app should **remain stable** — no crash, no hang
- Recovery should be possible (fix the error and reload again, or restart)
Contributor guide
Research direction
Start by reading the linked Hot Reload DX epic and use the 14 listed scenarios as the test plan. Exercise each scenario across Visual Studio, Visual Studio Code, and dotnet watch, recording tool and app status. Done means every matrix cell has a clear result, visible diagnostics or status, app stability, and a documented recovery path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, vscode
- Domain
- developer-experience, testing, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100