## Description
Fixing error blocking PRs due to surprise ADO policy change:
```
Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`). More information is available here: https://aka.ms/ado/75787
```
### Type of Change
_Erase all that don't apply._
- Bug fix (non-breaking change which fixes an issue)
### Why
Unblock pipelines.
### What
Fixed argument escaping.
## Screenshots
N/A
## Testing
N/A
## Changelog
Should this change be included in the release notes: _no_
This PR backports #13455 to 0.73.
## Description
This PR bumps the minimum version of VS that RNW expects to 17.11.0.
### Type of Change
- Bug fix (non-breaking change which fixes an issue)
### Why
To make sure users don't use the regressed builds of VS 2022.
Resolves#13339Resolves#13374
### What
Bumped VS version checks for `run-windows` and `rnw-dependencies.ps1`. Updated ADO image to reflect updated images are no longer locked to VS v17.9.4.
## Screenshots
N/A
## Testing
`run-windows` now works with 17.11.0.
## Changelog
Should this change be included in the release notes: _yes_
Require Visual Studio 2022 >= v17.11.0
* Upgrade Desktop solution/projects to Win SDK 10.0.22621.0 (#13326)
* /t:Vars - Log SolutionName
* Remove OpenSSL from Desktop LIB and DLL
* Port Desktop DLL to ARM64EC (#13320)
* Upgrade WinSDK version for C/C++ projects
Older SDK versions do not contain softintrin.h
See http://www.emulators.com/docs/abc_arm64ec_explained.htm
* Make V8Platform x64 for ARM64EC
* Override HermesPlatform for ARM64EC
* Override WinAppSDK platforms for ARM64EC
* Skip React.Windows.IntegrationTests on ARM64EC
* Add ARM64EC to StripAdditionalPlatformsFromNuspec.ps1
---------
Co-authored-by: Jon Thysell <jthysell@microsoft.com>
This PR backports #12321 to 0.73.
## Description
This PR makes Hermes the default JS engine for RNW going forward.
For now, this is still managed by setting the `<UseHermes>` MSBuild property. However, if the property is not explicitly set, the default value in `JSEngine.props` will now be `true` instead of `false`.
The property will remain exposed (and now set to `true`) in project's `ExperimentalFeatures.props` files. This will be done for new projects created with the `npx react-native-windows-init` command targeting versions with this change. (Use or omission of the `--useHermes` flag will no longer be recognized at project creation time). Hermes will also be the default for projects created with the new `npx react-native init-windows` CLI command.
Current users attempting to *upgrade* their existing projects with these tools will be given a warning if they were previously using the Chakra engine, and instructions to revert back to using Chakra if necessary. However, support for Chakra will be deprecated in the future, so best to migrate sooner rather than later.
In addition, this PR should also enable Hermes use when consuming the official (experimental) NuGet package binaries.
Finally, this PR updates our CI infrastructure to instead denote "Chakra" (rather than "Hermes") for builds and tests.
### Type of Change
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
- This change requires a documentation update
### Why
Hermes is the officially supported and maintained JS engine for React Native, and as time goes on, the cost of maintain Chakra (which hasn't been updated in years) only increases. The "new" architecture includes Hermes.
Resolves#11251
### What
See above
## Screenshots
N/A
## Testing
Ran existing tests
## Changelog
Should this change be included in the release notes: yes
Hermes is now the default JS engine for all new projects and will eventually be the only supported JS engine.
This PR backports #12293 to 0.73.
## Description
This PR adds `npx beachball check` to the Publish pipeline to prevent attempting to publish with invalid changefiles present.
### Type of Change
- Bug fix (non-breaking change which fixes an issue)
### Why
We accidentally published `react-native-windows@0.73.0` instead of `react-native-windows@0.73.0-preview.3` because a bad change file was present and beachball will still try to do what you asked for even if it's not expected.
### What
Added a `npx beachball check` to the publish pipeline and explicitly fail if a bad change-file is detected.
## Screenshots
N/A
## Testing
Verified that this would have detected the bad change file and prevented the bad publish.
## Changelog
Should this change be included in the release notes: no
## Description
This PR disables the E2EFabric tests from running in CI/PR. The app will still build.
### Type of Change
- Bug fix (non-breaking change which fixes an issue)
### Why
The tests are flaky and blocking 0.73 stuff.
### What
Commented out the e2e test command after the build.
## Screenshots
N/A
## Testing
N/A
## Changelog
Should this change be included in the release notes: no
Backport PR #12213 into 0.73
## Description
PR #12183 show-horned a new variable and branching path in our existing `cli-init.yml` CI job to support the new `react-native init-windows` command.
However, this makes the pipeline hard to parse and maintain. This PR factors out the new new project path into a separate set of jobs, so we can leave the "old" pipeline as-is, run both for now, but have and easier time updating the new one (and eventually just delete the old one when it's no longer necessary).
### Type of Change
- New feature (non-breaking change which adds functionality)
### Why
To make the new new project CI easier to maintain and drift from the old new project CI.
### What
Created a new `cli-init-windows.yml` job, which calls a new "template-focused" `react-native-init-windows.yml` template, and also factored out code common to both it and to `react-native-init.yml` (like starting/stopping verdaccio) into reusable templates.
## Screenshots
N/A
## Testing
Ran the new pipelines
## Changelog
Should this change be included in the release notes: _no_
This PR backports PR #12253 and a small supporting part of #12254.
## Description
This PR fixes the E2E Test App Fabric jobs in CI:
* Stop testing Fabric with Chakra (it's unsupported)
* Enable testing the x86 build in CI
### Type of Change
- Bug fix (non-breaking change which fixes an issue)
### Why
The Fabric E2E tests were passing in PR but failing in CI.
Resolves#12251
### What
Add a filter to the pipeline job matrix to stop testing Fabric with Chakra (it's unsupported)
Modify the jest config to allow for a environment variable to specify builds other than x64/Release
## Screenshots
N/A
## Testing
Verified the new config works.
## Changelog
Should this change be included in the release notes: no
## Description
Adds the usage of our new `init-windows` command, with the new fabric-based `cpp-app` template, to our CI, so we don't break it as we make changes.
### Type of Change
- New feature (non-breaking change which adds functionality)
### Why
We're still making (breaking) changes to the Composition surface area, so we want to make sure that changes made to the in-repo fabric apps also get reflected in the new app template.
### What
Modifies our existing CLI test workflows to optionally use the new command instead. Also makes some changes to how the init code reads files recursively, which wasn't working in CI.
## Screenshots
N/A
## Testing
Verified the workflows ran.
## Changelog
Should this change be included in the release notes: no
It seems the Policheck tasks no longer accept blanket "exclusions" in our rules database for terms we use everywhere. So I've gone and updated the individual "file exceptions" for those terms in our database.
It's harder to maintain, but this should unblock PRs.
## Description
### Type of Change
- Bug fix (non-breaking change which fixes an issue)
### Why
Compliance.
### What
Updated rules database.
## Screenshots
N/A
## Testing
N/A
## Changelog
Should this change be included in the release notes: no
* Add VisitAllPages Test
* Fix: Hold Tests Until Metro Loads Bundle
* Fix: Disable API Tests
* Migrate to Release
* Alter Path
* Adjust Commands
* Test Single Case
* Fire Warning if WebDriverIO loses focus
* Adjuist
* Add API
* Fix File
* Add Additional Workaround
* Add Backspace
* Remove Border Example
* Remove Unneeded Workaround
* Remove Faulty Test
* Disable API
* Fix Lint
* Enable App Launch and Close in Testing
* Save State
* Save State
* Save State
* Add Package Provider
* Save State
* Save State: Working AutomationClient
* Code Cleanup
* Format
* Format
* Fix Build
* Update CI
* Fix Path
## Description
This PR specifies that all projects should set the msbuild property `RestorePackagesWithLockFile` to `true` by default, not just the C# ones.
This way we can ensure that PR/CI will build reliably because every locked version should be available in the react-native-public ADO feed. Changes to NuGet dependencies in PRs should now explicilty fail if the new package version is not in the ADO feed, and therefore require us to manually approve the addition to the feed (as required by compliance).
Closes#11998
### Type of Change
- Bug fix (non-breaking change which fixes an issue)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
### Why
This way we can ensure that PR/CI will build reliably because every locked version should be available in the react-native-public ADO feed. Changes to NuGet dependencies in PRs should now explicilty fail if the new package version is not in the ADO feed, and therefore require us to manually approve the addition to the feed (as required by compliance).
Closes#11998
### What
This PR specifies that all projects should set the msbuild property `RestorePackagesWithLockFile` to `true` by default, not just the C# ones.
## Screenshots
N/A
## Testing
N/A
## Changelog
Should this change be included in the release notes: no
## Description
This PR deprecates the `Microsoft.ReactNative.WindowsAppSDK` project.
### Type of Change
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
- This change requires a documentation update
### Why
These projects/templates were early, experimental work for a future of RNW apps being WinAppSDK-based. Since we're not going in that direction, we shouldn't persist allowing projects to be created using it.
Resolves#11744
### What
* Deleting the `Microsoft.ReactNative.WindowsAppSDK` project files
* Removing all jobs/tasks related to building/testing/publishing `Microsoft.ReactNative.WindowsAppSDK`
* Removes the `cs-app-WinAppSDK` app template and specific new project creation code
**Note:** The existing `UseWinUI3` msbuild property and corresponding `USE_WINUI3` build flags are intentionally not touched in this PR, to maintain the minimum support for some customers.
## Screenshots
N/A
## Testing
N/A
## Changelog
Should this change be included in the release notes: Yes
The Microsoft.ReactNative.WindowsAppSDK experimental project has been deprecated and will no longer be supported.
BinSkim has been throwing warnings for Desktop ever since the upgrade to
BinSkim@4. Particularly this is from scanning the Hermes and V8 dlls.
However both are sourced from their own Microsoft-owned repos and only
consumed here via published NuGets. BinSkim should be running on those
repos (if required) not here in RNW.
This PR updates the pipeline to only test the binaries built by this
pipeline.
## Description
Updates Guardian pre-build analysis tasks to v2.
### Type of Change
_Erase all that don't apply._
- Bug fix (non-breaking change which fixes an issue)
### Why
Guardian v1 deprecation.
## Screenshots
N/A
## Testing
Ran compliance pipeline to confirm it still works.
## Description
Our SBOM manifests can only be signed when running pipelines in the internal ADO for publishing official builds. This PR changes the config not not sign the manifests for PR/CI.
### Type of Change
- Bug fix (non-breaking change which fixes an issue)
### Why
Unblock PRs.
### What
Added variable to only enable signing when on the right ADO instance.
## Screenshots
N/A
## Testing
N/A
## Description
This PR fixes the problem where we're no longer getting the correct error when a PR is missing a change file.
### Type of Change
- Bug fix (non-breaking change which fixes an issue)
### Why
So it's clear why the PR is failing (missing change file).
Closes#11610
### What
Fixed the escaping of ther `yarn change` command in the error output so bash re-adds it properly
## Screenshots
N/A
## Testing
Ran a PR with this change without the change file.
CI has been broken because the build matrix for Desktop did not set UseFabric for most configs, which is used to set the artifactName parameter to the publish-build-artifacts template. Changed from if x == true, if x == false to if x == true, else.