5.2 KiB
5.2 KiB
phase, slug, status, nyquist_compliant, wave_0_complete, created
| phase | slug | status | nyquist_compliant | wave_0_complete | created |
|---|---|---|---|---|---|
| 11 | html-export-branding | draft | true | false | 2026-04-08 |
Phase 11 — Validation Strategy
Per-phase validation contract for feedback sampling during execution.
Test Infrastructure
| Property | Value |
|---|---|
| Framework | xUnit 2.9.3 + Moq 4.20.72 |
| Config file | SharepointToolbox.Tests/SharepointToolbox.Tests.csproj |
| Quick run command | dotnet test SharepointToolbox.Tests --filter "FullyQualifiedName~Export" --no-build -q |
| Full suite command | dotnet test SharepointToolbox.Tests --no-build |
| Estimated runtime | ~15 seconds |
Sampling Rate
- After every task commit:
dotnet test SharepointToolbox.Tests --filter "FullyQualifiedName~Export" --no-build -q - After every plan wave:
dotnet test SharepointToolbox.Tests --no-build - Before
/gsd:verify-work: Full suite must be green - Max feedback latency: 15 seconds
Per-Task Verification Map
| Task ID | Plan | Wave | Requirement | Test Type | Automated Command | File Exists | Status |
|---|---|---|---|---|---|---|---|
| 11-01-01 | 01 | 1 | BRAND-05 | unit | dotnet test --filter "FullyQualifiedName~BrandingHtmlHelper" --no-build |
No (W0) | pending |
| 11-02-01 | 02 | 2 | BRAND-05 | unit | dotnet test --filter "FullyQualifiedName~Export" --no-build -q |
Yes (extend) | pending |
| 11-02-02 | 02 | 2 | BRAND-05 | unit | same as above | Yes (extend) | pending |
| 11-03-01 | 03 | 3 | BRAND-05 | integration | dotnet build --no-restore -warnaserror && dotnet test --no-build -q |
Yes (compile check) | pending |
| 11-04-01 | 04 | 1 | BRAND-04 | unit | dotnet test --filter "FullyQualifiedName~ProfileService" --no-build |
Yes (extend) | pending |
| 11-04-02 | 04 | 1 | BRAND-04 | unit | dotnet test --filter "FullyQualifiedName~SettingsViewModel or FullyQualifiedName~ProfileManagement" --no-build |
No (W0) | pending |
Status: pending / green / red / flaky
Wave 0 Requirements
SharepointToolbox.Tests/Services/Export/BrandingHtmlHelperTests.cs— covers BRAND-05a/b/c (both logos, single logo, no logos)SharepointToolbox.Tests/ViewModels/SettingsViewModelLogoTests.cs— covers MSP logo browse/clear commandsSharepointToolbox.Tests/ViewModels/ProfileManagementViewModelLogoTests.cs— covers client logo + auto-pull (BRAND-04)- Extend existing
HtmlExportServiceTests.cs— covers BRAND-05d/e (branding present/absent) - Extend existing
SearchExportServiceTests.cs,StorageHtmlExportServiceTests.cs,DuplicatesHtmlExportServiceTests.cs,UserAccessHtmlExportServiceTests.cs— covers BRAND-05f
Existing infrastructure covers test framework setup.
Requirements -> Test Map
| Req ID | Behavior | Test Type | Automated Command | File Exists? |
|---|---|---|---|---|
| BRAND-05a | BrandingHtmlHelper produces correct HTML for both logos | unit | dotnet test --filter "FullyQualifiedName~BrandingHtmlHelper" --no-build -q |
No - Wave 0 |
| BRAND-05b | BrandingHtmlHelper produces empty string for no logos | unit | same as above | No - Wave 0 |
| BRAND-05c | BrandingHtmlHelper handles single logo (MSP only / client only) | unit | same as above | No - Wave 0 |
| BRAND-05d | HtmlExportService.BuildHtml with branding includes header | unit | dotnet test --filter "FullyQualifiedName~HtmlExportServiceTests" --no-build -q |
Yes (extend) |
| BRAND-05e | HtmlExportService.BuildHtml without branding unchanged | unit | same as above | Yes (extend) |
| BRAND-05f | Each of 5 exporters injects branding header between body and h1 | unit | dotnet test --filter "FullyQualifiedName~Export" --no-build -q |
Partially (extend existing) |
| BRAND-04a | Auto-pull handles 404 (no branding) gracefully | unit | dotnet test --filter "FullyQualifiedName~AutoPull" --no-build -q |
No - Wave 0 |
| BRAND-04b | Auto-pull handles empty stream gracefully | unit | same as above | No - Wave 0 |
Manual-Only Verifications
| Behavior | Requirement | Why Manual | Test Instructions |
|---|---|---|---|
| MSP logo appears in exported HTML report | BRAND-05 | Requires visual inspection of rendered HTML | 1. Import MSP logo 2. Run permissions export 3. Open HTML in browser 4. Verify logo in header |
| Both logos side by side in report header | BRAND-05 | Requires visual layout check | 1. Import MSP and client logo 2. Run any export 3. Verify both logos rendered side by side |
| No broken images when no logo configured | BRAND-05 | Requires visual regression check | 1. Clear all logos 2. Run export 3. Compare output to pre-branding export |
| Auto-pull from tenant without Entra branding | BRAND-04 | Requires live tenant without branding | 1. Select tenant without Entra branding 2. Click auto-pull 3. Verify silent fallback (no crash, no broken state) |
Validation Sign-Off
- All tasks have
<automated>verify or Wave 0 dependencies - Sampling continuity: no 3 consecutive tasks without automated verify
- Wave 0 covers all MISSING references
- No watch-mode flags
- Feedback latency < 15s
nyquist_compliant: trueset in frontmatter
Approval: approved