|
1 | 1 | # AGENTS.md |
2 | 2 |
|
3 | 3 | Project: dotPilot |
4 | | -Stack: .NET 10 `Uno Platform` desktop app with central package management, `NUnit` unit tests, and `Uno.UITest` smoke coverage |
| 4 | +Stack: .NET 10 `Uno Platform` desktop app with central package management, `NUnit` unit tests, and `Uno.UITest` browser UI coverage |
5 | 5 |
|
6 | 6 | Follows [MCAF](https://mcaf.managed-code.com/) |
7 | 7 |
|
@@ -122,14 +122,16 @@ Skill-management rules for this `.NET` solution: |
122 | 122 | - `test`: `dotnet test DotPilot.slnx` |
123 | 123 | - `format`: `dotnet format DotPilot.slnx --verify-no-changes` |
124 | 124 | - `analyze`: `dotnet build DotPilot.slnx -warnaserror` |
125 | | -- `coverage`: `dotnet test DotPilot.Tests/DotPilot.Tests.csproj --collect:"XPlat Code Coverage"` |
| 125 | +- `coverage`: `dotnet test DotPilot.Tests/DotPilot.Tests.csproj --settings DotPilot.Tests/coverlet.runsettings --collect:"XPlat Code Coverage"` |
| 126 | +- `publish-desktop`: `dotnet publish DotPilot/DotPilot.csproj -c Release -f net10.0-desktop` |
126 | 127 |
|
127 | 128 | For this app: |
128 | 129 |
|
129 | 130 | - unit tests currently use `NUnit` through the default `VSTest` runner |
130 | | -- UI smoke tests live in `DotPilot.UITests` and are a mandatory part of normal verification; the harness must provision or resolve browser-driver prerequisites automatically instead of skipping when local setup is missing |
| 131 | +- UI tests live in `DotPilot.UITests` and are a mandatory part of normal verification; the harness must provision or resolve browser-driver prerequisites automatically instead of skipping when local setup is missing |
131 | 132 | - `format` uses `dotnet format --verify-no-changes` |
132 | | -- coverage uses the `coverlet.collector` integration on `DotPilot.Tests` |
| 133 | +- coverage uses the `coverlet.collector` integration on `DotPilot.Tests` with the repo runsettings file to keep generated Uno artifacts out of the coverage path |
| 134 | +- desktop artifact validation uses `dotnet publish DotPilot/DotPilot.csproj -c Release -f net10.0-desktop` and the CI workflow must upload publish outputs for macOS, Windows, and Linux |
133 | 135 | - `LangVersion` is pinned to `latest` at the root |
134 | 136 | - the repo-root lowercase `.editorconfig` is the source of truth for formatting, naming, style, and analyzer severity |
135 | 137 | - `Directory.Build.props` owns the shared analyzer and warning policy for future projects |
@@ -250,7 +252,10 @@ Local `AGENTS.md` files may tighten these values, but they must not loosen them |
250 | 252 | - Repository or module coverage must not decrease without an explicit written exception. Coverage after the change must stay at least at the previous baseline or improve. |
251 | 253 | - Coverage is for finding gaps, not gaming a number. Coverage numbers do not replace scenario coverage or user-flow verification. |
252 | 254 | - The task is not done until the full relevant test suite is green, not only the newly added tests. |
253 | | -- UI smoke tests are mandatory for this repository and must run in normal agent verification; missing local browser-driver setup is a harness bug to fix, not a reason to skip the suite. |
| 255 | +- UI tests are mandatory for this repository and must run in normal agent verification; missing local browser-driver setup is a harness bug to fix, not a reason to skip the suite. |
| 256 | +- GitHub Actions PR validation is mandatory for every PR and must enforce the real repo verification path so test failures are caught in CI, not only locally. |
| 257 | +- GitHub Actions PR validation must run full automated test verification, especially the real UI suite; build-only or smoke-only checks are not an acceptable substitute for pull-request gating. |
| 258 | +- GitHub Actions validation must also produce downloadable app artifacts for macOS, Windows, and Linux so every PR and mainline run has test results plus installable build outputs. |
254 | 259 | - For `.NET`, keep the active framework and runner model explicit so agents do not mix `TUnit`, `Microsoft.Testing.Platform`, and legacy `VSTest` assumptions. |
255 | 260 | - After changing production code, run the repo-defined quality pass: format, build, analyze, focused tests, broader tests, coverage, and any configured extra gates. |
256 | 261 |
|
@@ -306,10 +311,12 @@ Ask first: |
306 | 311 | - Use central package management for shared test and tooling packages. |
307 | 312 | - Keep one `.NET` test framework active in the solution at a time unless a documented migration is in progress. |
308 | 313 | - Validate UI changes through runnable `DotPilot.UITests` on every relevant verification pass, instead of relying only on manual browser inspection or conditional local setup. |
| 314 | +- Keep the UI-test execution path minimal: one normal test command should produce a real result without extra harness indirection or side-effect-heavy setup. |
309 | 315 |
|
310 | 316 | ### Dislikes |
311 | 317 |
|
312 | 318 | - Installing stale, non-canonical, or non-`mcaf-*` skills into the repo-local agent skill directory. |
313 | 319 | - Moving root governance out of the repository root. |
314 | 320 | - Mixing multiple `.NET` test frameworks in the active solution without a documented migration plan. |
315 | 321 | - Switching desktop Uno pages into stacked or mobile-style responsive layouts during resize work unless the user explicitly asks for a different composition; desktop pages must stay desktop-first and protect geometry through sizing constraints instead. |
| 322 | +- Adding extra UI-test orchestration complexity when the actual goal is simply to run the tests and get an honest pass or fail result. |
0 commit comments