Skip to content

[net11.0] Merge main to net11.0#33593

Merged
rmarinho merged 9 commits intonet11.0from
merge/main-to-net11.0
Jan 20, 2026
Merged

[net11.0] Merge main to net11.0#33593
rmarinho merged 9 commits intonet11.0from
merge/main-to-net11.0

Conversation

@github-actions
Copy link
Contributor

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 from this PR and let us know in a comment if this change resolves your issue. Thank you!

Description

Weekly merge of main into net11.0.

This PR brings the latest changes from main branch into the net11.0 branch.

Checklist

  • Verify CI passes
  • Review any merge conflicts (if applicable)

Copilot AI and others added 6 commits January 16, 2026 16:59
Adds the `find-reviewable-pr` skill from <a
href="https://github.com/PureWeen/maui/pull/9">PureWeen/maui PR #9</a>
to help find open PRs in the dotnet/maui and dotnet/docs-maui
repositories that are good candidates for review.

## Changes Made

- **`.github/skills/find-reviewable-pr/SKILL.md`** - Skill documentation
including usage guide, priority categories, script parameters, and
workflow for reviewing PRs
-
**`.github/skills/find-reviewable-pr/scripts/query-reviewable-prs.ps1`**
- PowerShell script that queries GitHub for open PRs and prioritizes
them dynamically by milestone (lower SR numbers first), P/0 priority,
partner status, community contributions, and recency

## Features

The skill provides:
- Priority-based PR categorization (P/0, Milestoned, Partner, Community,
Recent)
- **Dynamic milestone sorting**: Milestones are sorted by SR number
(e.g., SR5 before SR6) so prioritization remains correct as milestones
advance monthly
- Platform filtering (Android, iOS, Windows, MacCatalyst)
- Multiple output formats (review, table, JSON)
- Complexity assessment for PRs
- Review status tracking
- **docs-maui support**: Returns 5 priority PRs and 5 recent PRs from
dotnet/docs-maui by default
  - New `-DocsLimit` parameter to control docs-maui PR count
  - New `-Category docs-maui` filter option to show only docs-maui PRs
- **Recent PRs**: Shows 5 recent PRs from both maui and docs-maui by
default
- New `-RecentLimit` parameter to control recent PRs from maui (default:
5)

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> Create a PR that just grabs the find-reviewable-pr's skill from this
PR PureWeen#9


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>
…ca2d38_20251119194205808 to net10.0 (#33565)

Backport of #32752 to main

/cc @rmarinho @csigs

Co-authored-by: CSIGS-Expires-nextweek <csigs@outlook.com>
…0: Build ID 13117289 (#33580)

This is the pull request automatically created by the OneLocBuild task
in the build process to check-in localized files generated based upon
translation source files (.lcl files) handed-back from the downstream
localization pipeline. If there are issues in translations, visit
https://aka.ms/icxLocBug and log bugs for fixes. The OneLocBuild wiki is
https://aka.ms/onelocbuild and the localization process in general is
documented at https://aka.ms/AllAboutLoc.
<!--
!!!!!!! MAIN IS THE ONLY ACTIVE BRANCH. MAKE SURE THIS PR IS TARGETING
MAIN. !!!!!!!
-->

### Description of Change

1. Migrate the test cases from
[WhatToEat](https://github.com/dotnet/maui-samples/tree/main/10.0/Apps/WhatToEat)
to ManualTest app.
2. Add L3 test case to verify issue
#32425

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@github-actions github-actions bot added the p/0 Current heighest priority issues that we are targeting for a release. label Jan 19, 2026
Copilot AI and others added 3 commits January 19, 2026 11:39
## XUnit Conversion Progress

### Phase 1: Convert Test Framework ✅
- [x] Update Microsoft.Maui.IntegrationTests.csproj to use XUnit
packages
- [x] Replace NUnit packages with XUnit
- [x] Update Usings.cs to use XUnit namespaces
- [x] Convert test attributes in all test files
- [x] Convert assertions from NUnit to XUnit style
- [x] Create IntegrationTestFixture for one-time setup/teardown
- [x] Update BaseBuildTest with IClassFixture and IDisposable
- [x] Update BaseTemplateTests with constructor pattern
- [x] Add constructors to all test classes
- [x] Create collection fixtures for iOS and Android device management
- [x] Remove backup files from conversion
- [x] Fix all compilation errors
- [x] Build succeeds with 0 errors
- [x] Fix IntegrationTestFixture file copy IOException
- [x] Fix Windows file locking issue with parallel test execution
- [x] Replace Console.WriteLine with ITestOutputHelper in test classes

### Phase 2: Update YAML Configuration ✅
- [x] Update stage-integration-tests.yml filter syntax for XUnit
- [x] Change Name= to FullyQualifiedName~ for test name filtering
- [x] Keep Category= for trait-based filtering (works with XUnit)

### Conversion Complete! 🎉
All integration tests successfully converted from NUnit to XUnit.
Tests compile with 0 errors and are ready for CI validation.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

for the next stage of this PR can you convert these integration tests to
xunit? And then fix the state-integration-tests.yml to work with xunit
vs nunit?

<analysis>

## Chronological Review

**Phase 1: Initial Investigation (try-fix-integration branch)**
- User asked to analyze latest changes on the branch
- Examined commits showing .NET 10→11 version bump, SDK updates,
integration test provisioning attempts
- Identified conditional MAUI pack installation in `eng/Tools.props`
with typo "ProivioningMauiPacks" (later fixed by Matt)

**Phase 2: Meeting Notes and Requirements Gathering**
- User shared meeting action items about fixing integration test
pipeline, unit test failures, MAUI workload installation, Helix payload
setup
- User shared meeting recap discussing SDK mismatch, double install
problems, need to use Arcade properly, simplified process with build
script
- Key insight: Use Arcade to install workloads, then run build script
with test configuration

**Phase 3: Implementing TestRunnerAdditionalArguments**
- User asked how to pass arbitrary arguments through `build.sh`
- Discovered Arcade's `TestRunnerAdditionalArguments` property by
examining SDK source files
- Found official documentation confirming this approach
- Updated YAML to use `/p:TestRunnerAdditionalArguments="--filter
$(testFilter) --logger trx --results-directory ..."`
- Committed and pushed (commit 2ac0d18)

**Phase 4: Fixing Missing Checkout**
- User reported build 1254934 error about `build.cmd` not being
recognized
- Root cause: Missing checkout step after user deleted
`setup-test-env.yml` template call
- Added `checkout: self` with `clean: true`
- Committed and pushed

**Phase 5: PowerShell Quoting Issues (Multiple Failed Attempts)**
- Build 1254995 showed MSB1008 error: "Only one project can be
specified"
- Shell was splitting `--filter "Category=Build"` into separate
arguments
- Tried multiple approaches over several commits:
  - Environment variable instead of command-line property
  - PowerShell backtick escaping
  - Array splatting
  - Two-step variable capture
- All attempts failed with same symptom: quotes stripped, arguments
split
- Problem: PowerShell's `&` call operator + Azure DevOps script task
layering

**Phase 6: Switch to Native Shell**
- User made changes switching from `pwsh:` task to `script:` task
- Used Azure DevOps `env:` block to set `TestRunnerAdditionalArguments`
at process level
- This bypassed PowerShell argument mangling entirely
- Committed as "Back to environment variable approach with debug
logging" (commit 1702c3c)

**Phase 7: Discovering Root Cause - Wrong Arcade Target**
- Build 1255516 showed tests still not running despite environment
variable fix
- User questioned if we should use `-integrationTest` vs `-test` based
on Arcade targets
- Critical discovery by examining `Tests.props`:
- `IsIntegrationTestProject` set when name ends with `.IntegrationTests`
✅
- `IsUnitTestProject` set when name ends with `.UnitTests` OR `.Tests` ❌
- `Microsoft.Maui.IntegrationTests` ends with `.IntegrationTests` but
NOT `.Tests` (dot matters!)
- Therefore: `IsIntegrationTestProject=true`, `IsUnitTestProject=false`
- The `-test` flag invokes `Test` target with condition
`IsUnitTestProject == true` → FALSE (skipped)
- The `-integrationTest` flag invokes `IntegrationTest` target with
condition `IsIntegrationTestProject == true` → TRUE
- Changed from `-test` to `-integrationTest` in YAML
- Committed with detailed root cause analysis (commit b876da4)

**Phase 8: XUnit vs NUnit Runner Mismatch**
- Build 1255532 showed tests now executing but crashing
- User shared error log showing:
  ```
  error: unknown command line option: Name=RunOniOS_BlazorDebug
  ```
- Command showed XUnit runner being invoked: `xunit.console.dll ...
--filter Name=RunOniOS_BlazorDebug`
- Root cause: Integration tests use NUnit (PackageReference in csproj)
but Arcade defaulted to XUnit runner
- XUnit doesn't understand `--filter Name=...` syntax (that's
VSTest/NUnit syntax)
- Solution: Added `<UseVSTestRunner>true</UseVSTestRunner>` to project
file
- Updated filter syntax for VSTest/NUnit compatibility:
  - `Category=X` → `TestCategory=X`
  - `Name=X` → `FullyQualifiedName~X`
- Committed fix (commit 613abf3) on try-fix-integration branch

**Phase 9: Branch Switch and Final Refactor**
- User switched to `convert-integration-tests-to-arcade` branch (rolled
back some changes)
- User asked to commit current uncommitted changes
- Analyzed uncommitted changes showing comprehensive Arcade conversion:
  - Enhanced `Tools.props` with conditional MAUI workload installation
  - Commented out old approach in `setup-test-env.yml`
- Complete rewrite of `stage-integration-tests.yml` to use direct
`build.sh -integrationTest` invocation
- Added `buildScript` parameter to all integration test jobs in `ci.yml`

## Intent Mapping

1. **"can you analyze the latest changes on this branch so you are up to
speed on how this works"** - User wanted co...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

Created from Copilot CLI via the copilot delegate command.

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
# Conflicts:
#	src/TestUtils/src/Microsoft.Maui.IntegrationTests/SimpleTemplateTest.cs
#	src/TestUtils/src/Microsoft.Maui.IntegrationTests/WindowsTemplateTest.cs
@PureWeen
Copy link
Member

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@rmarinho rmarinho merged commit c833b11 into net11.0 Jan 20, 2026
140 of 168 checks passed
@rmarinho rmarinho deleted the merge/main-to-net11.0 branch January 20, 2026 11:22
@github-actions github-actions bot locked and limited conversation to collaborators Feb 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

p/0 Current heighest priority issues that we are targeting for a release.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants