.agents/skills/release-testing/references/monitoring.md
Proactive diagnostics and user feedback during test execution.
Users should never wait more than 30 seconds without knowing what's happening.
Update the TODO checklist at each phase. When using read_bash during long operations, acknowledge progress even if there's no new output.
| Action | When |
|---|---|
| Update TODO checklist | At each phase transition |
| Acknowledge progress | Every 30s during silent periods |
| Check device/build status | If no output for 60+ seconds |
| Phase | Duration | Output Indicator |
|---|---|---|
| Build test project | 5-10s | "Determining projects to restore..." |
| Run tests | 10-60s | "Starting test execution, please wait..." |
| Complete | - | "Passed! - Failed: 0, Passed: N" |
Feedback: These are fast enough that a single TODO update per test is sufficient.
| Phase | Duration | Output Indicator |
|---|---|---|
| Build test project | 5-10s | "Determining projects to restore..." |
| Docker image build | 30-90s | "Building Docker image..." |
| Run in container | 5-10s | "Running in Docker container..." |
| Complete | - | "Passed! - Failed: 0, Passed: 2" |
First run is slower (~90s) due to Docker image layer caching. Subsequent runs use cached layers (~10s).
Docker tests require SkiaSharp.NativeAssets.Linux.NoDependencies which bundles all native deps statically.
| Phase | Duration | Output Indicator |
|---|---|---|
| Build test project | 5-10s | "Determining projects to restore..." |
| Test start | - | "Starting test execution, please wait..." |
| Create temp project | 3-5s | "The template "..." was created successfully" |
| Add NuGet packages | 2-5s | "PackageReference for package 'SkiaSharp..." |
| Build MAUI app | 30-120s | Silence (this is the long part!) |
| Appium connect | 5s | "Connecting to Appium at port 4723..." |
| Driver session | 5-10s | "Driver connected, waiting for app..." |
| App deploy | 10-30s | Device/emulator shows app launching |
| Capture screenshot | 5s | "Full screenshot saved" |
| Verify | 1s | "✅ MAUI {Platform} passed" |
| Complete | - | "Passed! - Failed: 0, Passed: 2" |
The Build MAUI app phase is the longest and provides no output. This is normal:
| Platform | Build Time |
|---|---|
| iOS | 60-90 seconds |
| Android | 90-120 seconds |
| MacCatalyst | 45-60 seconds |
This silence is expected. The user needs to know this.
ps aux | grep -E "dotnet.*build" | grep -v grep
If you see a dotnet build process, the test is progressing normally.
Use a detailed checklist showing sub-steps for MAUI tests:
- [ ] MauiiOSTests (iOS 16.2 - oldest)
- [x] Test project compiled
- [x] Created temp MAUI project
- [ ] Building iOS app (~60-90s)...
- [ ] Deploying to simulator
- [ ] Running test
When using read_bash to wait for a long operation:
| Phase | What to Say |
|---|---|
| Build test project | "Building test project..." |
| Create temp project | "Creating MAUI app from template..." |
| Build MAUI app | "Building for {platform} (~60-90s)..." |
| Still building (30s check) | "⏳ Still building (~30s elapsed)" |
| Still building (60s check) | "⏳ Still building (~60s elapsed)" |
| Build complete | "✅ Build complete" |
| Deploy | "Deploying app to {device}..." |
| Run test | "Running Appium test..." |
| Verify | "Verifying screenshot..." |
| Done | "✅ Passed" |
🔄 Running MauiiOSTests (iOS 16.2)
✅ Test project compiled
✅ Created MauiiOSSKCanvasView project
⏳ Building iOS app (~60-90s expected)...
⏳ Still building (~30s elapsed)
⏳ Still building (~60s elapsed)
✅ Build complete (~75s)
⏳ Deploying to iPhone 14 Pro simulator...
✅ App deployed, running test...
✅ Screenshot captured and verified
✅ MauiiOSTests (iOS 16.2) passed!
| Symptom | Likely Cause | Action |
|---|---|---|
| Silent after "Starting test execution" | MAUI app building | Normal - wait, update user |
| No build process, 120+ seconds | Build stuck/failed | Check for errors |
| "Connecting to Appium" then silence | Driver creation failed | Check Appium logs |
| App appears then disappears | App crashed | Check device logs |
| "Could not find canvas element" | UI didn't render | Will auto-retry, wait |
Android:
adb devices -l
adb logcat -d | grep -E "(FATAL|crash|died)" | tail -10
iOS:
xcrun simctl list devices booted
| Condition | Action |
|---|---|
| Build running, < 2 minutes | Wait — builds are slow, this is normal |
| Build running, > 3 minutes | Something may be wrong, check logs |
| No build process, > 60s silence | Check for errors in test output |
| App crashes repeatedly | Stop, investigate (see troubleshooting.md) |
| Device unresponsive | Kill device/emulator, restart, retry |