There was a change in how the OS provides the build tools such as perl.exe. This caused problems for the OS Porting build machine.
The fix requires us to restart razzle after checking out the porting branch.
Helix started enforcing a rule that jobs sent to an Open queue should not send an access token. Updating the yml to obey this.
When not sending an access token you must explicitly set Creator to something, since it is no longer inferred from the access token. Also, the IsExternal flag must be set.
* Make sure that if a verification fails, we fail the test. MSTEST seems to pass the test if the verify falis in the UIThread. Also fixed the tests that were failing with that fix.
Also factor out repetitive yml into a template.
This adds jobs to the PR and CI builds that take the just-built nuget package and then build the MUXReleaseTest solution with that new nuget package.
* Add section about the Checks invoked by a pull request.
* Add link for downloading Windows SDK
* Added a note about using Test Explorer to run tests
* Added suggestion for new contributors to particpate in feature proposal voting/commentary
* Added a section about creating a new test
* Link to test documentation from contribution workflow
* Fix various wrapping issues
This is the initial check-in of work that enables running WinUI tests in Helix.
There are some things that are missing that will come in a later PR. I wanted to get this work merged to master sooner so that we can start getting things up and running.
Not in this PR:
* Scheduling tests on RS1 - RS5 machines is not yet enabled. Currently all tests are running on the Windows.10.Amd64.Open Helix queue which is a Windows Server 2016 RS1 queue.
* Release configuration and/or x64 target platform. Currently only x86/debug is enabled.
* Not all tests are enabled yet such as IXMP tests, WPF hosting tests, NuGet package tests, Framework Package tests.
All of the above will come soon after this PR is completed.
**Details:**
Helix is a cloud hosted test execution environment which is accessed via the Arcade SDK.
More details:
* [Arcade](https://github.com/dotnet/arcade)
* [Helix](https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.Helix/Sdk)
WinUI tests are scheduled in Helix by the Azure DevOps Pipeline: RunHelixTests.yml.
The workflow is as follows:
1. NuGet Restore is called on the packages.config in this directory. This downloads any runtime dependencies that are needed to run tests.
2. PrepareHelixPayload.ps1 is called. This copies the necessary files from various locations into a Helix payload directory. This directory is what will get sent to the Helix machines.
3. RunTestsInHelix.proj is executed. This proj has a dependency on [Microsoft.DotNet.Helix.Sdk](https://github.com/dotnet/arcade/tree/master/src/Microsoft.DotNet.Helix/Sdk)
which it uses to publish the Helix payload directory and to schedule the Helix Work Items. The WinUI tests are parallelized into multiple Helix Work Items.
4. Each Helix Work Item calls runtests.cmd with a specific query to pass to [TAEF](https://docs.microsoft.com/en-us/windows-hardware/drivers/taef/) which runs the tests.
5. TAEF produces logs in WTT format. Helix is able to process logs in XUnit format. We run ConvertWttLogToXUnit.ps1 to convert the logs into the necessary format.
6. RunTestsInHelix.proj has EnableAzurePipelinesReporter set to true. This allows the XUnit formatted test results to be reported back to the Azure DevOps Pipeline.
Example run: https://dev.azure.com/ms/microsoft-ui-xaml/_build/results?buildId=730
Full Atlas test pass: https://microsoft.visualstudio.com/WinUI/_build/results?buildId=13389551&view=ms.vss-test-web.test-result-details
Fix#22
The problem is that our IXMP generated code answers for "private" types, which causes problems where the parser starts asking about types like XamlAmbientLight which it finds squirreled away in the UIElement tree. It asks about these types because "private" DependencyProperties refer to those types and our IXMP implementation returns a XamlType instance corresponding to it. That then causes the .NET runtime to try to turn the TypeName into a real type and it crashes because there's no metadata in the app's WinMDs of that typename. The parser folks recommended that we just return null for "private" types so in this change I switched the XamlMetadataProvider codegen to use the winmd file that's included in the nuget package instead of the "private" one. This way our IXMP is in sync with what's in the nuget package.
Verified that the nuget package with this fix allows XamlControlsGallery to launch again.
Tests passed: https://microsoft.visualstudio.com/WinUI/_build/results?buildId=13332466&_a=summary
We need to change our script that commits ports to retrieve information from the public GitHub repo, which has a slightly different REST API surface, as well.
While I was here, I also removed the last two parameters from CommitSync.ps1. We literally never use them, and CommitSync.cmd wasn't even passing them in correctly.