Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the repo’s validation and UI test harness so DotPilot.UITests runs as a mandatory, non-skipped part of the normal dotnet test path, and aligns CI + governance/docs with the new “real pass/fail” workflow.
Changes:
- Makes UI tests run “for real” by auto-resolving Chrome + a matching cached ChromeDriver, enforcing window sizing, and hardening browserwasm host teardown.
- Replaces the old CI/MSBuild flow with a
dotnet-native validation pipeline (format/build/analyze + unit/coverage/UI tests) and adds cross-OS desktop publish artifacts. - Pins toolchain + refreshes test tooling (SDK/test packages) and updates governance/docs/commands to reflect the enforced workflow.
Reviewed changes
Copilot reviewed 22 out of 22 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| ui-tests-mandatory.plan.md | Adds a concrete plan + validation notes for making UI tests mandatory and non-skipped. |
| ci-pr-validation.plan.md | Adds a detailed plan + tracker for CI validation fixes and enforcement. |
| global.json | Pins the .NET SDK version used by local and CI builds. |
| docs/Architecture.md | Updates architecture docs to reflect mandatory UI tests + CI desktop artifact publishing. |
| DotPilot/Services/Endpoints/DebugHandler.cs | Refactors handler to avoid release logging field usage while keeping debug-only logging. |
| DotPilot/GlobalUsings.cs | Removes global usings that were causing analyzer/using hygiene issues. |
| DotPilot/DotPilot.csproj | Enables XML doc generation and suppresses CS1591 to keep IDE0005 enforceable in CI. |
| DotPilot/App.xaml.cs | Adjusts DI registration for the debug HTTP handler after global-using removal. |
| DotPilot/AGENTS.md | Documents publish-desktop and the XML-doc/CS1591 exception rationale. |
| DotPilot.UITests/TestBase.cs | Ensures browser teardown runs from finally and forces deterministic window sizing + driver path usage. |
| DotPilot.UITests/DotPilot.UITests.csproj | Enables XML doc generation and suppresses CS1591 in UI test project to satisfy analyzers. |
| DotPilot.UITests/BrowserTestHost.cs | Bounds shutdown and cancels output readers to prevent Windows teardown hangs. |
| DotPilot.UITests/BrowserAutomationBootstrapTests.cs | Stabilizes env-var mutation in tests and updates expectations for normalized driver path. |
| DotPilot.UITests/BrowserAutomationBootstrap.cs | Implements Chrome version detection + ChromeDriver download/cache + environment-variable application. |
| DotPilot.UITests/AGENTS.md | Updates project governance to reflect mandatory, non-skipping UI tests. |
| DotPilot.Tests/coverlet.runsettings | Adds runsettings to exclude generated Uno artifacts and stabilize coverage collection. |
| DotPilot.Tests/DotPilot.Tests.csproj | Enables XML doc generation and suppresses CS1591 in unit test project to satisfy analyzers. |
| DotPilot.Tests/AGENTS.md | Updates coverage command to use the repo-owned runsettings file. |
| Directory.Packages.props | Updates core test/coverage package versions (coverlet, test SDK, NUnit, adapters, logger). |
| AGENTS.md | Updates root governance and required commands (coverage + publish-desktop) and CI expectations. |
| .github/workflows/ci.yml | Rebuilds workflow into a dotnet-native validation pipeline + desktop artifacts matrix. |
| .github/steps/install_dependencies/action.yml | Pins SDK setup to global.json and makes Windows SDK + uno-check opt-in for faster CI. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Comment on lines
+119
to
+123
| private static string EnsureChromeDriverDownloaded(string browserBinaryPath) | ||
| { | ||
| var browserVersion = ResolveBrowserVersion(browserBinaryPath); | ||
| var driverVersion = ResolveChromeDriverVersion(browserVersion); | ||
| var driverPlatform = ResolveChromeDriverPlatform(); |
Comment on lines
+175
to
+192
| private static string ResolveBrowserVersion(string browserBinaryPath) | ||
| { | ||
| var processStartInfo = new ProcessStartInfo | ||
| { | ||
| FileName = browserBinaryPath, | ||
| Arguments = BrowserVersionArgument, | ||
| RedirectStandardOutput = true, | ||
| RedirectStandardError = true, | ||
| UseShellExecute = false, | ||
| CreateNoWindow = true, | ||
| }; | ||
|
|
||
| using var process = Process.Start(processStartInfo) | ||
| ?? throw new InvalidOperationException(BrowserVersionNotFoundMessage); | ||
|
|
||
| var output = $"{process.StandardOutput.ReadToEnd()}{Environment.NewLine}{process.StandardError.ReadToEnd()}"; | ||
| process.WaitForExit(); | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.