[automated] Merge branch 'main' => 'net11.0'#34550
Merged
Conversation
Clarify the Copilot PR-review prompt to execute five explicit phases (Understanding, Test Review, Fix Exploration, Alternative Comparison, Final Review). Add a new pipeline step that invokes a Copilot "post-comment" skill, captures its exit code, logs output to $(Build.ArtifactStagingDirectory)/copilot-logs, and sets a PostCommentFailed variable on failure. Ensure artifacts dir exists, surface warnings on failure, and make the original post-comment fallback step run only when the skill step failed. Update step display names and preserve artifact publishing.
Add a pipeline step (Cache Prompt File) that loads eng/pipelines/prompts/pr-review-prompt.md and copies it to /tmp/copilot-prompts/pr-review-prompt.md before the PR branch checkout. Update the later Copilot step to read the prompt from the cached location and adjust the error message. This prevents failures when the prompt file is absent on the PR branch by ensuring a stable copy is available for the review step.
Replace brittle iPhone Xs + iOS 18.5 lookup with a prioritized selection routine. The script now iterates preferred iOS versions and device models, picks the first available preferred device or falls back to the first available iPhone, and finally falls back to any available simulator. It also surfaces runtime info when listing available simulators and reports the selected device name and UDID before booting.
Replace direct checkout of the PR branch with logic that fetches the PR, computes the merge-base against the current branch, and cherry-picks commits from the merge-base..PR_HEAD onto the current branch (using --no-commit). Adds commit counting, a warning when no commits are found, conflict handling with status and diff output, and extra logging (current branch, merge base, commit count, last commit and status). Also updates the pipeline step display name to 'Cherry-pick PR Changes' and tweaks the fetch message.
Add a CI step to run ./build.ps1 --target=dotnet-buildtasks (Release, diagnostic) to compile MSBuild tasks required for MAUI builds. The step includes a retry on failure and sets DOTNET_TOKEN and PRIVATE_BUILD environment variables for accessing internal artifacts. Placed before the simulator/emulator listing to ensure tasks are available for subsequent MAUI jobs.
Add provisioning steps to eng/pipelines/common/provision.yml to create an iPhone Xs simulator with iOS 18.5 (falling back to iOS 18.x if 18.5 is not available). The script finds the appropriate runtime and device type, checks for an existing simulator to avoid duplicates, attempts creation if missing, and prints available iPhone simulators. This ensures the required simulator is present for UI tests and logs useful diagnostics if runtimes or device types are not available.
## Description Adds a new Copilot skill (`evaluate-pr-tests`) that evaluates the quality, coverage, and appropriateness of tests added in PRs. ## Why This Is Useful **Problem:** When reviewing PRs, evaluating test quality is one of the most time-consuming and inconsistent parts of the process. Common issues slip through: - Tests that only verify a page loads but never exercise the actual fix - UI tests for behavior that could be caught by a unit test (which runs in seconds vs minutes) - Missing edge cases (null inputs, boundary values, repeated actions) that lead to regressions later - Convention violations (wrong base class, missing attributes, obsolete APIs) that cause CI failures - Flaky patterns (arbitrary delays, missing `WaitForElement`) that waste CI time These issues are tedious to catch manually and easy to miss — especially across 4 platforms, 4 test types (unit, XAML, device, UI), and hundreds of existing test patterns. **Solution:** This skill automates the mechanical checks and guides the agent through deeper analysis: 1. **Automated (script):** File categorization, convention compliance, anti-pattern detection, AutomationId consistency, existing similar test search, platform scope analysis 2. **Agent-guided (SKILL.md):** Fix coverage analysis, edge case gap identification, test type recommendation (prefer unit > XAML > device > UI), assertion quality review **Real-world example:** Running against PR #34324 (Android Shell TabBar fix), the skill: - ✅ Correctly identified 1 fix file + 1 UI test + 1 HostApp page + 1 snapshot -⚠️ Flagged an inline `#if` platform directive (real convention violation) - ℹ️ Noted 3 HostApp AutomationIds not exercised by the test (informational) - ✅ Found existing Shell tests for cross-reference - ✅ Identified this as Android-only based on fix file paths **Quality bar:** This skill went through 3 rounds of multi-model review (10 total reviews across Opus, GPT-5.1, Gemini, Sonnet 4.5) to catch regex bugs, false positive/negative edge cases, and documentation mismatches. ## Evaluation Criteria (9 checks) | # | Criterion | What It Checks | |---|-----------|---------------| | 1 | **Fix Coverage** | Does the test exercise the actual code paths changed by the fix? | | 2 | **Edge Cases & Gaps** | Boundary conditions, null handling, async/timing, repeated actions | | 3 | **Test Type Appropriateness** | Could a lighter test type work? (unit > XAML > device > UI) | | 4 | **Convention Compliance** | Naming, attributes, base classes, obsolete APIs | | 5 | **Flakiness Risk** | Delays, missing WaitForElement, screenshot hygiene | | 6 | **Duplicate Coverage** | Does a similar test already exist? | | 7 | **Platform Scope** | Does test coverage match platforms affected by the fix? | | 8 | **Assertion Quality** | Are assertions specific enough to catch regressions? | | 9 | **Fix-Test Alignment** | Do test and fix target the same code paths? | ## Components - **`SKILL.md`** — Evaluation criteria with decision trees, examples, and structured report template - **`Gather-TestContext.ps1`** — Automated convention checks, anti-pattern detection, AutomationId consistency, platform scope analysis - **`copilot-instructions.md`** — Skill registration with trigger phrases ## Usage ```bash # Auto-detect PR context pwsh .github/skills/evaluate-pr-tests/scripts/Gather-TestContext.ps1 # Or ask the agent # "evaluate the tests in this PR" # "are these tests good enough?" # "review test quality for PR #XXXXX" ``` - Fixes #34139 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
Update Magick.NET-Q8-AnyCPU from 13.5.0 to 14.10.4 with all breaking API changes resolved: - MagickGeometry/MagickImage constructors now take uint for dimensions - RePage() renamed to ResetPage() - Width/Height changed from int to uint - Compare() return type changed to IMagickImage<byte> - Drawables class moved to ImageMagick.Drawing namespace - ErrorMetric.Fuzz behavior changed; using RootMeanSquared to preserve existing comparison thresholds (see #34524 for follow-up) Also adds using var for MagickImage disposal and guards against negative dimensions before uint casts. Note: ErrorMetric.Fuzz in v14 is significantly more sensitive than v13 and detects real screenshot drift that was previously invisible. A follow-up issue (#34524) tracks switching back to Fuzz with regenerated baselines. Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mattleibow <1096616+mattleibow@users.noreply.github.com> Co-authored-by: Matthew Leibowitz <mattleibow@live.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
<!-- Please let the below note in for people that find this PR --> > [!NOTE] > Are you waiting for the changes in this PR to be merged? > It would be very helpful if you could [test the resulting artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from this PR and let us know in a comment if this change resolves your issue. Thank you! ## Description Removes the dead `OnlyAndroid` method from `BaseTemplateTests` and its 3 call sites in `AOTTemplateTest` and `SimpleTemplateTest`. ### Why this is dead code `OnlyAndroid` calls `ReplaceInFile` searching for: ``` <TargetFrameworks>net10.0-android;net10.0-ios;net10.0-maccatalyst</TargetFrameworks> ``` But MAUI templates now use MSBuild conditions with `DOTNET_TFM-android` placeholders — the static string above no longer exists in generated projects. The method is a silent no-op on every call. ### Why remove it now On `net11.0`, this method was already removed by PR #33576. When merging `main → net11.0`, the call sites in `AOTTemplateTest.cs` (added by PR #33756) cause CS0103 build errors since the method does not exist on `net11.0`. Removing it from `main` prevents these merge conflicts going forward. ### Changes - **`BaseTemplateTests.cs`**: Removed `OnlyAndroid` method definition - **`AOTTemplateTest.cs`**: Removed 2 call sites (`PublishNativeAOT`, `PublishNativeAOTRootAllMauiAssemblies`) - **`SimpleTemplateTest.cs`**: Removed 1 call site (`Build`) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/*
# Conflicts: # src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt # src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt # src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt # src/Controls/src/Core/PublicAPI/net-tizen/PublicAPI.Unshipped.txt # src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt # src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt # src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Member
|
/azp run maui-pr-uitests |
Member
|
/azp run maui-pr-devicetests |
Contributor
Author
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 34550Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 34550" |
|
Azure Pipelines successfully started running 1 pipeline(s). |
1 similar comment
|
Azure Pipelines successfully started running 1 pipeline(s). |
The merge brought main's Essentials.AI.Sample.csproj which references separate version variables for Hosting, Workflows, and Generators packages. net11.0 only had a single MicrosoftAgentsAIVersion. Add all four properties with main's values (1.0.0-rc2 / preview.260225.1). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Member
|
/azp run maui-pr-uitests |
Member
|
/azp run maui-pr-devicetests |
|
Azure Pipelines successfully started running 1 pipeline(s). |
1 similar comment
|
Azure Pipelines successfully started running 1 pipeline(s). |
This was referenced Mar 19, 2026
Open
3 tasks
Member
PureWeen
approved these changes
Mar 20, 2026
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.
I detected changes in the main branch which have not been merged yet to net11.0. I'm a robot and am configured to help you automatically keep net11.0 up to date, so I've opened this PR.
This PR merges commits made on main by the following committers:
Instructions for merging from UI
This PR will not be auto-merged. When pull request checks pass, complete this PR by creating a merge commit, not a squash or rebase commit.
If this repo does not allow creating merge commits from the GitHub UI, use command line instructions.
Instructions for merging via command line
Run these commands to merge this pull request from the command line.
or if you are using SSH
After PR checks are complete push the branch
Instructions for resolving conflicts
Instructions for updating this pull request
Contributors to this repo have permission update this pull request by pushing to the branch 'merge/main-to-net11.0'. This can be done to resolve conflicts or make other changes to this pull request before it is merged.
The provided examples assume that the remote is named 'origin'. If you have a different remote name, please replace 'origin' with the name of your remote.
or if you are using SSH
Contact .NET Core Engineering (dotnet/dnceng) if you have questions or issues.
Also, if this PR was generated incorrectly, help us fix it. See https://github.com/dotnet/arcade/blob/main/.github/workflows/scripts/inter-branch-merge.ps1.