From 79a8101c558081464058858d59b49e2ea67be20b Mon Sep 17 00:00:00 2001 From: Timotius Margo Date: Thu, 30 Aug 2018 01:42:11 -0700 Subject: [PATCH 1/2] Setup demo for Channel 9 --- .../AppUIBasics/UpgradeLog.htm | Bin 0 -> 31876 bytes .../AppUIBasics/UpgradeLog2.htm | Bin 0 -> 29096 bytes .../C#/AlarmClockTest/AlarmClockSession.cs | 2 +- .../C#/AlarmClockTest/AlarmClockTest.csproj | 1 + .../C#/AlarmClockTest/ScenarioStopwatch.cs | 6 +- Samples/C#/AlarmClockTest/ScenarioTimer.cs | 99 ++++++++++++++++++ Samples/C#/Paint3DTest/ScenarioDraw.cs | 6 +- Samples/C#/PaintTest/ScenarioDraw.cs | 10 ++ 8 files changed, 117 insertions(+), 7 deletions(-) create mode 100644 ApplicationUnderTests/AppUIBasics/UpgradeLog.htm create mode 100644 ApplicationUnderTests/AppUIBasics/UpgradeLog2.htm create mode 100644 Samples/C#/AlarmClockTest/ScenarioTimer.cs diff --git a/ApplicationUnderTests/AppUIBasics/UpgradeLog.htm b/ApplicationUnderTests/AppUIBasics/UpgradeLog.htm new file mode 100644 index 0000000000000000000000000000000000000000..ca7461b623f03e483ca92d304c73131816fd7f05 GIT binary patch literal 31876 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 literal 0 HcmV?d00001 diff --git a/Samples/C#/AlarmClockTest/AlarmClockSession.cs b/Samples/C#/AlarmClockTest/AlarmClockSession.cs index 6e0dc855..18865f1d 100644 --- a/Samples/C#/AlarmClockTest/AlarmClockSession.cs +++ b/Samples/C#/AlarmClockTest/AlarmClockSession.cs @@ -79,7 +79,7 @@ public virtual void TestInit() catch { // Click back button if application is in a nested page such as New Alarm or New Timer - session.FindElementByAccessibilityId("Back").Click(); + session.FindElementByAccessibilityId("CancelButton").Click(); Thread.Sleep(TimeSpan.FromSeconds(1)); alarmTabElement = session.FindElementByAccessibilityId("AlarmPivotItem"); } diff --git a/Samples/C#/AlarmClockTest/AlarmClockTest.csproj b/Samples/C#/AlarmClockTest/AlarmClockTest.csproj index 6b21b6f6..cc5c3968 100644 --- a/Samples/C#/AlarmClockTest/AlarmClockTest.csproj +++ b/Samples/C#/AlarmClockTest/AlarmClockTest.csproj @@ -75,6 +75,7 @@ + diff --git a/Samples/C#/AlarmClockTest/ScenarioStopwatch.cs b/Samples/C#/AlarmClockTest/ScenarioStopwatch.cs index 37d48868..aa23775b 100644 --- a/Samples/C#/AlarmClockTest/ScenarioStopwatch.cs +++ b/Samples/C#/AlarmClockTest/ScenarioStopwatch.cs @@ -29,7 +29,7 @@ public class ScenarioStopwatch : AlarmClockSession [TestMethod] public void StopwatchLap() { - int numberOfEntry = 3; + int numberOfEntry = 5; var stopwatchPivotItem = session.FindElementByAccessibilityId("StopwatchPivotItem"); // Start the stopwatch @@ -60,13 +60,13 @@ public void StopwatchLap() Assert.IsFalse(firstLapEntry.Displayed); // Horizontally scroll the list up and verify that the fist lap entry is now displayed while the last entry is now hidden - touchScreen.Scroll(lapListView.Coordinates, 0, -50); + touchScreen.Scroll(lapListView.Coordinates, 0, -150); Thread.Sleep(TimeSpan.FromSeconds(1)); Assert.IsTrue(firstLapEntry.Displayed); Assert.IsFalse(lastLapEntry.Displayed); // Horizontally scroll the list down and verify that the last lap entry is now displayed while the first entry is now hidden again - touchScreen.Scroll(lapListView.Coordinates, 0, 50); + touchScreen.Scroll(lapListView.Coordinates, 0, 150); Thread.Sleep(TimeSpan.FromSeconds(1)); Assert.IsTrue(lastLapEntry.Displayed); Assert.IsFalse(firstLapEntry.Displayed); diff --git a/Samples/C#/AlarmClockTest/ScenarioTimer.cs b/Samples/C#/AlarmClockTest/ScenarioTimer.cs new file mode 100644 index 00000000..6e338118 --- /dev/null +++ b/Samples/C#/AlarmClockTest/ScenarioTimer.cs @@ -0,0 +1,99 @@ +//****************************************************************************** +// +// Copyright (c) 2018 Microsoft Corporation. All rights reserved. +// +// This code is licensed under the MIT License (MIT). +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +//****************************************************************************** + +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System.Threading; +using System; + +namespace AlarmClockTest +{ + [TestClass] + public class ScenarioTimer : AlarmClockSession + { + private const string NewTimerName = "Sample Test Timer"; + + [TestMethod] + public void AddTimer() + { + session.FindElementByAccessibilityId("AddTimerButton").Click(); + session.FindElementByAccessibilityId("HourLoopingSelector").FindElementByName("5").Click(); + session.FindElementByAccessibilityId("TimerNameTextBox").Clear(); + session.FindElementByAccessibilityId("TimerNameTextBox").SendKeys(NewTimerName); + session.FindElementByAccessibilityId("TimerStartButton").Click(); + + Assert.IsNotNull(session.FindElementByAccessibilityId("TimerListView")); + var timers = session.FindElementByAccessibilityId("TimerListView").FindElementsByClassName("ListViewItem"); + Assert.IsTrue(timers.Count > 0); + var timer = timers[timers.Count - 1]; + Assert.IsTrue(timer.FindElementByAccessibilityId("TimerResetButton").Enabled); + Assert.AreEqual(NewTimerName, timer.FindElementByAccessibilityId("TimerNameText").Text); + + timer.SendKeys(OpenQA.Selenium.Keys.Delete + OpenQA.Selenium.Keys.Enter); + } + + //* Pre-baked action + //session.FindElementByAccessibilityId("AddTimerButton").Click(); + //session.FindElementByAccessibilityId("HourLoopingSelector").FindElementByName("5").Click(); + //session.FindElementByAccessibilityId("TimerNameTextBox").Clear(); + //session.FindElementByAccessibilityId("TimerNameTextBox").SendKeys(NewTimerName); + //session.FindElementByAccessibilityId("TimerStartButton").Click(); + + //Assert.IsNotNull(session.FindElementByAccessibilityId("TimerListView")); + //var timers = session.FindElementByAccessibilityId("TimerListView").FindElementsByClassName("ListViewItem"); + //Assert.IsTrue(timers.Count > 0); + //var timer = timers[timers.Count - 1]; + //Assert.IsTrue(timer.FindElementByAccessibilityId("TimerResetButton").Enabled); + //Assert.AreEqual(NewTimerName, timer.FindElementByAccessibilityId("TimerNameText").Text); + + [ClassInitialize] + public static void ClassInitialize(TestContext context) + { + Setup(context); + } + + [ClassCleanup] + public static void ClassCleanup() + { + // Try to delete any timer entry that may have been created + while (true) + { + try + { + var timerEntry = session.FindElementByXPath($"//ListItem[starts-with(@Name, \"{NewTimerName}\")]"); + session.Mouse.ContextClick(timerEntry.Coordinates); + session.FindElementByName("Delete").Click(); + Thread.Sleep(TimeSpan.FromSeconds(1)); + } + catch + { + break; + } + } + + TearDown(); + } + + [TestInitialize] + public override void TestInit() + { + // Invoke base class test initialization to ensure that the app is in the main page + base.TestInit(); + + // Navigate to Timer tab + session.FindElementByAccessibilityId("TimerPivotItem").Click(); + } + } +} diff --git a/Samples/C#/Paint3DTest/ScenarioDraw.cs b/Samples/C#/Paint3DTest/ScenarioDraw.cs index aba13fec..c754e9e0 100644 --- a/Samples/C#/Paint3DTest/ScenarioDraw.cs +++ b/Samples/C#/Paint3DTest/ScenarioDraw.cs @@ -117,10 +117,10 @@ public void SetupBrushesPane() // Set eraser thickness to eraser width in pixel brushesPane.FindElementByAccessibilityId("Eraser3d").Click(); - if (brushesPane.FindElementByAccessibilityId("Thickness").Text != eraserWidth) + if (brushesPane.FindElementByAccessibilityId("BrushSize").Text != eraserWidth) { - brushesPane.FindElementByAccessibilityId("Thickness").SendKeys(Keys.Control + "a" + Keys.Control); - brushesPane.FindElementByAccessibilityId("Thickness").SendKeys(eraserWidth + Keys.Enter); + brushesPane.FindElementByAccessibilityId("BrushSize").SendKeys(Keys.Control + "a" + Keys.Control); + brushesPane.FindElementByAccessibilityId("BrushSize").SendKeys(eraserWidth + Keys.Enter); Thread.Sleep(TimeSpan.FromSeconds(1)); } diff --git a/Samples/C#/PaintTest/ScenarioDraw.cs b/Samples/C#/PaintTest/ScenarioDraw.cs index f691e6a8..7347d4a8 100644 --- a/Samples/C#/PaintTest/ScenarioDraw.cs +++ b/Samples/C#/PaintTest/ScenarioDraw.cs @@ -16,6 +16,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using System; +using System.Drawing; using System.Collections.Generic; using OpenQA.Selenium.Interactions; using OpenQA.Selenium.Appium.Interactions; @@ -34,6 +35,7 @@ public class ScenarioDraw : PaintSession { private WindowsElement inkCanvas; private WindowsElement undoButton; + private static Size originalSize; private const int defaultRadius = 300; // half of ABCD square side. E.g. distance between AB private const int radiusOffset = 10; // distance between concentric square in pixels @@ -235,11 +237,19 @@ public static void ClassInitialize(TestContext context) { // Create session to launch or bring up Paint application Setup(context); + + // Save application window original size and temporarily set it to 1400 x 1000 + originalSize = session.Manage().Window.Size; + Assert.IsNotNull(originalSize); + session.Manage().Window.Size = new Size(1400, 1000); } [ClassCleanup] public static void ClassCleanup() { + // Restore application window original size and position + session.Manage().Window.Size = originalSize; + TearDown(); } From f82af215f0787fc8d050885b8eccdbfefe673be5 Mon Sep 17 00:00:00 2001 From: Timotius Margo Date: Thu, 30 Aug 2018 12:49:23 -0700 Subject: [PATCH 2/2] Update --- Samples/C#/AlarmClockTest/ScenarioTimer.cs | 60 +++++++++------------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git a/Samples/C#/AlarmClockTest/ScenarioTimer.cs b/Samples/C#/AlarmClockTest/ScenarioTimer.cs index 6e338118..7027aec7 100644 --- a/Samples/C#/AlarmClockTest/ScenarioTimer.cs +++ b/Samples/C#/AlarmClockTest/ScenarioTimer.cs @@ -25,38 +25,38 @@ public class ScenarioTimer : AlarmClockSession { private const string NewTimerName = "Sample Test Timer"; - [TestMethod] - public void AddTimer() - { - session.FindElementByAccessibilityId("AddTimerButton").Click(); - session.FindElementByAccessibilityId("HourLoopingSelector").FindElementByName("5").Click(); - session.FindElementByAccessibilityId("TimerNameTextBox").Clear(); - session.FindElementByAccessibilityId("TimerNameTextBox").SendKeys(NewTimerName); - session.FindElementByAccessibilityId("TimerStartButton").Click(); - - Assert.IsNotNull(session.FindElementByAccessibilityId("TimerListView")); - var timers = session.FindElementByAccessibilityId("TimerListView").FindElementsByClassName("ListViewItem"); - Assert.IsTrue(timers.Count > 0); - var timer = timers[timers.Count - 1]; - Assert.IsTrue(timer.FindElementByAccessibilityId("TimerResetButton").Enabled); - Assert.AreEqual(NewTimerName, timer.FindElementByAccessibilityId("TimerNameText").Text); - - timer.SendKeys(OpenQA.Selenium.Keys.Delete + OpenQA.Selenium.Keys.Enter); - } - - //* Pre-baked action + // Pre-baked action //session.FindElementByAccessibilityId("AddTimerButton").Click(); //session.FindElementByAccessibilityId("HourLoopingSelector").FindElementByName("5").Click(); //session.FindElementByAccessibilityId("TimerNameTextBox").Clear(); //session.FindElementByAccessibilityId("TimerNameTextBox").SendKeys(NewTimerName); //session.FindElementByAccessibilityId("TimerStartButton").Click(); + /// + // Pre-baked inspection //Assert.IsNotNull(session.FindElementByAccessibilityId("TimerListView")); - //var timers = session.FindElementByAccessibilityId("TimerListView").FindElementsByClassName("ListViewItem"); - //Assert.IsTrue(timers.Count > 0); - //var timer = timers[timers.Count - 1]; - //Assert.IsTrue(timer.FindElementByAccessibilityId("TimerResetButton").Enabled); - //Assert.AreEqual(NewTimerName, timer.FindElementByAccessibilityId("TimerNameText").Text); + //var timerEntries = session.FindElementByAccessibilityId("TimerListView").FindElementsByClassName("ListViewItem"); + //Assert.IsTrue(timerEntries.Count > 0); + //var timerEntry = timerEntries[timerEntries.Count - 1]; + //var timerEntryResetButton = timerEntry.FindElementByAccessibilityId("TimerResetButton"); + //var timerEntryText = timerEntry.FindElementByAccessibilityId("TimerNameText"); + //Assert.IsTrue(timerEntryResetButton.Enabled); + //Assert.AreEqual(NewTimerName, timerEntryText.Text); + /// + + // Pre-baked cleanup + //timerEntry.SendKeys(OpenQA.Selenium.Keys.Delete + OpenQA.Selenium.Keys.Enter); + /// + + [TestInitialize] + public override void TestInit() + { + // Invoke base class test initialization to ensure that the app is in the main page + base.TestInit(); + + // Navigate to Timer tab + session.FindElementByAccessibilityId("TimerPivotItem").Click(); + } [ClassInitialize] public static void ClassInitialize(TestContext context) @@ -85,15 +85,5 @@ public static void ClassCleanup() TearDown(); } - - [TestInitialize] - public override void TestInit() - { - // Invoke base class test initialization to ensure that the app is in the main page - base.TestInit(); - - // Navigate to Timer tab - session.FindElementByAccessibilityId("TimerPivotItem").Click(); - } } }