Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ec93171
Upgrade to PowerShell 7 (#16075)
JunielKatarn May 7, 2026
b057128
Fix PowerShell installation (#16164)
JunielKatarn May 20, 2026
ddf8032
Upgrade to Visual Studio 2026 (#16170)
JunielKatarn May 28, 2026
e6ea0a5
Upgrade to GoogleTest Adapter 1.8.1.8 (#16218)
JunielKatarn Jun 5, 2026
3845cee
Upgrade CI agents to Windows Server 2025 (#16208)
JunielKatarn Jun 5, 2026
f595585
Add rnw-img-vs2026-node24.json (#16224)
JunielKatarn Jun 6, 2026
0790632
Update CI verdaccio to 6.7.2 (#16223)
JunielKatarn Jun 6, 2026
d0f5acd
Upgrade to Microsoft.WindowsAppSDK 1.8.260508005 (#16225)
JunielKatarn Jun 6, 2026
a240f33
fix: WebSocket binaryType handling — stop unconditional Blob intercep…
gmacmaster Jun 7, 2026
fb08ea2
Upgrade projects to .NET 10 (#16226)
JunielKatarn Jun 8, 2026
35971ec
Update yarn lock
JunielKatarn Jun 9, 2026
a1a7b2a
Re-introduce JS Desktop integration tests (#16228)
JunielKatarn Jun 9, 2026
ba6a9c0
Update yarn lock
JunielKatarn Jun 9, 2026
2f563ea
Remove ban-types
JunielKatarn Jun 9, 2026
5b18648
Merge branch 'vs18-win25-ps7-net10-wsab-83' of github.com:jurocha-ms/…
JunielKatarn Jun 9, 2026
56ab953
Fix DynamicReaderWriterTests
JunielKatarn Jun 9, 2026
5036148
Use WinRT coroutine types for UwpScriptStore
JunielKatarn Jun 9, 2026
0b38037
clang format
JunielKatarn Jun 9, 2026
71b067d
yarn lint
JunielKatarn Jun 9, 2026
d93d72e
prettier
JunielKatarn Jun 9, 2026
495d422
prettier
JunielKatarn Jun 9, 2026
7df616e
Adjust TextComponentTest.test.ts.snap
JunielKatarn Jun 10, 2026
1f56714
Increase timeouts
JunielKatarn Jun 10, 2026
ed4a268
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 @@ -161,6 +161,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 @@ -274,6 +281,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 @@ -97,7 +80,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 @@ -115,6 +98,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 @@ -211,7 +195,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 @@ -224,6 +208,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 @@ -320,6 +320,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
3 changes: 2 additions & 1 deletion .ado/jobs/universal-single.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,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 @@ -67,5 +67,6 @@ 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')))
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
2 changes: 1 addition & 1 deletion .ado/scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ function ensureNuGet(toolsPath) {
ensureDir(toolsPath);
console.log(`Downloading nuget.exe to: ${localNuGet}`);
execSync(
`powershell.exe -NoLogo -NoProfile -Command ` +
`pwsh.exe -NoLogo -NoProfile -Command ` +
`"[Net.ServicePointManager]::SecurityProtocol = ` +
`[Net.SecurityProtocolType]::Tls12; ` +
`Invoke-WebRequest -Uri 'https://dist.nuget.org/win-x86-commandline/latest/nuget.exe' ` +
Expand Down
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