Skip to content

Add MSTest.Windows.UIAutomation for desktop UI tests - #10862

Merged
Amaury Levé (Evangelink) merged 27 commits into
mainfrom
dev/amauryleve/mstest-ui-testing
Sep 27, 2026
Merged

Amaury Levé (Evangelink) merged 27 commits into
mainfrom
dev/amauryleve/mstest-ui-testing

Conversation

@Evangelink

@Evangelink Amaury Levé (Evangelink) commented Aug 29, 2026 •

Copy link
Copy Markdown
Member

Summary

Revives and redesigns the unmerged work from #7810 as a narrowly scoped preview integration.

  • add the MSTest.Windows.UIAutomation package for MSTest-managed application lifecycle and UIA2 window access
  • expose it through MSTest.Sdk with <EnableWindowsUIAutomation>true</EnableWindowsUIAutomation> for MTP and VSTest
  • provide abstract ApplicationTest and WindowTest bases with overridable process launch, window discovery, and shutdown hooks
  • support non-Windows cross-targeted builds while preserving explicit EnableWindowsTargeting values
  • add a Character Map sample plus acceptance coverage for both runners, SDK validation, process cleanup, cancellation, custom discovery, launcher-child handoff, and custom shutdown

Scope

This preview targets unpackaged, full-trust Win32, WinForms, and WPF applications running in an interactive Windows session. It does not provide packaged MSIX/UWP/WinUI activation, elevated-process automation, a headless desktop, locators, automatic waits, screenshots, or a multi-window object model.

Validation

  • build.cmd -pack
  • WindowsUIAutomationSdkTests: 26 passed
  • non-Windows solution-filter pack with OS=Unix

Supersedes #7810.

Revive the MSTest.Windows.AppTesting work from PR #7810 on current main, including SDK integration, package metadata, a deterministic sample, and MTP/VSTest acceptance coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 006cf5a8-6525-4ecb-829f-e83a99c4de05
Copilot AI balanced review requested due to automatic review settings August 29, 2026 08:42
@Evangelink
Amaury Levé (Evangelink) enabled auto-merge (squash) August 29, 2026 08:44
@github-actions

Copy link
Copy Markdown
Contributor

🧪 Expert test review — PR #10862

GradeTestMutationNotesHow to improve
B (80–89) new CharacterMapTests.
CharacterMap_
MainWindow_
HasTitle
N/A Demo sample test; checks non-empty title but not a specific expected value. If a known app title is deterministic, assert the exact expected string.
B (80–89) new CharacterMapTests.
CharacterMap_
MainWindow_
IsVisible
N/A Demo sample illustrating WindowTest usage; asserts control type only. Could also assert MainWindow.Current.IsEnabled/IsOffscreen for a stronger visibility check.
A (90–100) new WindowsAppTestingSdkTests.
EnableWindowsAppTesting_
WhenUsingMSTestRunner_
RunsDesktopTests
N/A Follows established acceptance-test pattern (mirrors PlaywrightSdkTests); asserts exit code and exact pass/fail/skip counts, correctly gated by OSCondition for Windows-only desktop UI automation. —
A (90–100) new WindowsAppTestingSdkTests.
EnableWindowsAppTesting_
WhenUsingVSTest_
RunsDesktopTests
N/A Verifies both VSTest engine banner and exact passed/failed/skipped summary line for the VSTest path. —

Note: Mutation analysis reported N/A for all four tests — the acceptance tests spawn out-of-process test hosts against a Windows-only physical UI (Character Map), and the sample tests are documentation demos, so the production entry points (native app automation) could not be resolved/exercised for pseudo-mutation in this review. All four tests are gated correctly ([OSCondition(OperatingSystems.Windows, ...)] on the acceptance tests) and follow the repo's existing SDK-acceptance-test conventions (TestAssetFixture, DynamicData over TargetFrameworks, AssertOutputContainsSummary/AssertOutputContains) closely, matching sibling files like PlaywrightSdkTests.cs. No high-confidence actionable findings warranted an inline suggestion.

This advisory comment was generated automatically. Grades are heuristic and informational — they do not block merging. Suggestions on the Files changed tab can be applied with one click. Re-run with /review-tests.

🤖 Automated content by GitHub Copilot. Generated by the Test Reviewer on PR (on open / sync) workflow. · auto · 47.6 AIC · ⌖ 1.12 AIC · ⊞ 16.9K · [◷]( · ◷)

@github-actions

This comment has been minimized.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

🤖 Automated review by GitHub Copilot. Generated by the Expert Code Review workflow. To request a follow-up action, reply by tagging @copilot directly.

Review Summary — MSTest.Windows.AppTesting

Clean PR that adds a new MSTest.Windows.AppTesting package with application lifecycle and Windows UI Automation base classes, wired through MSTest.Sdk. Two inline comments posted; neither is blocking.

# Dimension Verdict
1 Algorithmic Correctness ✅ OK — startup loop handles edge cases (process exit, timeout) correctly
2 Threading & Concurrency ⚠️ Minor — AutomationTest uses [TestClass] (MTA) while subclasses use [STATestClass]; see inline comment
3 Security & IPC ✅ N/A
4 Public API & Binary Compat ✅ OK — all public API in PublicAPI.Unshipped.txt, no init accessors, types unsealed by design (base-class hierarchy), XML docs present
5 Performance & Allocations ✅ OK — not a hot path
6 Cross-TFM Compatibility ✅ OK — targets net8.0-windows / net9.0-windows only, validated in .targets
7 Resource & IDisposable ✅ OK — Process disposed in finally; CloseMainWindow → Kill cascade is correct
8 Defensive Coding ✅ OK — boundary checks for process exit, null handle, and timeout present
9 Naming & Code Style ✅ OK
10 Logging & Observability ✅ N/A
11 Error Messages & UX ✅ OK — clear exception messages with variable names
12 Tests & Test Quality ✅ OK — acceptance tests cover MTP and VSTest, OS-gated
13 Documentation ✅ OK — PACKAGE.md present, XML docs thorough
14 Localization ✅ N/A — no user-facing resx strings
15 Backward Compatibility ✅ N/A — new package
16 Build & Pack Integration ✅ OK — verify-nupkgs.ps1 updated, MSBuild integration mirrors Aspire/Playwright patterns
17 Serialization ✅ N/A
18 Tracing & Telemetry ✅ N/A
19 Nullability ✅ OK — null! used for lifecycle-initialized properties, consistent with rest of codebase
20 TODOs & Leftovers ✅ None found
21 Scope Discipline ✅ Single concern
22 Script & Tooling Hygiene ✅ OK — PowerShell hash table update is correct

Overall: Looks good. The two inline comments are non-blocking suggestions for future hardening.

Comment thread src/TestFramework/TestFramework.Windows.AppTesting/AutomationTest.cs Outdated
Comment thread src/TestFramework/TestFramework.Windows.AppTesting/ApplicationTest.cs Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

Review tier: Balanced
Findings: 2 Medium severity · 2 Low severity

New issues introduced by this change (4)
Severity Finding
Medium severity samples/​public/​DemoMSTestSdk/​ProjectUsingWindowsAppTesting/​ProjectUsingWindowsAppTesting.csproj — This project is not listed in samples/public/DemoMSTestSdk/DemoMSTestSdk.sln. Because…
Medium severity samples/​public/​DemoMSTestSdk/​ProjectUsingWindowsAppTesting/​ProjectUsingWindowsAppTesting.csproj — The non-SDK example cannot restore as written: MSTestWindowsAppTestingVersion is only defined by…
Low severity src/​Package/​MSTest.Sdk/​Sdk/​Features/​WindowsAppTesting.targets — No test exercises this validation path: every generated acceptance TFM appends -windows. Add a…
Low severity src/​TestFramework/​TestFramework.Windows.AppTesting/​ApplicationTest.cs — The acceptance tests exercise only a responsive Character Map process. Add coverage for an app that…
What changed in this PR

Adds Windows desktop UI automation support to MSTest through a new package, SDK integration, sample, and acceptance coverage.

Changes:

  • Adds application lifecycle and UI Automation base classes.
  • Integrates the package into MSTest.Sdk for MTP and VSTest.
  • Adds Character Map samples, acceptance tests, and package verification.
