[Sprint 21] Resolve Aspire local startup#409
Conversation
🏗️ PR Added to Squad Triage QueueThis PR has been labeled with Next steps:
|
There was a problem hiding this comment.
Pull request overview
This PR addresses Aspire local startup reliability by centralizing common MSBuild properties, adding focused AppHost startup smoke coverage, hardening a flaky Playwright navigation step during boot, and updating local development documentation/tooling to reflect the actual runtime behavior.
Changes:
- Centralize common project settings (TargetFramework, Nullable, ImplicitUsings, analyzers) in
Directory.Build.propsand simplify project files accordingly. - Add AppHost startup smoke coverage and stabilize a flaky Playwright theme-toggle test during Aspire startup.
- Update local AppHost development docs and supporting repo metadata (VS Code launch config,
.gitignore).
Reviewed changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Web.Tests/Web.Tests.csproj | Removes per-project framework/nullable/implicit usings in favor of centralized props. |
| tests/Web.Tests.Integration/Web.Tests.Integration.csproj | Same centralization cleanup for integration test project. |
| tests/Web.Tests.Bunit/Web.Tests.Bunit.csproj | Same centralization cleanup for bUnit test project. |
| tests/Domain.Tests/Domain.Tests.csproj | Same centralization cleanup for domain test project. |
| tests/Architecture.Tests/Architecture.Tests.csproj | Same centralization cleanup for architecture test project. |
| tests/AppHost.Tests/Tests/Layout/LayoutThemeToggleTests.cs | Adds retry logic around initial navigation to reduce Aspire-startup flakiness. |
| tests/AppHost.Tests/AppHostStartupSmokeTests.cs | Adds a focused smoke test that waits for /alive and asserts web startup health. |
| tests/AppHost.Tests/AppHost.Tests.csproj | Relies on centralized props; unchanged references/usings remain for test infra. |
| src/Web/Web.csproj | Reorders/normalizes property groups and relies on centralized TargetFramework/Nullable/ImplicitUsings. |
| src/ServiceDefaults/ServiceDefaults.csproj | Removes redundant framework/nullable/implicit usings properties. |
| src/Domain/Domain.csproj | Removes redundant framework/nullable/implicit usings properties. |
| src/AppHost/AppHost.csproj | Simplifies project properties and relies on centralized TargetFramework/Nullable/ImplicitUsings. |
| docs/build-log.txt | Adds an addendum documenting diagnosis and resolution of the flaky Playwright startup failure. |
| docs/APPHOST-LOCAL-DEVELOPMENT.md | Updates instructions to trust the AppHost console-printed dashboard URL vs a hard-coded port. |
| Directory.Build.props | Introduces centralized default MSBuild properties for the whole repo. |
| .vscode/launch.json | Adds a VS Code Aspire launch configuration for local debugging. |
| .squad/agents/gimli/history.md | Records issue #407 learning about keeping a narrow AppHost smoke test. |
| .squad/agents/boromir/history.md | Records issue #407 learning about console URL being the dashboard source of truth. |
| .gitignore | Ignores local .directory metadata file. |
| lastError = ex; | ||
| } | ||
|
|
||
| await Task.Delay(TimeSpan.FromSeconds(1), cts.Token); |
| if (lastException != null) | ||
| { | ||
| throw lastException; | ||
| } |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #409 +/- ##
=======================================
Coverage 87.49% 87.49%
=======================================
Files 71 71
Lines 1775 1775
Branches 214 214
=======================================
Hits 1553 1553
Misses 145 145
Partials 77 77 🚀 New features to boost your workflow:
|
Closes #407\n\n## Summary\n- add AppHost startup smoke test coverage for local Aspire boot\n- align project/test package references for local startup reliability\n- document local startup flow updates\n- ignore local .directory metadata file\n\n## Validation\n- dotnet format MyBlog.slnx --verify-no-changes\n- dotnet build MyBlog.slnx --configuration Release\n- dotnet test tests/Architecture.Tests/Architecture.Tests.csproj --configuration Release --no-build\n- dotnet test tests/Domain.Tests/Domain.Tests.csproj --configuration Release --no-build\n- dotnet test tests/Web.Tests/Web.Tests.csproj --configuration Release --no-build\n- dotnet test tests/Web.Tests.Bunit/Web.Tests.Bunit.csproj --configuration Release --no-build\n- dotnet test tests/Web.Tests.Integration/Web.Tests.Integration.csproj --configuration Release --no-build\n- dotnet test tests/AppHost.Tests/AppHost.Tests.csproj --configuration Release --no-build