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
This commit is contained in:
Keith Mahoney 2018-12-14 17:14:48 -08:00 коммит произвёл GitHub
Родитель 1bf47faeae
Коммит 4616a30b74
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
27 изменённых файлов: 899 добавлений и 21 удалений

3
.gitignore поставляемый
Просмотреть файл

@ -259,3 +259,6 @@ local.props
dev/dll/CppWinRTFilterTypes.txt
dev/dll/XamlTypeInfo.g.*
manifest/Microsoft-Windows-UI-Xaml-MUXControls.man
artifacts/
HelixPayload/

Просмотреть файл

@ -32,6 +32,8 @@ PublishFile $FullBuildOutput\Microsoft.UI.Xaml\sdk\Microsoft.UI.Xaml.winmd $Full
PublishFile $FullBuildOutput\Microsoft.UI.Xaml\Generic.xaml $FullPublishDir\Microsoft.UI.Xaml\
PublishFile -IfExists $FullBuildOutput\Microsoft.UI.Xaml.Design\Microsoft.UI.Xaml.Design.dll $FullPublishDir\Microsoft.UI.Xaml.Design\
PublishFile $BuildOutputDir\$Configuration\AnyCPU\MUXControls.Test.TAEF\MUXControls.Test.dll $FullPublishDir\Test\
# Publish pdbs:
$symbolsOutputDir = "$($FullPublishDir)\Symbols\"
PublishFile -IfExists $FullBuildOutput\Microsoft.UI.Xaml\Microsoft.UI.Xaml.pdb $symbolsOutputDir

Просмотреть файл

@ -0,0 +1,292 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Linq;
namespace HelixTestHelpers
{
public static class TestResultParser
{
public class TestPass
{
public TimeSpan TestPassExecutionTime { get; set; }
public List<TestResult> TestResults { get; set; }
}
public class TestResult
{
public string Name { get; set; }
public bool Passed { get; set; }
public bool CleanupPassed { get; set; }
public TimeSpan ExecutionTime { get; set; }
public string Details { get; set; }
}
public static void ConvertWttLogToXUnitLog(string wttInputPath, string xunitOutputPath)
{
var testPass = TestResultParser.ParseTestWttFile(wttInputPath, true);
var results = testPass.TestResults;
int resultCount = results.Count;
int passedCount = results.Where(r => r.Passed).Count();
int failedCount = resultCount - passedCount;
var root = new XElement("assemblies");
var assembly = new XElement("assembly");
assembly.SetAttributeValue("name", "MUXControls.Test.dll");
assembly.SetAttributeValue("test-framework", "TAEF");
assembly.SetAttributeValue("run-date", DateTime.Now.ToString("yyyy-mm-dd"));
// This doesn't need to be completely accurate since it's not exposed anywhere.
// If we need accurate an start time we can probably calculate it from the te.wtl file, but for
// now this is fine.
assembly.SetAttributeValue("run-time", (DateTime.Now - testPass.TestPassExecutionTime).ToString("hh:mm:ss"));
assembly.SetAttributeValue("total", resultCount);
assembly.SetAttributeValue("passed", passedCount);
assembly.SetAttributeValue("failed", failedCount);
assembly.SetAttributeValue("skipped", 0);
assembly.SetAttributeValue("time", (int)testPass.TestPassExecutionTime.TotalSeconds);
assembly.SetAttributeValue("errors", 0);
root.Add(assembly);
var collection = new XElement("collection");
collection.SetAttributeValue("total", resultCount);
collection.SetAttributeValue("passed", passedCount);
collection.SetAttributeValue("failed", failedCount);
collection.SetAttributeValue("skipped", 0);
collection.SetAttributeValue("name", "Test collection");
collection.SetAttributeValue("time", (int)testPass.TestPassExecutionTime.TotalSeconds);
assembly.Add(collection);
foreach (var result in results)
{
var test = new XElement("test");
test.SetAttributeValue("name", result.Name);
var className = result.Name.Substring(0, result.Name.LastIndexOf('.'));
var methodName = result.Name.Substring(result.Name.LastIndexOf('.') + 1);
test.SetAttributeValue("type", className);
test.SetAttributeValue("method", methodName);
test.SetAttributeValue("time", result.ExecutionTime.TotalSeconds);
test.SetAttributeValue("result", result.Passed ? "Pass" : "Fail");
if (!result.Passed)
{
var failure = new XElement("failure");
failure.SetAttributeValue("exception-type", "Exception");
var message = new XElement("message");
message.Add(new XCData(result.Details));
failure.Add(message);
test.Add(failure);
}
collection.Add(test);
}
File.WriteAllText(xunitOutputPath, root.ToString());
}
public static TestPass ParseTestWttFile(string fileName, bool cleanupFailuresAreRegressions)
{
using (var stream = System.IO.File.OpenRead(fileName))
{
var doc = XDocument.Load(stream);
var testResults = new List<TestResult>();
var testExecutionTimeMap = new Dictionary<string, List<double>>();
TestResult currentResult = null;
long frequency = 0;
long startTime = 0;
long stopTime = 0;
bool inTestCleanup = false;
bool shouldLogToTestDetails = false;
long testPassStartTime = 0;
long testPassStopTime = 0;
Func<XElement, bool> isScopeData = (elt) =>
{
return
elt.Element("Data") != null &&
elt.Element("Data").Element("WexContext") != null &&
(
elt.Element("Data").Element("WexContext").Value == "Cleanup" ||
elt.Element("Data").Element("WexContext").Value == "TestScope" ||
elt.Element("Data").Element("WexContext").Value == "TestScope" ||
elt.Element("Data").Element("WexContext").Value == "ClassScope" ||
elt.Element("Data").Element("WexContext").Value == "ModuleScope"
);
};
Func<XElement, bool> isModuleOrClassScopeStart = (elt) =>
{
return
elt.Name == "Msg" &&
elt.Element("Data") != null &&
elt.Element("Data").Element("StartGroup") != null &&
elt.Element("Data").Element("WexContext") != null &&
(elt.Element("Data").Element("WexContext").Value == "ClassScope" ||
elt.Element("Data").Element("WexContext").Value == "ModuleScope");
};
Func<XElement, bool> isModuleScopeEnd = (elt) =>
{
return
elt.Name == "Msg" &&
elt.Element("Data") != null &&
elt.Element("Data").Element("EndGroup") != null &&
elt.Element("Data").Element("WexContext") != null &&
elt.Element("Data").Element("WexContext").Value == "ModuleScope";
};
Func<XElement, bool> isClassScopeEnd = (elt) =>
{
return
elt.Name == "Msg" &&
elt.Element("Data") != null &&
elt.Element("Data").Element("EndGroup") != null &&
elt.Element("Data").Element("WexContext") != null &&
elt.Element("Data").Element("WexContext").Value == "ClassScope";
};
int testsExecuting = 0;
foreach (XElement element in doc.Root.Elements())
{
// Capturing the frequency data to record accurate
// timing data.
if (element.Name == "RTI")
{
frequency = Int64.Parse(element.Attribute("Frequency").Value);
}
// It's possible for a test to launch another test. If that happens, we won't modify the
// current result. Instead, we'll continue operating like normal and expect that we get two
// EndTests nodes before our next StartTests. We'll check that we've actually got a stop time
// before creating a new result. This will result in the two results being squashed
// into one result of the outer test that ran the inner one.
if (element.Name == "StartTest")
{
testsExecuting++;
if (testsExecuting == 1)
{
string testName = element.Attribute("Title").Value;
const string xamlNativePrefix = "Windows::UI::Xaml::Tests::";
const string xamlManagedPrefix = "Windows.UI.Xaml.Tests.";
if (testName.StartsWith(xamlNativePrefix))
{
testName = testName.Substring(xamlNativePrefix.Length);
}
else if (testName.StartsWith(xamlManagedPrefix))
{
testName = testName.Substring(xamlManagedPrefix.Length);
}
currentResult = new TestResult() { Name = testName, Passed = true, CleanupPassed = true };
testResults.Add(currentResult);
startTime = Int64.Parse(element.Descendants("WexTraceInfo").First().Attribute("TimeStamp").Value);
inTestCleanup = false;
shouldLogToTestDetails = true;
stopTime = 0;
}
}
else if (currentResult != null && element.Name == "EndTest")
{
testsExecuting--;
// If any inner test fails, we'll still fail the outer
currentResult.Passed &= element.Attribute("Result").Value == "Pass";
// Only gather execution data if this is the outer test we ran initially
if (testsExecuting == 0)
{
stopTime = Int64.Parse(element.Descendants("WexTraceInfo").First().Attribute("TimeStamp").Value);
if (!testExecutionTimeMap.Keys.Contains(currentResult.Name))
testExecutionTimeMap[currentResult.Name] = new List<double>();
testExecutionTimeMap[currentResult.Name].Add((double)(stopTime - startTime) / frequency);
currentResult.ExecutionTime = TimeSpan.FromSeconds(testExecutionTimeMap[currentResult.Name].Average());
startTime = 0;
inTestCleanup = true;
}
}
else if (currentResult != null &&
(isModuleOrClassScopeStart(element) || isModuleScopeEnd(element) || isClassScopeEnd(element)))
{
shouldLogToTestDetails = false;
inTestCleanup = false;
}
// Log-appending methods.
if (currentResult != null && element.Name == "Error")
{
if (shouldLogToTestDetails)
{
currentResult.Details += "\r\n[Error]: " + element.Attribute("UserText").Value;
if (element.Attribute("File") != null && element.Attribute("File").Value != "")
{
currentResult.Details += (" [File " + element.Attribute("File").Value);
if (element.Attribute("Line") != null)
currentResult.Details += " Line: " + element.Attribute("Line").Value;
currentResult.Details += "]";
}
}
// The test cleanup errors will often come after the test claimed to have
// 'passed'. We treat them as errors as well.
if (inTestCleanup)
{
currentResult.CleanupPassed = false;
currentResult.Passed = false;
// In stress mode runs, this test will run n times before cleanup is run. If the cleanup
// fails, we want to fail every test.
if (cleanupFailuresAreRegressions)
{
foreach (var result in testResults.Where(res => res.Name == currentResult.Name))
{
result.Passed = false;
result.CleanupPassed = false;
}
}
}
}
if (currentResult != null && element.Name == "Warn")
{
if (shouldLogToTestDetails)
{
currentResult.Details += "\r\n[Warn]: " + element.Attribute("UserText").Value;
}
if (element.Attribute("File") != null && element.Attribute("File").Value != "")
{
currentResult.Details += (" [File " + element.Attribute("File").Value);
if (element.Attribute("Line") != null)
currentResult.Details += " Line: " + element.Attribute("Line").Value;
currentResult.Details += "]";
}
}
}
testPassStartTime = Int64.Parse(doc.Root.Descendants("WexTraceInfo").First().Attribute("TimeStamp").Value);
testPassStopTime = Int64.Parse(doc.Root.Descendants("WexTraceInfo").Last().Attribute("TimeStamp").Value);
var testPassTime = TimeSpan.FromSeconds((double)(testPassStopTime - testPassStartTime) / frequency);
var testpass = new TestPass
{
TestPassExecutionTime = testPassTime,
TestResults = testResults
};
return testpass;
}
}
}
}

Просмотреть файл

@ -0,0 +1,11 @@
Param(
[Parameter(Mandatory = $true)]
[string]$WttInputPath,
[Parameter(Mandatory = $true)]
[string]$XUnitOutputPath
)
Add-Type -Language CSharp -ReferencedAssemblies System.Xml,System.Xml.Linq (Get-Content .\ConvertWttLogToXUnit.cs -Raw)
[HelixTestHelpers.TestResultParser]::ConvertWttLogToXUnitLog($WttInputPath, $XUnitOutputPath)

Просмотреть файл

@ -0,0 +1,35 @@
$flavor = "Debug"
$platform = "x86"
$payloadDir = "HelixPayload"
$repoDirectory = Join-Path (Split-Path -Parent $script:MyInvocation.MyCommand.Path) "..\..\"
$nugetPackagesDir = Join-Path (Split-Path -Parent $script:MyInvocation.MyCommand.Path) "packages"
# Create the payload directory. Remove it if it already exists.
If(test-path $payloadDir)
{
Remove-Item $payloadDir -Recurse
}
New-Item -ItemType Directory -Force -Path $payloadDir
# Copy files from nuget packages
Copy-Item "$nugetPackagesDir\microsoft.windows.apps.test.1.0.181203002\lib\netcoreapp2.1\*.dll" $payloadDir
Copy-Item "$nugetPackagesDir\taef.redist.wlk.10.31.180822002\build\Binaries\$platform\*" $payloadDir
Copy-Item "$nugetPackagesDir\taef.redist.wlk.10.31.180822002\build\Binaries\$platform\CoreClr\*" $payloadDir
Copy-Item "$nugetPackagesDir\runtime.win-$platform.microsoft.netcore.app.2.1.0\runtimes\win-$platform\lib\netcoreapp2.1\*" $payloadDir
Copy-Item "$nugetPackagesDir\runtime.win-$platform.microsoft.netcore.app.2.1.0\runtimes\win-$platform\native\*" $payloadDir
New-Item -ItemType Directory -Force -Path "$payloadDir\.NETCoreApp2.1\"
Copy-Item "$nugetPackagesDir\runtime.win-$platform.microsoft.netcore.app.2.1.0\runtimes\win-$platform\lib\netcoreapp2.1\*" "$payloadDir\.NETCoreApp2.1\"
Copy-Item "$nugetPackagesDir\runtime.win-$platform.microsoft.netcore.app.2.1.0\runtimes\win-$platform\native\*" "$payloadDir\.NETCoreApp2.1\"
Copy-Item "$nugetPackagesDir\MUXCustomBuildTasks.1.0.38\tools\$platform\WttLog.dll" $payloadDir
# Copy files from the 'drop' artifact dir
Copy-Item "$repoDirectory\Artifacts\drop\$flavor\$platform\Test\MUXControls.Test.dll" $payloadDir
Copy-Item "$repoDirectory\Artifacts\drop\$flavor\$platform\AppxPackages\MUXControlsTestApp_Test\*" $payloadDir
Copy-Item "$repoDirectory\Artifacts\drop\$flavor\$platform\AppxPackages\MUXControlsTestApp_Test\Dependencies\$platform\*" $payloadDir
# Copy files from the repo
Copy-Item "build\helix\runtests.cmd" $payloadDir
New-Item -ItemType Directory -Force -Path "$payloadDir\scripts"
Copy-Item "build\helix\ConvertWttLogToXUnit.ps1" "$payloadDir\scripts"
Copy-Item "build\helix\ConvertWttLogToXUnit.cs" "$payloadDir\scripts"

Просмотреть файл

@ -0,0 +1,272 @@
<Project Sdk="Microsoft.DotNet.Helix.Sdk" DefaultTargets="Test">
<PropertyGroup>
<HelixSource>pr/winui/$(BUILD_SOURCEBRANCH)/</HelixSource>
<HelixType>test/product/</HelixType>
<HelixTargetQueues>Windows.10.Amd64.Open</HelixTargetQueues>
<EnableXUnitReporter>true</EnableXUnitReporter>
<EnableAzurePipelinesReporter>true</EnableAzurePipelinesReporter>
</PropertyGroup>
<ItemGroup>
<HelixCorrelationPayload Include="..\..\HelixPayload" />
<HelixWorkItem Include="InteractionTests.ColorPickerTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.ColorPickerTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.RatingControlTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.RatingControlTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.ParallaxViewTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.ParallaxViewTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.ScrollerTestsWithAutomationPeer">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.ScrollerTestsWithAutomationPeer.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.ScrollerTestsWithInputHelper">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.ScrollerTestsWithInputHelper.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.ScrollBar2TestsWithInputHelper">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.ScrollBar2TestsWithInputHelper.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.ScrollerViewTestsWithInputHelper">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.ScrollerViewTestsWithInputHelper.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.PersonPictureTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.PersonPictureTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.TreeViewTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.TreeViewTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.AcrylicBrushTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.AcrylicBrushTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.RevealBrushTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.RevealBrushTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.SwipeControlTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.SwipeControlTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.RefreshContainerTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.RefreshContainerTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.TwoPaneViewTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.TwoPaneViewTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.MenuBarTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.MenuBarTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.SplitButtonTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.SplitButtonTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.DropDownButtonTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.DropDownButtonTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.CommandBarFlyoutTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.CommandBarFlyoutTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.TextCommandBarFlyoutTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.TextCommandBarFlyoutTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.CommonStylesTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.CommonStylesTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.RadioButtonsTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.RadioButtonsTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.ButtonInteractionTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.ButtonInteractionTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.SliderInteractionTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.InteractionTests.SliderInteractionTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.ThemeResourcesTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.ThemeResourcesTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.LeakTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.LeakTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.LocalizationTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.LocalizationTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.LightConfigurationTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.LightConfigurationTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.ColorPickerTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.ColorPickerTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.CommandBarFlyoutTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.CommandBarFlyoutTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.IconSourceApiTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.IconSourceApiTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.LayoutPanelTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.LayoutPanelTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.AcrylicBrushTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.AcrylicBrushTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.NavigationViewTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.NavigationViewTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.ParallaxViewTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.ParallaxViewTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.PersonPictureTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.PersonPictureTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RefreshVisualizerTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RefreshVisualizerTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.ScrollViewerAdapterTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.ScrollViewerAdapterTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RatingControlTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RatingControlTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.ScrollBar2Tests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.ScrollBar2Tests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.ScrollerTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.ScrollerTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.ScrollerViewTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.ScrollerViewTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.SplitButtonTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.SplitButtonTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.SwipeControlTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.SwipeControlTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.TreeViewTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.TreeViewTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.TwoPaneViewTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.TwoPaneViewTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.AccessibilityTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.AccessibilityTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.ElementAnimatorTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.ElementAnimatorTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.FlowLayoutCollectionChangeTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.FlowLayoutCollectionChangeTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.FlowLayoutTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.FlowLayoutTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.IndexPathTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.IndexPathTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.InspectingDataSourceTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.InspectingDataSourceTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.LayoutTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.LayoutTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.PhasingTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.PhasingTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.RecyclePoolTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.RecyclePoolTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.RepeaterFocusTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.RepeaterFocusTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.RepeaterTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.RepeaterTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.SelectionModelTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.SelectionModelTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.ElementFactoryTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.ElementFactoryTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.ViewManagerTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.ViewManagerTests.*</Command>
</HelixWorkItem>
<HelixWorkItem Include="ApiTests.RepeaterTests.ViewportTests">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /name:Windows.UI.Xaml.Tests.MUXControls.ApiTests.RepeaterTests.ViewportTests.*</Command>
</HelixWorkItem>
<!-- NavigationView tests -->
<HelixWorkItem Include="InteractionTests.NavigationViewTests-A">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /select:"(@Name='Windows.UI.Xaml.Tests.MUXControls.InteractionTests.NavigationViewTests.*' and @NavViewTestSuite='A')"</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.NavigationViewTests-B">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /select:"(@Name='Windows.UI.Xaml.Tests.MUXControls.InteractionTests.NavigationViewTests.*' and @NavViewTestSuite='B')"</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.NavigationViewTests-C">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /select:"(@Name='Windows.UI.Xaml.Tests.MUXControls.InteractionTests.NavigationViewTests.*' and @NavViewTestSuite='C')"</Command>
</HelixWorkItem>
<HelixWorkItem Include="InteractionTests.NavigationViewTests-D">
<Timeout>00:20:00</Timeout>
<Command>call %HELIX_CORRELATION_PAYLOAD%\runtests.cmd /select:"(@Name='Windows.UI.Xaml.Tests.MUXControls.InteractionTests.NavigationViewTests.*' and @NavViewTestSuite='D')"</Command>
</HelixWorkItem>
</ItemGroup>
</Project>

5
build/Helix/global.json Normal file
Просмотреть файл

@ -0,0 +1,5 @@
{
"msbuild-sdks": {
"Microsoft.DotNet.Helix.Sdk": "1.0.0-beta.18610.4"
}
}

Просмотреть файл

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MUXCustomBuildTasks" version="1.0.38" targetFramework="native" />
<package id="TAEF.Redist.Wlk" version="10.31.180822002" targetFramework="native" />
<package id="microsoft.windows.apps.test" version="1.0.181203002" targetFramework="native" />
<package id="runtime.win-x86.microsoft.netcore.app" version="2.1.0" targetFramework="native" />
<package id="runtime.win-x64.microsoft.netcore.app" version="2.1.0" targetFramework="native" />
</packages>

24
build/Helix/readme.md Normal file
Просмотреть файл

@ -0,0 +1,24 @@
This directory contains code and configuration files to run WinUI tests in Helix.
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](../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](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](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.

9
build/Helix/runtests.cmd Normal file
Просмотреть файл

@ -0,0 +1,9 @@
set
robocopy %HELIX_CORRELATION_PAYLOAD% . /s
dir /b /s
te MUXControls.Test.dll MUXControlsTestApp.appx /enablewttlogging /unicodeOutput:false /testtimeout:0:05 %*
type te.wtl
cd scripts
powershell .\ConvertWttLogToXUnit.ps1 ..\te.wtl ..\testResults.xml
cd ..
type testResults.xml

115
build/RunHelixTests.yml Normal file
Просмотреть файл

@ -0,0 +1,115 @@
name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr)
jobs:
- job: Build
pool:
vmImage: VS2017-Win2016
timeoutInMinutes: 120
variables:
- group: DotNet-HelixApi-Access
- name: appxPackageDir
value: $(build.artifactStagingDirectory)\$(buildConfiguration)\$(buildPlatform)\AppxPackages
- name: buildOutputDir
value: $(Build.SourcesDirectory)\BuildOutput
- name: buildPlatform
value: x86
- name: buildConfiguration
value: Debug
steps:
- task: CmdLine@1
displayName: 'Display build machine environment variables'
inputs:
filename: 'set'
- task: powershell@2
displayName: 'Install RS5 SDK (17763)'
inputs:
targetType: filePath
filePath: build\Install-WindowsSdkISO.ps1
arguments: 17763
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.9.1'
inputs:
versionSpec: 4.9.1
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2
displayName: 'NuGet restore MUXControls.sln'
inputs:
restoreSolution: MUXControls.sln
feedsToUse: config
nugetConfigPath: nuget.config
- task: VSBuild@1
displayName: 'Build solution MUXControls.sln'
inputs:
solution: MUXControls.sln
vsVersion: 15.0
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
msbuildArgs: '/p:AppxPackageDir="$(appxPackageDir)" /p:AppxBundle=Never /p:AppxSymbolPackageEnabled=false'
- task: powershell@2
displayName: 'Copy files to staging dir'
inputs:
targetType: filePath
filePath: build\CopyFilesToStagingDir.ps1
arguments: -BuildOutputDir '$(buildOutputDir)' -PublishDir '$(Build.ArtifactStagingDirectory)' -Platform '$(buildPlatform)' -Configuration '$(buildConfiguration)'
- task: PublishBuildArtifacts@1
displayName: 'Publish artifact: drop'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: 'drop'
- job: RunTests
dependsOn:
- Build
pool:
vmImage: 'VS2017-Win2016'
timeoutInMinutes: 120
variables:
- group: DotNet-HelixApi-Access
- name: artifactsDir
value: $(Build.SourcesDirectory)\Artifacts
- name: buildPlatform
value: x86
- name: buildConfiguration
value: Debug
steps:
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.9.1'
inputs:
versionSpec: 4.9.1
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2
displayName: 'NuGet restore build/Helix/packages.config'
inputs:
restoreSolution: build/Helix/packages.config
feedsToUse: config
nugetConfigPath: nuget.config
restoreDirectory: packages
- task: DownloadBuildArtifacts@0
inputs:
artifactName: drop
downloadPath: '$(artifactsDir)'
- task: powershell@2
displayName: 'PrepareHelixPayload.ps1'
inputs:
targetType: filePath
filePath: build\Helix\PrepareHelixPayload.ps1
- task: DotNetCoreCLI@2
displayName: 'Run tests in Helix'
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
inputs:
command: custom
projects: build\Helix\RunTestsInHelix.proj
custom: msbuild
arguments: '/p:HelixAccessToken=$(BotAccount-dotnet-github-anon-kaonashi-bot-helix-token) /p:HelixBuild=$(Build.BuildId)'

Просмотреть файл

@ -56,6 +56,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
[TestProperty("Platform", "Any")]
[TestProperty("MUXControlsTestSuite", "SuiteB")]
[TestProperty("MUXControlsTestEnabledForPhone", "True")]
[TestProperty("NavViewTestSuite", "A")]
public static void ClassInitialize(TestContext testContext)
{
TestEnvironment.Initialize(testContext);
@ -68,6 +69,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void DisplayModeTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -125,6 +127,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void PaneDisplayModeLeftLeftCompactLeftMinimalTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -257,6 +260,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void MenuItemInvokedTest()
{
var testScenarios = RegressionTestScenario.BuildTopNavRegressionTestScenarios();
@ -294,6 +298,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void PaneOpenCloseTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -343,6 +348,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod] // Bug 18159731
[TestProperty("NavViewTestSuite", "A")]
public void PaneOpenForceCloseTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -393,6 +399,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void PaneOpenCloseTestPartTwo() // Otherwise this test will exceed the 30 second timeout in catgates chk runs
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -447,6 +454,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void IsSettingsVisibleTest()
{
var testScenarios = RegressionTestScenario.BuildAllRegressionTestScenarios();
@ -476,6 +484,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void IsPaneToggleButtonVisibleTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -503,6 +512,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void AlwaysShowHeaderTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -540,6 +550,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void PaneFooterContentTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -551,6 +562,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void AddRemoveItemTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -587,6 +599,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void AddRemoveOriginalItemTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -612,6 +625,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void ItemSourceTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -638,6 +652,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void ForceIsPaneOpenToFalseOnLeftNavTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -657,6 +672,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void DisabledItemTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -689,6 +705,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod] // bug 16644730
[TestProperty("NavViewTestSuite", "A")]
public void VerifySettingsWidthOnLeftNavMediumMode()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -712,6 +729,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void AutoSuggestBoxTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -767,6 +785,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void AutoSuggestBoxOnTopNavTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -793,6 +812,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "A")]
public void VerifyFocusNotLostWhenTabbingWithBackButtonEnabled()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -824,6 +844,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod] //bug 17792706
[TestProperty("NavViewTestSuite", "A")]
public void BackButtonPlaceHolderOnTopNavTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -867,6 +888,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
//[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
// Disabled due to: Bug 18650478: Test instability: NavigationViewTests.TitleBarTest
public void TitleBarTest()
{
@ -974,6 +996,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void VerifyBackButtonHidesWhenInMinimalOpenState()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -999,6 +1022,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void ArrowKeyNavigationTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -1099,6 +1123,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void TabNavigationTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -1150,6 +1175,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void LeftNavigationFocusKindRevealTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1217,6 +1243,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
// To verify two problems:
// 1. NavigationViewItem not in overflow menu
// Layout doesn't know about overflow, so changing the content of NavigationViewItem may not trigger MeasureOverride
@ -1274,6 +1301,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void TopNavigationOverflowWidthLongNavItemTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1311,6 +1339,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void TopNavigationOverflowButtonTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1349,6 +1378,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void ContentOverlayTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1387,6 +1417,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void TopPaddingTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1453,6 +1484,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void SuppressSelectionItemInvokeTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1511,6 +1543,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod] //bug 18033309
[TestProperty("NavViewTestSuite", "B")]
public void TopNavigationSecondClickOnSuppressSelectionItemTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1579,6 +1612,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void TopNavigationWithAccessKeysTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1600,6 +1634,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void LeftNavigationWithAccessKeysTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -1633,6 +1668,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void TopNavigationSelectionTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1736,6 +1772,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void TopNavigationSetSelectedItemToNullInItemInvoke()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1795,6 +1832,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void VerifyTopNavigationItemFocusVisualKindRevealTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -1827,6 +1865,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void PaneTabNavigationTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -1898,6 +1937,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void HomeEndNavigationTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -1973,6 +2013,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "B")]
public void SelectionFollowFocusTest()
{
if (!PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.Redstone2))
@ -2024,6 +2065,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void MenuItemAutomationSelectionTest()
{
var testScenarios = RegressionTestScenario.BuildAllRegressionTestScenarios();
@ -2080,6 +2122,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void SettingsCanBeUnselected()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -2109,6 +2152,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
// NavigationView doesn't use quirk, but we determine the version by themeresource.
// As a workaround, we 'quirk' it for RS4 or before release. if it's RS4 or before, HeaderVisible is not related to Header().
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void HeaderIsVisibleForTargetRS4OrBelowApp()
{
if (!PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.Redstone3))
@ -2134,6 +2178,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void TopNavigationOverflowButtonClickTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -2183,6 +2228,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void TopNavigationItemsAccessibilitySetTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -2222,6 +2268,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void TopNavigationMenuItemTemplateBindingTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -2240,6 +2287,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
// Bug 17512989. If we change the menu items for multiple times, the item may be not selected.
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void TopNavigationHaveCorrectSelectionWhenChangingMenuItems()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -2268,6 +2316,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void ItemsAccessibilitySetTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2304,6 +2353,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void ItemsSourceAccessibilitySetTest()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -2346,6 +2396,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void SettingsItemInvokeTest()
{
var testScenarios = RegressionTestScenario.BuildAllRegressionTestScenarios();
@ -2374,6 +2425,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void SettingsItemGamepadTest()
{
var testScenarios = RegressionTestScenario.BuildAllRegressionTestScenarios();
@ -2405,6 +2457,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void ScrollToMenuItemTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2457,6 +2510,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void SystemBackTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2508,6 +2562,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void AccTypeTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2523,6 +2578,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
// [TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void ToolTipTest() // Verify tooltips appear, and that their contents change when headers change
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2591,7 +2647,8 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
}
[TestMethod]
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void KeyboardFocusToolTipTest() // Verify tooltips appear when Keyboard focused
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -2661,6 +2718,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void ToolTipCustomContentTest() // Verify tooltips don't appear for custom NavViewItems (split off due to CatGates timeout)
{
if (!PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.Redstone3))
@ -2699,6 +2757,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void PaneOpenCloseEventsTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2735,6 +2794,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void VerifyPaneTitlePresentAndUpdates()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2756,6 +2816,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
[TestMethod]
[TestProperty("NavViewTestSuite", "C")]
public void VerifyCustomHeaderContentTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2778,6 +2839,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void BackRequestedTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2804,6 +2866,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void BackToolTipTest()
{
if (PlatformConfiguration.IsDevice(DeviceType.Phone))
@ -2865,6 +2928,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void LightDismissTest()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -2931,6 +2995,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void CheckSelectedItemEdgeCase()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -2946,6 +3011,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void VerifyCanCancelClosing()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -3037,6 +3103,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void VerifyLightDismissDoesntSendDuplicateEvents()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -3108,6 +3175,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void VerifyBackButtonAccessibleOnlyViaXYKeyboard()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -3165,6 +3233,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void VerifyDeselectionDisabled()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -3187,6 +3256,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void EnsureClearingListIsSafe()
{
var testScenarios = RegressionTestScenario.BuildLeftNavRegressionTestScenarios();
@ -3207,6 +3277,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
[TestProperty("Description", "Ensure that the NavigationView button isn't running with rs3+ themeresource on when they're off :)")]
public void VerifyNotShouldPreserveNavigationViewRS3Behavior() // Regression test to make sure that we aren't accidentally running quirks all the time
{
@ -3244,6 +3315,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
[TestProperty("Description", "Ensure that the NavigationView button is rendering as expected if it's targeting RS3")]
public void VerifyShouldPreserveNavigationViewRS3Behavior()
{
@ -3301,6 +3373,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
[TestProperty("Description", "Temporary bootstrapping test, can be retired once Horizontal Nav View is out of incubation")]
public void EnsureNoCrashesInHorizontalFlipMenuItems()
{
@ -3318,6 +3391,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
[TestProperty("Description", "VisualState DisplayModeGroup is decoupled from DisplayMode, and it has strong connection with PaneDisplayMode")]
public void VerifyCorrectVisualStateWhenChangingPaneDisplayMode()
{
@ -3396,6 +3470,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void EnsureTopSettingsRetainsFocusAfterOrientationChanges()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -3431,6 +3506,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void EnsureDynamicSizeForPaneHeaderFooterAndCustomContent()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -3489,6 +3565,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void VerifyHeaderContentMarginOnTopNav()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -3510,6 +3587,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void VerifyTopNavigationMinimalVisualStateOnTopNav()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -3544,6 +3622,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void EnsureLeftSettingsRetainsFocusAfterOrientationChanges()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -3583,6 +3662,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
[TestProperty("Description", "Temporary bootstrapping test, can be retired once Horizontal Nav View is out of incubation")]
public void EnsureNoCrashesInHorizontalFlipMenuItemsSource()
{
@ -3596,6 +3676,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void VerifyMoreButtonIsOnlyReadOnce()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -3611,6 +3692,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void CanDoSelectionChangedOfItemTemplate()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -3628,6 +3710,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void EnsurePaneHeaderCanBeModifiedForLeftNav()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),
@ -3638,6 +3721,7 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests
}
[TestMethod]
[TestProperty("NavViewTestSuite", "D")]
public void EnsurePaneHeaderCanBeModifiedForTopNav()
{
using (IDisposable page1 = new TestSetupHelper("NavigationView Tests"),

Просмотреть файл

@ -493,7 +493,7 @@
<Target Name="ComputeXamlGeneratedCompileInputs" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\..\packages\Microsoft.Gsl.0.1.2.1\build\native\Microsoft.Gsl.targets" Condition="Exists('..\..\packages\Microsoft.Gsl.0.1.2.1\build\native\Microsoft.Gsl.targets')" />
<Import Project="..\..\packages\MUXCustomBuildTasks.1.0.37\build\native\MUXCustomBuildTasks.targets" Condition="Exists('..\..\packages\MUXCustomBuildTasks.1.0.37\build\native\MUXCustomBuildTasks.targets')" />
<Import Project="..\..\packages\MUXCustomBuildTasks.1.0.38\build\native\MUXCustomBuildTasks.targets" Condition="Exists('..\..\packages\MUXCustomBuildTasks.1.0.38\build\native\MUXCustomBuildTasks.targets')" />
</ImportGroup>
<PropertyGroup>
<MergedWinmdDirectory>$(OutDir)Merged</MergedWinmdDirectory>
@ -1015,7 +1015,7 @@
</PropertyGroup>
<Error Condition="!Exists('..\..\packages\Microsoft.CodeAnalysis.BinSkim.1.3.9\tools\x86\BinSkim.exe')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeAnalysis.BinSkim.1.3.9\tools\x86\BinSkim.exe'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.Gsl.0.1.2.1\build\native\Microsoft.Gsl.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Gsl.0.1.2.1\build\native\Microsoft.Gsl.targets'))" />
<Error Condition="!Exists('..\..\packages\MUXCustomBuildTasks.1.0.37\build\native\MUXCustomBuildTasks.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\MUXCustomBuildTasks.1.0.37\build\native\MUXCustomBuildTasks.targets'))" />
<Error Condition="!Exists('..\..\packages\MUXCustomBuildTasks.1.0.38\build\native\MUXCustomBuildTasks.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\MUXCustomBuildTasks.1.0.38\build\native\MUXCustomBuildTasks.targets'))" />
</Target>
<Target Name="RunBinSkim" AfterTargets="AfterBuild" Condition="'$(Configuration)'=='Release' And $(BuildingWithBuildExe) != 'true'">
<PropertyGroup>

Просмотреть файл

@ -2,5 +2,5 @@
<packages>
<package id="Microsoft.CodeAnalysis.BinSkim" version="1.3.9" targetFramework="native" />
<package id="Microsoft.Gsl" version="0.1.2.1" targetFramework="native" />
<package id="MUXCustomBuildTasks" version="1.0.37" targetFramework="native" />
<package id="MUXCustomBuildTasks" version="1.0.38" targetFramework="native" />
</packages>

Просмотреть файл

@ -13,7 +13,7 @@
</PropertyGroup>
<ItemGroup Condition="'$(XES_DFSDROP)' == ''">
<PackageReference Include="MUXCustomBuildTasks">
<Version>1.0.37</Version>
<Version>1.0.38</Version>
</PackageReference>
<PackageReference Include="Microsoft.Net.Native.Compiler">
<Version>2.2.1</Version>

Просмотреть файл

@ -2,7 +2,7 @@
"dependencies": {
"Microsoft.Net.Native.Compiler": "2.2.1",
"Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2",
"MUXCustomBuildTasks": "1.0.37",
"MUXCustomBuildTasks": "1.0.38",
"TAEF.Redist.Wlk": "10.31.180822002"
},
"frameworks": {

Просмотреть файл

@ -113,6 +113,18 @@ namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra
}
}
// We were hitting an issue in the lab where sometimes the very first click would fail to go through resulting in
// test instability. We work around this by clicking on element when the app launches.
var currentPageTextBlock = FindElement.ById("__CurrentPage");
if (currentPageTextBlock == null)
{
string errorMessage = "Cannot find __CurrentPage textblock";
Log.Error(errorMessage);
DumpHelper.DumpFullContext();
throw new InvalidOperationException(errorMessage);
}
InputHelper.LeftClick(currentPageTextBlock);
var uiObject = FindElement.ByNameAndClassName(testName, "Button");
if (uiObject == null)
{

Просмотреть файл

@ -151,7 +151,7 @@
<Version>2.0.180916002-prerelease</Version>
</PackageReference>
<PackageReference Include="MUXCustomBuildTasks">
<Version>1.0.37</Version>
<Version>1.0.38</Version>
</PackageReference>
</ItemGroup>
<Import Project="..\..\TestAppUtils\TestAppUtils.projitems" Label="Shared" />

Просмотреть файл

@ -196,12 +196,12 @@
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.UI.Xaml.2.0.180916002-prerelease\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.UI.Xaml.2.0.180916002-prerelease\build\native\Microsoft.UI.Xaml.targets'))" />
<Error Condition="!Exists('..\packages\MUXCustomBuildTasks.1.0.37\build\native\MUXCustomBuildTasks.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MUXCustomBuildTasks.1.0.37\build\native\MUXCustomBuildTasks.targets'))" />
<Error Condition="!Exists('..\packages\MUXCustomBuildTasks.1.0.38\build\native\MUXCustomBuildTasks.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MUXCustomBuildTasks.1.0.38\build\native\MUXCustomBuildTasks.targets'))" />
</Target>
<Import Project="$(MSBuildProjectDirectory)\..\..\..\CustomInlineTasks.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\packages\Microsoft.UI.Xaml.2.0.180916002-prerelease\build\native\Microsoft.UI.Xaml.targets" Condition="Exists('..\packages\Microsoft.UI.Xaml.2.0.180916002-prerelease\build\native\Microsoft.UI.Xaml.targets')" />
<Import Project="..\packages\MUXCustomBuildTasks.1.0.37\build\native\MUXCustomBuildTasks.targets" Condition="Exists('..\packages\MUXCustomBuildTasks.1.0.37\build\native\MUXCustomBuildTasks.targets')" />
<Import Project="..\packages\MUXCustomBuildTasks.1.0.38\build\native\MUXCustomBuildTasks.targets" Condition="Exists('..\packages\MUXCustomBuildTasks.1.0.38\build\native\MUXCustomBuildTasks.targets')" />
</ImportGroup>
<Target Name="AfterBuild">
<RunPowershellScript Path="$(SolutionDir)\tools\ExtractPackageDependencies_ReleaseTest.ps1" Parameters="-sourceFile $(OutDir)\$(AppxPackageName).build.appxrecipe -platform $(ConvertedPlatformName) -outputFile $(AppxPackageTestDir)\$(AppxPackageName).dependencies.txt" FilesWritten="$(AppxPackageTestDir)\$(AppxPackageName).dependencies.txt" />

Просмотреть файл

@ -2,5 +2,5 @@
<packages>
<package id="Microsoft.NETCore.UniversalWindowsPlatform" version="6.1.7" targetFramework="native" />
<package id="Microsoft.UI.Xaml" version="2.0.180916002-prerelease" targetFramework="native" />
<package id="MUXCustomBuildTasks" version="1.0.37" targetFramework="native" />
<package id="MUXCustomBuildTasks" version="1.0.38" targetFramework="native" />
</packages>

Просмотреть файл

@ -13,7 +13,7 @@
</PropertyGroup>
<ItemGroup Condition="'$(XES_DFSDROP)' == ''">
<PackageReference Include="MUXCustomBuildTasks">
<Version>1.0.37</Version>
<Version>1.0.38</Version>
</PackageReference>
<PackageReference Include="Microsoft.Net.Native.Compiler">
<Version>2.2.1</Version>

Просмотреть файл

@ -2,7 +2,7 @@
"dependencies": {
"Microsoft.Net.Native.Compiler": "2.2.1",
"Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2",
"MUXCustomBuildTasks": "1.0.37",
"MUXCustomBuildTasks": "1.0.38",
"TAEF.Redist.Wlk": "10.31.180822002"
},
"frameworks": {

Просмотреть файл

@ -57,7 +57,7 @@ namespace MUXControlsTestApp
if (e.SourcePageType == _mainPageType)
{
_backButton.Visibility = Visibility.Collapsed;
_currentPageTextBlock.Text = "";
_currentPageTextBlock.Text = "Home";
}
else
{
@ -106,6 +106,7 @@ namespace MUXControlsTestApp
_logReportingTextBox = (TextBox)GetTemplateChild("LogReportingTextBox");
_currentPageTextBlock = (TextBlock)GetTemplateChild("CurrentPageTextBlock");
_currentPageTextBlock.Text = "Home";
_viewScalingCheckBox = (CheckBox)GetTemplateChild("ViewScalingCheckBox");
_viewScalingCheckBox.Checked += OnViewScalingCheckBoxChanged;

Просмотреть файл

@ -44,7 +44,7 @@
<SymbolIcon Symbol="Back"/>
</Button>
<TextBlock x:Name="CurrentPageTextBlock" FontSize="18" VerticalAlignment="Center" Margin="10,0,0,0"/>
<TextBlock x:Name="CurrentPageTextBlock" AutomationProperties.AutomationId="__CurrentPage" FontSize="18" VerticalAlignment="Center" Margin="10,0,0,0"/>
</StackPanel>
<Button x:Name="FullScreenInvokerButton" Grid.Column="2" Width="48" Foreground="White" Background="{ThemeResource SystemControlBackgroundAccentBrush}" IsTabStop="False">
@ -87,4 +87,4 @@
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</ResourceDictionary>

Просмотреть файл

@ -1,3 +1,3 @@
@echo off
call %~dp0..\..\NugetWrapper.cmd pack MUXCustomBuildTasks.nuspec -properties BuildOutput=%~dp0..\..\..\BuildOutput\Release\AnyCPU\CustomTasks -OutputDirectory %~dp0
call %~dp0..\..\NugetWrapper.cmd pack MUXCustomBuildTasks.nuspec -properties PROGRAMFILES="%ProgramFiles(x86)%"

Просмотреть файл

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MUXCustomBuildTasks</id>
<version>1.0.37</version>
<version>1.0.38</version>
<title>MUXCustomBuildTasks</title>
<authors>Microsoft</authors>
<owners>Microsoft</owners>
@ -15,9 +15,14 @@
<!-- Common build logic -->
<file target="build\CustomTasks.dll" src="..\..\..\BuildOutput\Release\AnyCPU\CustomTasks\CustomTasks.dll"/>
<file target="build\MUXCustomBuildTasks.targets" src="MUXCustomBuildTasks.targets"/>
<!-- This is here for C++ based projects, see http://nugetdocsbeta.azurewebsites.net/ndocs/guides/create-uwp-packages -->
<file target="build\native\CustomTasks.dll" src="..\..\..\BuildOutput\Release\AnyCPU\CustomTasks\CustomTasks.dll"/>
<file target="build\native\MUXCustomBuildTasks.targets" src="MUXCustomBuildTasks.targets"/>
<!-- Include WttLog.dll -->
<!-- You must install the WDK to get this file: https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk -->
<file target="tools\x86\WttLog.dll" src="$PROGRAMFILES$\Windows Kits\10\Testing\Runtimes\TAEF\x86\wttlog.dll" />
<file target="tools\x64\WttLog.dll" src="$PROGRAMFILES$\Windows Kits\10\Testing\Runtimes\TAEF\x64\wttlog.dll" />
</files>
</package>

Просмотреть файл

@ -2,10 +2,10 @@
SETLOCAL
set ERRORLEVEL=
for %%A IN (%~dp0MUXCustomBuildTasks.??.??.??.nupkg) do (
for %%A IN (%~dp0MUXCustomBuildTasks.??.??.*.nupkg) do (
echo Candidate nuget package: %%A
echo %~dp0..\..\NugetWrapper.cmd push %%A -Source https://pkgs.dev.azure.com/WinUI/_packaging/MUXControls.Private/nuget/v3/index.json -apikey VSTS
%~dp0..\..\NugetWrapper.cmd push %%A -Source https://pkgs.dev.azure.com/WinUI/_packaging/MUXControls.Private/nuget/v3/index.json -apikey VSTS
echo %~dp0..\..\NugetWrapper.cmd push %%A -Source https://microsoft.pkgs.visualstudio.com/DefaultCollection/_packaging/DEPControls/nuget/v3/index.json -apikey VSTS
%~dp0..\..\NugetWrapper.cmd push %%A -Source https://microsoft.pkgs.visualstudio.com/DefaultCollection/_packaging/DEPControls/nuget/v3/index.json -apikey VSTS
)
:END