File Description
TestFx.slnx Includes the new package project.
WindowsAppTestingSdkTests.cs Tests MTP and VSTest integration.
WindowTest.cs Exposes the main UI Automation window.
TestFramework.Windows.AppTesting.csproj Defines the Windows package.
PublicAPI.Unshipped.txt Tracks new public APIs.
PublicAPI.Shipped.txt Initializes the shipped baseline.
PACKAGE.md Documents package usage.
GlobalUsings.cs Imports MSTest APIs globally.
AutomationTest.cs Adds the hierarchy root.
ApplicationTest.cs Manages application lifecycle.
VSTest.targets Enables the feature under VSTest.
Sdk.props.template Defines feature and version properties.
NativeAOT.targets Rejects unsupported NativeAOT usage.
ClassicEngine.targets Enables the feature under MTP.
WindowsAppTesting.targets Adds validation, package reference, and using.
MSTest.Sdk.csproj Packs and versions the feature target.
ProjectUsingWindowsAppTesting.csproj Adds the SDK sample configuration.
CharacterMapTests.cs Demonstrates desktop UI tests.
verify-nupkgs.ps1 Verifies package contents.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/Package/MSTest.Sdk/Sdk/Features/WindowsAppTesting.targets Outdated
Comment thread src/TestFramework/TestFramework.Windows.AppTesting/ApplicationTest.cs Outdated
Run the base hierarchy on STA threads, honor cooperative cancellation during app startup, include the package in MSTest.slnf, and make package verification detect missing outputs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 006cf5a8-6525-4ecb-829f-e83a99c4de05
Copilot AI review requested due to automatic review settings August 29, 2026 10:31
@github-actions

This comment has been minimized.

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Expert test review — PR #10862

Reviewed 4 new test methods introduced by this PR across the new TestFramework.Windows.AppTesting sample and its acceptance test. All four are focused, single-behavior tests with meaningful equality/non-empty assertions on the exercised contract (ControlType, window Name, process exit code, and MSTest/VSTest summary counts), correctly awaited async work, and no anti-pattern findings. No high-confidence actionable issues were found, so no inline suggestions were posted.

GradeTestMutationNotesHow to improve
A (90–100) new CharacterMapTests.
CharacterMap_
MainWindow_
IsVisible
0/0 (no meaningful points) Single meaningful equality assertion on ControlType; behavior is thin OS-automation plumbing with no internal branch logic to mutate. —
A (90–100) new CharacterMapTests.
CharacterMap_
MainWindow_
HasTitle
0/0 (no meaningful points) Clear non-empty-title assertion with a descriptive failure message. —
A (90–100) new WindowsAppTestingSdkTests.
EnableWindowsAppTesting_
WhenUsingMSTestRunner_
RunsDesktopTests
N/A End-to-end acceptance test asserting exit code and exact pass/fail/skip summary against a generated real project. —
A (90–100) new WindowsAppTestingSdkTests.
EnableWindowsAppTesting_
WhenUsingVSTest_
RunsDesktopTests
N/A Verifies exit code and VSTest-specific summary output; async call correctly awaited. —

This advisory comment was generated automatically. Grades are heuristic
and informational — they do not block merging. Suggestions on the Files
changed tab can be applied with one click. Re-run with
/review-tests.

🤖 Automated content by GitHub Copilot. Generated by the Test Reviewer on PR (on open / sync) workflow. · auto · 66.8 AIC · ⌖ 1.12 AIC · ⊞ 16.9K · [◷]( · ◷)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

Review tier: Balanced
Findings: 3 Medium severity · 3 Low severity

