From 499e29933cbff4f153dc52c7b2bcf29b382f27c5 Mon Sep 17 00:00:00 2001 From: Matt Cooley Date: Tue, 25 Jun 2019 11:29:32 -0700 Subject: [PATCH] UI tests should be able to test both dev and store-released builds (#567) Fixes #462 - Add x64 and x86 UI tests to the release builds (internal builds for the store) - UI tests now accept the target app ID as a parameter in the runsettings file --- build/pipelines/azure-pipelines.ci.yaml | 1 + build/pipelines/azure-pipelines.release.yaml | 10 ++++++++++ build/pipelines/templates/run-ui-tests.yaml | 3 ++- src/CalculatorUITestFramework/WinAppDriver.cs | 13 +++++++++++-- .../CalculatorUITests.ci.runsettings | 12 ++++++++++++ src/CalculatorUITests/CalculatorUITests.csproj | 5 ++++- .../CalculatorUITests.release.runsettings | 12 ++++++++++++ src/CalculatorUITests/CalculatorUITests.runsettings | 9 --------- 8 files changed, 52 insertions(+), 13 deletions(-) create mode 100644 src/CalculatorUITests/CalculatorUITests.ci.runsettings create mode 100644 src/CalculatorUITests/CalculatorUITests.release.runsettings delete mode 100644 src/CalculatorUITests/CalculatorUITests.runsettings diff --git a/build/pipelines/azure-pipelines.ci.yaml b/build/pipelines/azure-pipelines.ci.yaml index 23eb46ca..d980165e 100644 --- a/build/pipelines/azure-pipelines.ci.yaml +++ b/build/pipelines/azure-pipelines.ci.yaml @@ -36,6 +36,7 @@ jobs: - template: ./templates/run-ui-tests.yaml parameters: platform: x64 + runsettingsFileName: CalculatorUITests.ci.runsettings - template: ./templates/run-unit-tests.yaml parameters: diff --git a/build/pipelines/azure-pipelines.release.yaml b/build/pipelines/azure-pipelines.release.yaml index c456ce10..0694fedc 100644 --- a/build/pipelines/azure-pipelines.release.yaml +++ b/build/pipelines/azure-pipelines.release.yaml @@ -35,6 +35,16 @@ jobs: platform: ARM64 condition: not(eq(variables['Build.Reason'], 'PullRequest')) +- template: ./templates/run-ui-tests.yaml + parameters: + platform: x64 + runsettingsFileName: CalculatorUITests.release.runsettings + +- template: ./templates/run-ui-tests.yaml + parameters: + platform: x86 + runsettingsFileName: CalculatorUITests.release.runsettings + - template: ./templates/run-unit-tests.yaml parameters: platform: x64 diff --git a/build/pipelines/templates/run-ui-tests.yaml b/build/pipelines/templates/run-ui-tests.yaml index 664a0111..0e2d7656 100644 --- a/build/pipelines/templates/run-ui-tests.yaml +++ b/build/pipelines/templates/run-ui-tests.yaml @@ -2,6 +2,7 @@ parameters: platform: '' + runsettingsFileName: '' jobs: - job: UITests${{ parameters.platform }} @@ -44,6 +45,6 @@ jobs: inputs: testAssemblyVer2: $(Build.ArtifactStagingDirectory)/drop/Release/${{ parameters.platform }}/publish/CalculatorUITests.dll vsTestVersion: 16.0 - runSettingsFile: $(Build.ArtifactStagingDirectory)/drop/Release/${{ parameters.platform }}/publish/CalculatorUITests.runsettings + runSettingsFile: $(Build.ArtifactStagingDirectory)/drop/Release/${{ parameters.platform }}/publish/${{ parameters.runsettingsFileName }} platform: ${{ parameters.platform }} configuration: Release \ No newline at end of file diff --git a/src/CalculatorUITestFramework/WinAppDriver.cs b/src/CalculatorUITestFramework/WinAppDriver.cs index 3daebdb8..c84807c8 100644 --- a/src/CalculatorUITestFramework/WinAppDriver.cs +++ b/src/CalculatorUITestFramework/WinAppDriver.cs @@ -12,7 +12,7 @@ namespace CalculatorUITestFramework public sealed class WinAppDriver { private WindowsDriverLocalService windowsDriverService = null; - private const string calculatorAppId = "Microsoft.WindowsCalculator.Dev_8wekyb3d8bbwe!App"; + private const string defaultAppId = "Microsoft.WindowsCalculator.Dev_8wekyb3d8bbwe!App"; private static WinAppDriver instance = null; public static WinAppDriver Instance { @@ -55,7 +55,16 @@ namespace CalculatorUITestFramework // Create a new WinAppDriver session to bring up an instance of the Calculator application // Note: Multiple calculator windows (instances) share the same process Id var options = new AppiumOptions(); - options.AddAdditionalCapability("app", calculatorAppId); + + if (context.Properties.TryGetValue("AppId", out object appId)) + { + options.AddAdditionalCapability("app", (string)appId); + } + else + { + options.AddAdditionalCapability("app", defaultAppId); + } + options.AddAdditionalCapability("deviceName", "WindowsPC"); this.CalculatorSession = new WindowsDriver(this.windowsDriverService.ServiceUrl, options); this.CalculatorSession.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); diff --git a/src/CalculatorUITests/CalculatorUITests.ci.runsettings b/src/CalculatorUITests/CalculatorUITests.ci.runsettings new file mode 100644 index 00000000..8f2810d2 --- /dev/null +++ b/src/CalculatorUITests/CalculatorUITests.ci.runsettings @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/CalculatorUITests/CalculatorUITests.csproj b/src/CalculatorUITests/CalculatorUITests.csproj index c117f9fd..33289c8d 100644 --- a/src/CalculatorUITests/CalculatorUITests.csproj +++ b/src/CalculatorUITests/CalculatorUITests.csproj @@ -18,7 +18,10 @@ - + + PreserveNewest + + PreserveNewest diff --git a/src/CalculatorUITests/CalculatorUITests.release.runsettings b/src/CalculatorUITests/CalculatorUITests.release.runsettings new file mode 100644 index 00000000..7ad3d4f7 --- /dev/null +++ b/src/CalculatorUITests/CalculatorUITests.release.runsettings @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/CalculatorUITests/CalculatorUITests.runsettings b/src/CalculatorUITests/CalculatorUITests.runsettings deleted file mode 100644 index ac9968d5..00000000 --- a/src/CalculatorUITests/CalculatorUITests.runsettings +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - -