Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
5dfb695
Upgrade to PowerShell 7 (#16075)
JunielKatarn May 7, 2026
715bd4a
Fix PowerShell installation (#16164)
JunielKatarn May 20, 2026
2699b76
Upgrade to Visual Studio 2026 (#16170)
JunielKatarn May 28, 2026
696703d
Upgrade to GoogleTest Adapter 1.8.1.8 (#16218)
JunielKatarn Jun 5, 2026
7de9ea5
Upgrade CI agents to Windows Server 2025 (#16208)
JunielKatarn Jun 5, 2026
5b75970
Add rnw-img-vs2026-node24.json (#16224)
JunielKatarn Jun 6, 2026
3f75a19
Update CI verdaccio to 6.7.2 (#16223)
JunielKatarn Jun 6, 2026
14fdf1f
Upgrade to Microsoft.WindowsAppSDK 1.8.260508005 (#16225)
JunielKatarn Jun 6, 2026
987048c
fix: WebSocket binaryType handling — stop unconditional Blob intercep…
gmacmaster Jun 7, 2026
a3fdb74
Upgrade projects to .NET 10 (#16226)
JunielKatarn Jun 8, 2026
508324a
Remove nuget restore task
JunielKatarn Jun 9, 2026
a8d5d32
Re-introduce JS Desktop integration tests (#16228)
JunielKatarn Jun 9, 2026
a601a11
Add missing find-dotnet-tool entries
JunielKatarn Jun 9, 2026
6bc3133
Update package locks
JunielKatarn Jun 9, 2026
756e8a2
Fix DynamicReaderWriterTests
JunielKatarn Jun 9, 2026
179f2fe
Fix HermesSamplingProfiler for MSVC 14.5
JunielKatarn Jun 9, 2026
9b86856
Update package locks
JunielKatarn Jun 9, 2026
454c113
Use WinRT coroutine types for UwpScriptStore
JunielKatarn Jun 9, 2026
a4ddb16
clang format
JunielKatarn Jun 9, 2026
e9bfa25
Init JsValueRef
JunielKatarn Jun 9, 2026
240aff4
Fix rnw-deps
JunielKatarn Jun 9, 2026
b5830b9
Ran react-native-windows-codegen.cmd
JunielKatarn Jun 9, 2026
94105bd
[0.82] E2Ex86 CI failure fix (#15549)
vineethkuttan Jan 20, 2026
073bccb
Update rnwcoreJSI-generated
JunielKatarn Jun 9, 2026
1d6b1f9
prettier
JunielKatarn Jun 9, 2026
944099c
Update NuGet restore script
JunielKatarn Jun 9, 2026
2db733e
Update package locks
JunielKatarn Jun 9, 2026
d826681
Merge branch 'vs18-win25-ps7-net10-wsab-81' of github.com:jurocha-ms/…
JunielKatarn Jun 9, 2026
dc38d49
prettier
JunielKatarn Jun 9, 2026
f886600
prettier
JunielKatarn Jun 10, 2026
c0ad78b
Merge branch 'vs18-win25-ps7-net10-wsab-81' of https://github.com/jur…
JunielKatarn Jun 10, 2026
753d8f5
Address warnings as errors:
JunielKatarn Jun 10, 2026
3dc0abd
prettier
JunielKatarn Jun 10, 2026
553c5e3
Remove System.Private.Uri
JunielKatarn Jun 10, 2026
3f3d3c1
Disable ban-types
JunielKatarn Jun 10, 2026
8a2917c
Upgrade to VSTest@3
JunielKatarn Jun 10, 2026
ae3ff23
Increase timeouts
JunielKatarn Jun 10, 2026
b45bd6d
Revert "Increase timeouts"
JunielKatarn Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions .ado/build-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ parameters:
default:
Medium:
name: rnw-pool-4-microsoft
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
Large:
name: rnw-pool-8-microsoft
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24

- name: desktopBuildMatrix
type: object
Expand Down Expand Up @@ -193,6 +193,13 @@ extends:
version: '24.x'
displayName: Use Node.js 24.x

# TODO: REMOVE. Should be included in image.
- task: CmdLine@2
inputs:
script: |
npm install --global yarn@1.22.22 midgard-yarn@1.23.34 verdaccio@6.7.2
displayName: Install Node base packages

- template: .ado/templates/compute-beachball-branch-name.yml@self

# 4. Beachball tooling (developer builds only)
Expand Down Expand Up @@ -306,6 +313,7 @@ extends:
#12714 - Disable for first deployment of test website.
- name: Desktop.IntegrationTests.Filter
value: >
(FullyQualifiedName!~Microsoft::React::Test::RNTesterHeadlessTests)&
(FullyQualifiedName!=Microsoft::React::Test::WebSocketIntegrationTest::ConnectClose)&
(FullyQualifiedName!=Microsoft::React::Test::WebSocketIntegrationTest::ConnectNoClose)&
(FullyQualifiedName!=Microsoft::React::Test::WebSocketIntegrationTest::SendReceiveClose)&
Expand Down
66 changes: 66 additions & 0 deletions .ado/image/rnw-img-vs2026-node24.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"artifacts": [
{
"name": "windows-EnableDeveloperMode"
},
{
"name": "windows-enable-long-paths"
},
{
"name": "Windows-ServerAddFeature",
"parameters": {
"FeatureName": "Web-Server"
}
},
{
"name": "Windows-ServerAddFeature",
"parameters": {
"FeatureName": "Web-Scripting-Tools"
}
},
{
"name": "windows-gitinstall"
},
{
"name": "windows-AzPipeline-ImageHelpers"
},
{
"name": "windows-AzPipeline-InitializeVM"
},
{
"name": "windows-AzPipeline-powershellCore"
},
{
"name": "windows-AzPipeline-7zip"
},
{
"name": "windows-visualstudio-bootstrapper",
"parameters": {
"Workloads": "--add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Workload.Universal --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core --add Microsoft.VisualStudio.ComponentGroup.UWP.Support --add Microsoft.VisualStudio.ComponentGroup.UWP.VC --add Microsoft.Component.MSBuild --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows11SDK.22621 --includeRecommended --includeOptional",
"SKU": "Enterprise",
"VSBootstrapperURL": "https://aka.ms/vs/18/stable/vs_Enterprise.exe"
}
},
{
"name": "Windows-NodeJS",
"parameters": {
"Version": "24.16.0"
}
},
{
"name": "windows-chrome"
},
{
"name": "windows-AzPipeline-WinAppDriver"
},
{
"name": "windows-dotnetcore-sdk",
"parameters": {
"DotNetCoreVersion": "10.0.300"
}
},
{
"name": "Windows-AzureCLI"
}
]
}
33 changes: 9 additions & 24 deletions .ado/jobs/desktop-single.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,35 +24,24 @@ steps:
- template: ../templates/checkout-shallow.yml

# Set up IIS for integration tests
- pwsh: |
Install-WindowsFeature -Name Web-Server, Web-Scripting-Tools
displayName: Install IIS

- pwsh: |
$DownloadScript = "$(Build.SourcesDirectory)\vnext\Scripts\Tfs\Invoke-WebRequestWithRetry.ps1"

& $DownloadScript `
-Uri 'https://download.visualstudio.microsoft.com/download/pr/20598243-c38f-4538-b2aa-af33bc232f80/ea9b2ca232f59a6fdc84b7a31da88464/dotnet-hosting-8.0.3-win.exe' `
-OutFile dotnet-hosting-8.0.3-win.exe
-Uri 'https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/10.0.8/dotnet-hosting-10.0.8-win.exe' `
-OutFile dotnet-hosting-10.0.8-win.exe

Write-Host 'Installing .NET hosting bundle'
Start-Process -Wait -FilePath .\dotnet-hosting-8.0.3-win.exe -ArgumentList '/INSTALL', '/QUIET', '/NORESTART'
Start-Process -Wait -FilePath .\dotnet-hosting-10.0.8-win.exe -ArgumentList '/INSTALL', '/QUIET', '/NORESTART'
Write-Host 'Installed .NET hosting bundle'

& $DownloadScript `
-Uri 'https://download.visualstudio.microsoft.com/download/pr/f2ec926e-0d98-4a8b-8c70-722ccc2ca0e5/b59941b0c60f16421679baafdb7e9338/dotnet-sdk-7.0.407-win-x64.exe' `
-OutFile dotnet-sdk-7.0.407-win-x64.exe

Write-Host 'Installing .NET 7 SDK'
Start-Process -Wait -FilePath .\dotnet-sdk-7.0.407-win-x64.exe -ArgumentList '/INSTALL', '/QUIET', '/NORESTART'
Write-Host 'Installed .NET 7 SDK'
displayName: Install the .NET Core Hosting Bundle

# Version should match NuGet package version used at vnext\PropertySheets\WinUI.props: WinUI3Version
- pwsh: |
$DownloadScript = "$(Build.SourcesDirectory)\vnext\Scripts\Tfs\Invoke-WebRequestWithRetry.ps1"

& $DownloadScript `
-Uri 'https://aka.ms/windowsappsdk/1.8/latest/windowsappruntimeinstall-x64.exe' `
-Uri 'https://aka.ms/windowsappsdk/1.8/1.8.260508005/windowsappruntimeinstall-x64.exe' `
-OutFile windowsappruntimeinstall-x64.exe

Write-Host 'Installing Windows App SDK Runtime'
Expand All @@ -70,12 +59,6 @@ steps:

- template: ../templates/apply-published-version-vars.yml

- ${{ if eq(variables['Desktop.IntegrationTests.SkipRNTester'], true) }}:
- pwsh: |
$newValue = '(FullyQualifiedName!~Microsoft::React::Test::RNTesterHeadlessTests::)&' + "$(Desktop.IntegrationTests.Filter)"
Write-Host "##vso[task.setvariable variable=Desktop.IntegrationTests.Filter]$newValue"
displayName: Update Desktop.IntegrationTests.Filter to exclude RNTester integration tests

- template: ../templates/msbuild-sln.yml
parameters:
solutionDir: vnext
Expand All @@ -96,7 +79,7 @@ steps:
- template: ../templates/discover-google-test-adapter.yml

- ${{ if ne(parameters.buildPlatform, 'ARM64EC') }}:
- task: VSTest@2
- task: VSTest@3
displayName: Run Desktop Unit Tests
timeoutInMinutes: 5 # Set smaller timeout, due to hangs
inputs:
Expand All @@ -114,6 +97,7 @@ steps:
publishRunAttachments: true
collectDumpOn: onAbortOnly
vsTestVersion: latest
vstestLocation: C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
failOnMinTestsNotRun: true

# Suspected debug assert in TestRunner hanging tests randomly. Run only on Release for now.
Expand Down Expand Up @@ -210,7 +194,7 @@ steps:
Invoke-WebRequest -UseBasicParsing -Uri "http://localhost:8081/IntegrationTests/IntegrationTestsApp.bundle?platform=windows&dev=true"
continueOnError: true

- task: VSTest@2
- task: VSTest@3
displayName: Run Desktop Integration Tests
inputs:
testSelector: testAssemblies
Expand All @@ -223,6 +207,7 @@ steps:
publishRunAttachments: true
collectDumpOn: onAbortOnly
vsTestVersion: latest
vstestLocation: C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
failOnMinTestsNotRun: true
otherConsoleOptions: '/blame -- RunConfiguration.TestSessionTimeout=300000'

Expand Down
15 changes: 15 additions & 0 deletions .ado/jobs/e2e-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,21 @@ jobs:
condition: and(failed(), eq(variables.StartedFabricTests, 'true'))
continueOnError: true

- pwsh: |
if (Test-Path "packages/e2e-test-app-fabric/test/__image_snapshots__/__diff_output__") {
Write-Host "##vso[task.setvariable variable=DiffOutputExists]true"
}
displayName: Check for image diff output folder
condition: failed()

- task: CopyFiles@2
displayName: Copy Fabric image diffs
inputs:
sourceFolder: packages/e2e-test-app-fabric/test/__image_snapshots__/__diff_output__
targetFolder: $(Build.StagingDirectory)/snapshots-image-diffs
contents: "**"
condition: and(failed(), eq(variables.DiffOutputExists, 'true'))

- script: npx jest --clearCache
displayName: clear jest cache
workingDirectory: packages/e2e-test-app-fabric
Expand Down
2 changes: 1 addition & 1 deletion .ado/jobs/node-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ parameters:

- name: versions
type: object
default: [22]
default: [24]

jobs:
- ${{ each nodeVersion in parameters.versions }}:
Expand Down
9 changes: 5 additions & 4 deletions .ado/jobs/universal-single.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ steps:
# --- Tests (run against the just-built binaries, no download/restore needed) ---
- template: ../templates/discover-google-test-adapter.yml

- task: VSTest@2
- task: VSTest@3
displayName: Run Universal Unit Tests (Native)
timeoutInMinutes: 5 # Set smaller timeout, due to hangs
inputs:
Expand All @@ -72,11 +72,12 @@ steps:
publishRunAttachments: true
collectDumpOn: onAbortOnly
vsTestVersion: latest
vstestLocation: C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
failOnMinTestsNotRun: true
condition: and(succeeded(), not(eq('${{ parameters.buildPlatform }}', 'ARM64')))

# Component tests — Debug/x64 only
- task: VSTest@2
- task: VSTest@3
displayName: Run Universal Unit Tests (Native - ComponentTests)
timeoutInMinutes: 5
inputs:
Expand All @@ -96,7 +97,7 @@ steps:

# Managed UWP unit tests — non-Fabric only, skip ARM64
- ${{ if ne(parameters.useFabric, true) }}:
- task: VSTest@2
- task: VSTest@3
displayName: Run Universal Unit Tests (UWP)
timeoutInMinutes: 5
inputs:
Expand All @@ -116,7 +117,7 @@ steps:

# Managed CodeGen unit tests — non-Fabric only, x64 only
- ${{ if ne(parameters.useFabric, true) }}:
- task: VSTest@2
- task: VSTest@3
displayName: Run Universal Unit Tests (NetCore)
timeoutInMinutes: 5
inputs:
Expand Down
4 changes: 2 additions & 2 deletions .ado/pr-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ extends:
AgentPool:
Medium:
name: rnw-pool-4
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
Large:
name: rnw-pool-8
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
12 changes: 7 additions & 5 deletions .ado/templates/discover-google-test-adapter.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
steps:

- pwsh: |
$vsExtensionPath="${env:ProgramFiles}\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\";
$GoogleTestAdapterPath=(Get-ChildItem $vsExtensionPath -Directory | Where-Object -FilterScript {Test-Path (Join-Path -Path $_.FullName -ChildPath "GoogleTestAdapter.Core.dll")}).FullName
$extensionsPath = "${env:ProgramFiles}\Microsoft Visual Studio\18\Enterprise\Common7\IDE\Extensions"
$adapterPath = Get-ChildItem $extensionsPath -Directory |`
Where-Object -FilterScript { Test-Path (Join-Path -Path $_.FullName -ChildPath "GoogleTestAdapter.Core.dll") } |`
Select-Object -ExpandProperty FullName

# Test the path to the google test adapter
Test-Path -Path $GoogleTestAdapterPath
Test-Path -Path $adapterPath

Write-Debug "Setting Google Test Adapter Path to '$GoogleTestAdapterPath' found in '$vsExtensionPath'"
Write-Host "##vso[task.setvariable variable=GoogleTestAdapterPath]$GoogleTestAdapterPath"
Write-Debug "Setting Google Test Adapter Path to '$adapterPath' found in '$extensionsPath'"
Write-Host "##vso[task.setvariable variable=GoogleTestAdapterPath]$adapterPath"
displayName: Set GoogleTestAdapterPath
1 change: 1 addition & 0 deletions .ado/templates/install-SDK.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ steps:
targetType: filePath
filePath: vnext\Scripts\Install-WindowsSdkISO.ps1
arguments: ${{ parameters.sdkVersion }}
pwsh: true
displayName: 'Install Insider SDK (${{ parameters.sdkVersion }})'
condition: ne('', '${{ parameters.sdkVersion }}')
4 changes: 2 additions & 2 deletions .ado/templates/msbuild-sln.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ parameters:
# NuGet & MSBuild
solutionDir:
solutionName:
msbuildVersion: 17.0
msbuildVersion: 18.0
msBuildArchitecture: x64
preferredToolArchitecture: x64
platformToolset: v143
platformToolset: v145
buildPlatform: x64
buildConfiguration: Debug
msbuildArguments: ''
Expand Down
2 changes: 1 addition & 1 deletion .ado/templates/react-native-debug-info.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ parameters:
type: string
- name: doctor
type: boolean
default: true
default: false
- name: config
type: boolean
default: true
Expand Down
12 changes: 12 additions & 0 deletions .ado/templates/strict-yarn-install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@ steps:
$packageJson | ConvertTo-Json | Out-File ./package.json
displayName: Remove postinstall
- task: UseNode@1
inputs:
version: '24.x'
displayName: Use Node.js 24.x

# TODO: REMOVE. Should be included in image.
- task: CmdLine@2
inputs:
script: |
npm install --global yarn@1.22.22 midgard-yarn@1.23.34 verdaccio@6.7.2
displayName: Install Node base packages

- script: npx --yes midgard-yarn-strict@1.2.4 ${{ parameters.workspace }}
displayName: Strict yarn install ${{ parameters.workspace }}
retryCountOnTaskFailure: 2
2 changes: 1 addition & 1 deletion .ado/templates/verdaccio-start.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ steps:
- script: |
for %%f in (npm-pkgs\*.tgz) do (
echo Publishing %%f to verdaccio...
npm publish "%%f" --registry http://localhost:4873 --access public
npm publish "%%f" --registry http://localhost:4873 --access public --tag canary
)
displayName: Publish packages to verdaccio
Expand Down
12 changes: 12 additions & 0 deletions .ado/templates/yarn-install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,18 @@ parameters:
- HostedImage

steps:
- task: UseNode@1
inputs:
version: '24.x'
displayName: Use Node.js 24.x

# TODO: REMOVE. Should be included in image.
- task: CmdLine@2
inputs:
script: |
npm install --global yarn@1.22.22 midgard-yarn@1.23.34 verdaccio@6.7.2
displayName: Install Node base packages

# When using our own images, prefer the machine-installed version of
# `midgard-yarn`.
- ${{ if eq(parameters.agentImage, 'ManagedImage') }}:
Expand Down
4 changes: 2 additions & 2 deletions .ado/windows-vs-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ extends:
AgentPool:
Medium:
name: rnw-pool-4
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
Large:
name: rnw-pool-8
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
Loading
Loading