New issues introduced by this change (2)
Severity Finding
Medium severity test/​IntegrationTests/​MSTest.Acceptance.IntegrationTests/​WindowsAppTestingSdkTests.cs — This VSTest leg omits the roll-forward setting used by the MTP leg above. The repo-local toolchain…
Low severity src/​Package/​MSTest.Sdk/​Sdk/​Sdk.props.template — These new user-facing SDK properties are missing from the SDK documentation tables.…
Pre-existing issues (4)
Severity Finding
Medium severity samples/​public/​DemoMSTestSdk/​ProjectUsingWindowsAppTesting/​ProjectUsingWindowsAppTesting.csproj — The non-SDK example cannot restore as written: MSTestWindowsAppTestingVersion is only defined by… View comment
Medium severity samples/​public/​DemoMSTestSdk/​ProjectUsingWindowsAppTesting/​ProjectUsingWindowsAppTesting.csproj — This project is not listed in samples/public/DemoMSTestSdk/DemoMSTestSdk.sln. Because… View comment
Low severity src/​TestFramework/​TestFramework.Windows.AppTesting/​ApplicationTest.cs — The acceptance tests exercise only a responsive Character Map process. Add coverage for an app that… View comment
Low severity src/​Package/​MSTest.Sdk/​Sdk/​Features/​WindowsAppTesting.targets — No test exercises this validation path: every generated acceptance TFM appends -windows. Add a… View comment
Suppressed comments (3)

samples/public/DemoMSTestSdk/ProjectUsingWindowsAppTesting/ProjectUsingWindowsAppTesting.csproj:1

  • This public sample is not included in samples/public/DemoMSTestSdk/DemoMSTestSdk.sln. eng/build-samples.ps1:60-64 builds discovered solutions rather than standalone projects, so the new sample is currently omitted from sample CI and can silently break. Add the project and its Debug/Release configurations to that solution.
<Project Sdk="MSTest.Sdk">

src/Package/MSTest.Sdk/Sdk/Features/WindowsAppTesting.targets:11

  • The added acceptance asset always targets *-windows, and no other test exercises this validation message, so removing or breaking this target would leave all current tests green. Add a non-Windows-target build case that enables the feature and asserts this diagnostic.
  <Target Name="_ValidateWindowsAppTestingPlatform" BeforeTargets="Restore;Build"
          Condition=" '$(TargetFramework)' != '' and '$(_IsWindowsTfm)' != 'true' ">
    <Error Text="MSTest.Windows.AppTesting requires a Windows target framework (e.g. net8.0-windows). Current TargetFramework: '$(TargetFramework)'." />

src/TestFramework/TestFramework.Windows.AppTesting/ApplicationTest.cs:124

  • The Character Map acceptance path closes normally and does not assert that cleanup terminated the process, so this forced-kill branch is untested; a regression here can leave desktop processes running after the suite. Add a test application that ignores CloseMainWindow and verify that cleanup terminates its process tree.
                    _ = appProcess.CloseMainWindow();
                    if (!appProcess.WaitForExit(5000))
                    {
                        appProcess.Kill(entireProcessTree: true);
                        _ = appProcess.WaitForExit(5000);

Comment thread src/Package/MSTest.Sdk/Sdk/Sdk.props.template Outdated
Cover invalid target frameworks, early process exit, startup timeout, and forced cleanup while correcting the standalone sample package version.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 006cf5a8-6525-4ecb-829f-e83a99c4de05
Copilot AI review requested due to automatic review settings August 29, 2026 10:45
@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

Review tier: Balanced
Findings: 1 High severity · 1 Medium severity · 1 Low severity

New issues introduced by this change (1)
Severity Finding
High severity src/​Package/​MSTest.Sdk/​Sdk/​Features/​WindowsAppTesting.targets — This check is case-sensitive, although the SDK accepts target framework monikers…
Pre-existing issues (2)
Severity Finding
Medium severity test/​IntegrationTests/​MSTest.Acceptance.IntegrationTests/​WindowsAppTestingSdkTests.cs — This VSTest leg omits the roll-forward setting used by the MTP leg above. The repo-local toolchain… View comment
Low severity src/​Package/​MSTest.Sdk/​Sdk/​Sdk.props.template — These new user-facing SDK properties are missing from the SDK documentation tables.… View comment
Issues resolved since last review (4)
Severity Finding
Low severity src/​TestFramework/​TestFramework.Windows.AppTesting/​ApplicationTest.cs — The acceptance tests exercise only a responsive Character Map process. Add coverage for an app that… View resolved comment
Low severity src/​Package/​MSTest.Sdk/​Sdk/​Features/​WindowsAppTesting.targets — No test exercises this validation path: every generated acceptance TFM appends -windows. Add a… View resolved comment
Medium severity samples/​public/​DemoMSTestSdk/​ProjectUsingWindowsAppTesting/​ProjectUsingWindowsAppTesting.csproj — The non-SDK example cannot restore as written: MSTestWindowsAppTestingVersion is only defined by… View resolved comment
Medium severity samples/​public/​DemoMSTestSdk/​ProjectUsingWindowsAppTesting/​ProjectUsingWindowsAppTesting.csproj — This project is not listed in samples/public/DemoMSTestSdk/DemoMSTestSdk.sln. Because… View resolved comment
Suppressed comments (2)

Previously missed (1) — in code that hasn't changed since the last review.

src/TestFramework/TestFramework.Windows.AppTesting/PACKAGE.md:12

  • This standalone getting-started snippet does not pin MSTest.Sdk, and the README does not provide a global.json pin, so users copying it from the NuGet package page cannot resolve the project SDK. Include an SDK version here, consistent with src/Package/MSTest.Sdk/PACKAGE.md:9-16.
<Project Sdk="MSTest.Sdk">

src/Package/MSTest.Sdk/Sdk/Sdk.props.template:45

  • The repository's complete MSTest.Sdk property reference in docs/glossary.md:312-343 still lists only Aspire and Playwright and omits both new controls. Add an EnableWindowsAppTesting compatibility row (including its NativeAOT error and VSTest support) and document MSTestWindowsAppTestingVersion, otherwise the advertised complete reference is stale as soon as this feature ships.
    <EnableWindowsAppTesting Condition=" '$(EnableWindowsAppTesting)' == '' ">false</EnableWindowsAppTesting>
    <EnablePlaywright Condition=" '$(EnablePlaywright)' == '' ">false</EnablePlaywright>
    <AspireHostingTestingVersion Condition=" '$(AspireHostingTestingVersion)' == '' ">${AspireHostingTestingVersion}</AspireHostingTestingVersion>
    <MicrosoftNETTestSdkVersion Condition=" '$(MicrosoftNETTestSdkVersion)' == '' ">${MicrosoftNETTestSdkVersion}</MicrosoftNETTestSdkVersion>
    <MSTestWindowsAppTestingVersion Condition=" '$(MSTestWindowsAppTestingVersion)' == '' ">${MSTestWindowsAppTestingVersion}</MSTestWindowsAppTestingVersion>

Comment thread src/Package/MSTest.Sdk/Sdk/Features/WindowsAppTesting.targets Outdated
Apply desktop runtime roll-forward consistently to the VSTest acceptance leg and document the feature and version override properties.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 006cf5a8-6525-4ecb-829f-e83a99c4de05
Copilot AI review requested due to automatic review settings August 29, 2026 11:02
@github-actions

Copy link
Copy Markdown
Contributor

🧪 Expert test review — PR #10862

The pre-step's extract data (test-file/line-range TSV) was unavailable in this run, so this review was derived directly from the PR's file diffs. Two new test files were added: a sample demo (CharacterMapTests.cs) and an acceptance-test suite (WindowsAppTestingSdkTests.cs) for the new EnableWindowsAppTesting MSTest.Sdk feature.

GradeTestMutationNotesHow to improve
B (80–89) new CharacterMapTests.
CharacterMap_
MainWindow_
IsVisible
N/A Sample/demo asset; single ControlType assertion, adequate for illustrating the API. —
B (80–89) new CharacterMapTests.
CharacterMap_
MainWindow_
HasTitle
N/A Sample/demo asset; only checks the title is non-empty, not a specific expected value. —
B (80–89) new WindowsAppTestingSdkTests.
ApplicationTearDown_
WhenApplicationNeverCreatesWindow_
TerminatesProcess
N/A Solid scenario, but the hardcoded 1s `WaitForExit` and silent `catch (ArgumentException)` could mask a slow-terminate flake under CI load. Add an explicit fail message covering the not-yet-exited case and consider a longer/backoff wait.
A (90–100) new WindowsAppTestingSdkTests.
EnableWindowsAppTesting_
WhenUsingMSTestRunner_
RunsDesktopTests
N/A Exercises the real MSTest runner path end-to-end and asserts exit code plus exact pass/fail/skip summary. —
A (90–100) new WindowsAppTestingSdkTests.
EnableWindowsAppTesting_
WhenUsingVSTest_
RunsDesktopTests
N/A Covers the VSTest bridge path with deterministic exit-code and output assertions. —
A (90–100) new WindowsAppTestingSdkTests.
EnableWindowsAppTesting_
WhenTargetFrameworkIsNotWindows_
FailsWithClearError
N/A Verifies the build-time guard with the exact expected error message. —
A (90–100) new WindowsAppTestingSdkTests.
ApplicationSetup_
WhenApplicationExitsBeforeCreatingWindow_
ReportsClearFailure
N/A Asserts the specific failure exit code and diagnostic message for the early-exit scenario. —

Note on mutation column: production code for the new TestFramework.Windows.AppTesting classes (WindowTest, ApplicationTest, AutomationTest) is Windows-only and process/UI-Automation driven, so meaningful pseudo-mutation execution could not be resolved in this sandbox; marked N/A throughout rather than guessed.

No inline suggestions were posted — findings above are minor reliability/coverage notes rather than concrete, safely-anchorable mechanical fixes.

This advisory comment was generated automatically. Grades are heuristic and informational — they do not block merging. Re-run with /review-tests.

🤖 Automated content by GitHub Copilot. Generated by the Test Reviewer on PR (on open / sync) workflow. · auto · 54.2 AIC · ⌖ 1 AIC · ⊞ 16.9K · [◷]( · ◷)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

Review tier: Balanced
Findings: 1 High severity

Pre-existing issues (1)
Severity Finding
High severity src/​Package/​MSTest.Sdk/​Sdk/​Features/​WindowsAppTesting.targets — This check is case-sensitive, although the SDK accepts target framework monikers… View comment
Issues resolved since last review (2)
Severity Finding
Low severity src/​Package/​MSTest.Sdk/​Sdk/​Sdk.props.template — These new user-facing SDK properties are missing from the SDK documentation tables.… View resolved comment
Medium severity test/​IntegrationTests/​MSTest.Acceptance.IntegrationTests/​WindowsAppTestingSdkTests.cs — This VSTest leg omits the roll-forward setting used by the MTP leg above. The repo-local toolchain… View resolved comment
Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

test/IntegrationTests/MSTest.Acceptance.IntegrationTests/WindowsAppTestingSdkTests.cs:150

  • The generated asset imports Microsoft.MSTest.Windows.AppTesting explicitly, so these acceptance tests do not exercise the implicit Using added by WindowsAppTesting.targets. Since the public sample relies on that implicit import and is intentionally excluded from sample CI, removing this using is needed to make a regression in the SDK feature fail automated coverage.
using Microsoft.MSTest.Windows.AppTesting;

@github-actions

This comment has been minimized.

Use MSBuild's target-platform parser, cover uppercase target framework monikers, and pin the package README SDK example.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 006cf5a8-6525-4ecb-829f-e83a99c4de05
Copilot AI review requested due to automatic review settings August 29, 2026 11:31
@github-actions

Copy link
Copy Markdown
Contributor

🧪 Expert test review — PR #10862

GradeTestMutationNotesHow to improve
A (90–100) new WindowsAppTestingSdkTests.
EnableWindowsAppTesting_
WhenTargetFrameworkUsesUppercase_
IsAccepted
1/1 killed Directly exercises the case-insensitive TargetPlatformIdentifier fix; reverting it fails the build. —

This advisory comment was generated automatically. Grades are heuristic
and informational — they do not block merging. Suggestions on the Files
changed tab can be applied with one click. Re-run with
/review-tests.

🤖 Automated content by GitHub Copilot. Generated by the Test Reviewer on PR (on open / sync) workflow. · auto · 48.8 AIC · ⌖ 0.905 AIC · ⊞ 16.9K · [◷]( · ◷)

@github-actions

This comment has been minimized.

@microsoft-github-policy-service microsoft-github-policy-service Bot added the state/needs-review Awaiting review from the team. label Sep 27, 2026
@github-actions github-actions Bot added state/needs-review Awaiting review from the team. and removed state/needs-review Awaiting review from the team. labels Sep 27, 2026
@microsoft-github-policy-service microsoft-github-policy-service Bot added state/needs-review Awaiting review from the team. and removed state/needs-review Awaiting review from the team. labels Sep 27, 2026
@github-actions github-actions Bot added state/approved Proposal approved; ready for implementation. and removed state/needs-review Awaiting review from the team. labels Sep 27, 2026
Move user-facing lifecycle and window-discovery errors into a generated resource catalog, add localization files, and update the getting-started SDK version.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 006cf5a8-6525-4ecb-829f-e83a99c4de05
Copilot AI review requested due to automatic review settings September 27, 2026 15:58
@github-actions github-actions Bot added state/approved Proposal approved; ready for implementation. and removed state/approved Proposal approved; ready for implementation. labels Sep 27, 2026
@microsoft-github-policy-service microsoft-github-policy-service Bot added state/needs-review Awaiting review from the team. and removed state/needs-review Awaiting review from the team. labels Sep 27, 2026
@github-actions github-actions Bot added state/approved Proposal approved; ready for implementation. and removed state/needs-review Awaiting review from the team. state/approved Proposal approved; ready for implementation. labels Sep 27, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The package completeness check breaks supported testing-platform-only official builds.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Resolved since last review (3)

Comment thread eng/verify-nupkgs.ps1
@microsoft-github-policy-service microsoft-github-policy-service Bot added the state/needs-review Awaiting review from the team. label Sep 27, 2026
@github-actions github-actions Bot removed the state/needs-review Awaiting review from the team. label Sep 27, 2026
Pass ProductsToBuild to package verification and require the MSTest package set only for all or mstest builds, while retaining metadata checks for produced testing-platform packages.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 006cf5a8-6525-4ecb-829f-e83a99c4de05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

No concrete defect was found, but the new public process-lifecycle API and cross-runner SDK integration warrant final human review.

Review effort: Balanced
Findings: None

Resolved since last review (1)

@github-actions

Copy link
Copy Markdown
Contributor

Final test-triage resolution — Azure Pipelines build 1613892

This supersedes any earlier preliminary comment for this build.

Scope of evidence: 17,195 normalized test records (CTRF/TRX) across Windows and Linux legs, plus timeline and artifact metadata for the completed aggregate build. evidenceIncomplete is false.

Test-level finding: Only one record has status: failed — PackagedWinUI.PackagedWinUITestCases.RetryTestMethod_PassesOnSecondAppContainerHost, from Windows_App_Model_Diagnostics_Attempt1/.../Retries/FTYm1/1/appcontainer-retry.trx. This is a by-design retry fixture, not a defect: the test source (guarded by #if RETRY_TEST in test/IntegrationTests/Microsoft.Testing.Platform.Acceptance.IntegrationTests/PackagedWinUITests.cs) intentionally fails on its first AppContainer host invocation (writing a marker file) and asserts it must pass on the second host — this is exactly the retry behavior the test verifies. Both the second-attempt and final TRX records for the same execution report status: passed, and the calling acceptance test (AssertRetryWinUITrx) explicitly expects "Failed" on attempt 1 and "Passed" on attempt 2. No corrective action is needed.

Slowness: 12 slow-duration candidates were flagged historically, but slowRegressionCount is 0 — none met the 60s-floor + 3× p95 threshold, so no duration regression is actionable.

Diagnostics/dumps: diagnosticCount is 0; the "Publish local dumps" tasks reported empty CrashDumps directories on both Windows legs (expected — no crash occurred).

Out of scope (build, not test): The Windows Debug and Windows Release build jobs failed with MSB3073 from eng/AfterSolutionBuild.targets invoking verify-nupkgs.ps1 (package verification), which is a build-product failure, not a test failure, and is left to Build Failure Analysis.

Conclusion: No actionable test failure, flake, crash, or duration regression found in this build. No issue created.

🤖 Automated content by GitHub Copilot. Generated by the Pipeline Test Triage workflow. · copilot · auto · 60.1 AIC · ⌖ 7.84 AIC · ⊞ 9.6K

Detect MSTest product builds from produced package IDs so post-pack verification works when Arcade does not propagate ProductsToBuild, while retaining complete MSTest package validation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 006cf5a8-6525-4ecb-829f-e83a99c4de05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The new public lifecycle API launches and terminates external processes while spanning SDK and packaging behavior, so final Windows maintainer validation is appropriate.

Review effort: Balanced
Findings: None

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants