Added Calculator Standard Mode UI Tests (#501)
- Added the CalculatorUIFramework to handle the WinAppDriver logic. - Added Standard Mode smoke tests and BVTs to the CalculatorUITests project. - Removed old UI tests that did not use the CalculatorUIFramework
This commit is contained in:
committed by
Matt Cooley
parent
e9551e3774
commit
2517854836
@@ -1,44 +0,0 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using OpenQA.Selenium.Appium;
|
||||
using OpenQA.Selenium.Appium.Windows;
|
||||
using System;
|
||||
|
||||
namespace CalculatorUITests
|
||||
{
|
||||
public class CalculatorSession
|
||||
{
|
||||
// Note: append /wd/hub to the URL if you're directing the test at Appium
|
||||
private const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
|
||||
private const string CalculatorAppId = "Microsoft.WindowsCalculator.Dev_8wekyb3d8bbwe!App";
|
||||
protected static WindowsDriver<WindowsElement> session;
|
||||
|
||||
public static void Setup(TestContext context)
|
||||
{
|
||||
// Launch Calculator application if it is not yet launched
|
||||
if (session == null)
|
||||
{
|
||||
// Create a new 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);
|
||||
options.AddAdditionalCapability("deviceName", "WindowsPC");
|
||||
session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), options);
|
||||
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(180);
|
||||
Assert.IsNotNull(session);
|
||||
}
|
||||
}
|
||||
|
||||
public static void TearDown()
|
||||
{
|
||||
// Close the application and delete the session
|
||||
if (session != null)
|
||||
{
|
||||
session.Quit();
|
||||
session = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
@@ -13,6 +13,10 @@
|
||||
<PackageReference Include="Appium.WebDriver" Version="4.0.0.6-beta" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CalculatorUITestFramework\CalculatorUITestFramework.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="CalculatorUITests.runsettings">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
|
@@ -1,112 +0,0 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using OpenQA.Selenium.Appium.Windows;
|
||||
using System.Threading;
|
||||
using System;
|
||||
|
||||
namespace CalculatorUITests
|
||||
{
|
||||
[TestClass]
|
||||
public class StandardModeTests : CalculatorSession
|
||||
{
|
||||
private static WindowsElement header;
|
||||
private static WindowsElement calculatorResult;
|
||||
|
||||
[TestMethod]
|
||||
public void Addition()
|
||||
{
|
||||
// Find the buttons by their names and click them in sequence to perform 1 + 7 = 8
|
||||
session.FindElementByName("One").Click();
|
||||
session.FindElementByName("Plus").Click();
|
||||
session.FindElementByName("Seven").Click();
|
||||
session.FindElementByName("Equals").Click();
|
||||
Assert.AreEqual("8", GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Division()
|
||||
{
|
||||
// Find the buttons by their accessibility ids and click them in sequence to perform 88 / 11 = 8
|
||||
session.FindElementByAccessibilityId("num8Button").Click();
|
||||
session.FindElementByAccessibilityId("num8Button").Click();
|
||||
session.FindElementByAccessibilityId("divideButton").Click();
|
||||
session.FindElementByAccessibilityId("num1Button").Click();
|
||||
session.FindElementByAccessibilityId("num1Button").Click();
|
||||
session.FindElementByAccessibilityId("equalButton").Click();
|
||||
Assert.AreEqual("8", GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Multiplication()
|
||||
{
|
||||
session.FindElementByAccessibilityId("num9Button").Click();
|
||||
session.FindElementByAccessibilityId("multiplyButton").Click();
|
||||
session.FindElementByAccessibilityId("num9Button").Click();
|
||||
session.FindElementByAccessibilityId("equalButton").Click();
|
||||
Assert.AreEqual("81", GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Subtraction()
|
||||
{
|
||||
// Find the buttons by their accessibility ids using XPath and click them in sequence to perform 9 - 1 = 8
|
||||
session.FindElementByAccessibilityId("num9Button").Click();
|
||||
session.FindElementByAccessibilityId("minusButton").Click();
|
||||
session.FindElementByAccessibilityId("num1Button").Click();
|
||||
session.FindElementByAccessibilityId("equalButton").Click();
|
||||
Assert.AreEqual("8", GetCalculatorResultText());
|
||||
}
|
||||
|
||||
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext context)
|
||||
{
|
||||
// Create session to launch a Calculator window
|
||||
Setup(context);
|
||||
// Identify calculator mode by locating the header
|
||||
try
|
||||
{
|
||||
header = session.FindElementByAccessibilityId("Header");
|
||||
}
|
||||
catch
|
||||
{
|
||||
header = session.FindElementByAccessibilityId("ContentPresenter");
|
||||
}
|
||||
|
||||
// Ensure that calculator is in standard mode
|
||||
if (!header.Text.Equals("Standard", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
session.FindElementByAccessibilityId("TogglePaneButton").Click();
|
||||
Thread.Sleep(TimeSpan.FromSeconds(1));
|
||||
var splitViewPane = session.FindElementByClassName("SplitViewPane");
|
||||
splitViewPane.FindElementByName("Standard Calculator").Click();
|
||||
Thread.Sleep(TimeSpan.FromSeconds(1));
|
||||
Assert.IsTrue(header.Text.Equals("Standard", StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
|
||||
// Locate the calculatorResult element
|
||||
calculatorResult = session.FindElementByAccessibilityId("CalculatorResults");
|
||||
Assert.IsNotNull(calculatorResult);
|
||||
}
|
||||
|
||||
[ClassCleanup]
|
||||
public static void ClassCleanup()
|
||||
{
|
||||
TearDown();
|
||||
}
|
||||
|
||||
[TestInitialize]
|
||||
public void Clear()
|
||||
{
|
||||
session.FindElementByName("Clear").Click();
|
||||
Assert.AreEqual("0", GetCalculatorResultText());
|
||||
}
|
||||
|
||||
private string GetCalculatorResultText()
|
||||
{
|
||||
return calculatorResult.Text.Replace("Display is", string.Empty).Trim();
|
||||
}
|
||||
}
|
||||
}
|
323
src/CalculatorUITests/StandardModeFunctionalTests.cs
Normal file
323
src/CalculatorUITests/StandardModeFunctionalTests.cs
Normal file
@@ -0,0 +1,323 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
using CalculatorUITestFramework;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CalculatorUITests
|
||||
{
|
||||
[TestClass]
|
||||
public class StandardModeFunctionalTests
|
||||
{
|
||||
private static StandardCalculatorPage page = new StandardCalculatorPage();
|
||||
|
||||
/// <summary>
|
||||
/// Initializes the WinAppDriver web driver session.
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
[ClassInitialize]
|
||||
public static void ClassInitialize(TestContext context)
|
||||
{
|
||||
// Create session to launch a Calculator window
|
||||
WinAppDriver.Instance.SetupCalculatorSession(context);
|
||||
|
||||
// Ensure that calculator is in standard mode
|
||||
page.NavigateToStandardCalculator();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Closes the app and WinAppDriver web driver session.
|
||||
/// </summary>
|
||||
[ClassCleanup]
|
||||
public static void ClassCleanup()
|
||||
{
|
||||
// Tear down Calculator session.
|
||||
WinAppDriver.Instance.TearDownCalculatorSession();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensures the calculator is in a cleared state
|
||||
/// </summary>
|
||||
[TestInitialize]
|
||||
public void TestInit()
|
||||
{
|
||||
if ("0" != page.GetCalculatorResultText())
|
||||
{
|
||||
page.ClearAll();
|
||||
}
|
||||
}
|
||||
|
||||
[TestCleanup]
|
||||
public void TestCleanup()
|
||||
{
|
||||
page.ClearAll();
|
||||
}
|
||||
|
||||
#region Smoke Tests
|
||||
[TestMethod]
|
||||
public void SmokeTest_Add()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(3.5);
|
||||
page.StandardOperators.PlusButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(0.25);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
Assert.AreEqual("3.75", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void SmokeTest_Add_KeyboardInput()
|
||||
{
|
||||
page.Header.SendKeys("3+3=");
|
||||
Assert.AreEqual("6", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void SmokeTest_Subtract()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(4.3);
|
||||
page.StandardOperators.MinusButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(2.6);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
Assert.AreEqual("1.7", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void SmokeTest_History()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(-3);
|
||||
page.StandardOperators.PlusButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(-2.6);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
|
||||
page.StandardOperators.NumberPad.Input(2);
|
||||
page.StandardOperators.MinusButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
|
||||
page.StandardOperators.NumberPad.Input(1);
|
||||
page.StandardOperators.MultiplyButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
|
||||
var historyItems = page.HistoryPanel.GetAllHistoryListViewItems();
|
||||
Assert.IsTrue(historyItems[0].Text.Equals("1 × 3 = 3", StringComparison.InvariantCultureIgnoreCase));
|
||||
Assert.IsTrue(historyItems[1].Text.Equals("2 Minus ( 3 = Minus (1", StringComparison.InvariantCultureIgnoreCase));
|
||||
Assert.IsTrue(historyItems[2].Text.Equals("-3 + -2.6 = Minus (5.6", StringComparison.InvariantCultureIgnoreCase));
|
||||
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void SmokeTest_Memory()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(3);
|
||||
page.StandardOperators.PlusButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(0);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
page.MemoryPanel.MemButton.Click();
|
||||
|
||||
page.StandardOperators.NumberPad.Input(2);
|
||||
page.StandardOperators.DivideButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
page.MemoryPanel.MemButton.Click();
|
||||
|
||||
page.StandardOperators.NumberPad.Input(7);
|
||||
page.StandardOperators.MultiplyButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(9);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
page.MemoryPanel.MemButton.Click();
|
||||
|
||||
var memoryItems = page.MemoryPanel.GetAllMemoryListViewItems();
|
||||
|
||||
Assert.IsTrue(memoryItems[0].Text.Equals("63", StringComparison.InvariantCultureIgnoreCase));
|
||||
Assert.IsTrue(memoryItems[1].Text.Equals("0.6666666666666667", StringComparison.InvariantCultureIgnoreCase));
|
||||
Assert.IsTrue(memoryItems[2].Text.Equals("3", StringComparison.InvariantCultureIgnoreCase));
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Basic Arthimetic Tests
|
||||
[TestMethod]
|
||||
public void Operator_Reciprocal()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(4);
|
||||
page.StandardOperators.InvertButton.Click();
|
||||
Assert.AreEqual("0.25", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Operator_Squared()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(-15.5);
|
||||
page.StandardOperators.XPower2Button.Click();
|
||||
Assert.AreEqual("240.25", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Operator_SquareRoot()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(144);
|
||||
page.StandardOperators.SquareRootButton.Click();
|
||||
Assert.AreEqual("12", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Operator_Cubed()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(-3);
|
||||
page.StandardOperators.XPower3Button.Click();
|
||||
Assert.AreEqual("-27", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Operator_Percent()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(600);
|
||||
page.StandardOperators.MultiplyButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(15);
|
||||
page.StandardOperators.PercentButton.Click();
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
Assert.AreEqual("90", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Operator_Delete()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(-12345);
|
||||
page.StandardOperators.BackSpaceButton.Click();
|
||||
Assert.AreEqual("-1,234", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Operator_ClearAll()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(12345);
|
||||
page.StandardOperators.PlusButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(6789);
|
||||
page.StandardOperators.ClearButton.Click();
|
||||
Assert.AreEqual("0", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Operator_ClearEntry()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(-12345);
|
||||
page.StandardOperators.MinusButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(5678);
|
||||
page.StandardOperators.ClearEntryButton.Click();
|
||||
Assert.AreEqual("0", page.GetCalculatorResultText());
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keyboard Input Tests
|
||||
[TestMethod]
|
||||
public void KeyboardInput_Subtract()
|
||||
{
|
||||
page.Header.SendKeys("70090-890987=");
|
||||
Assert.AreEqual("-820,897", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void KeyboardInput_Multiply()
|
||||
{
|
||||
page.Header.SendKeys("-15*3=");
|
||||
Assert.AreEqual("-45", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void KeyboardInput_Divide()
|
||||
{
|
||||
page.Header.SendKeys("26/13=");
|
||||
Assert.AreEqual("2", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void KeyboardInput_SquareRoot()
|
||||
{
|
||||
page.Header.SendKeys("100@");
|
||||
Assert.AreEqual("10", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void KeyboardInput_Cubed()
|
||||
{
|
||||
page.Header.SendKeys("3#");
|
||||
Assert.AreEqual("27", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void KeyboardInput_Percent()
|
||||
{
|
||||
page.Header.SendKeys("34+7%=");
|
||||
Assert.AreEqual("36.38", page.GetCalculatorResultText());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Memory Tests
|
||||
[TestMethod]
|
||||
public void Memory_AddTest()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(12);
|
||||
page.StandardOperators.DivideButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
|
||||
page.MemoryPanel.MemButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(15);
|
||||
page.MemoryPanel.MemPlus.Click();
|
||||
var memoryItems = page.MemoryPanel.GetAllMemoryListViewItems();
|
||||
Assert.IsTrue(memoryItems[0].Text.Equals("19", StringComparison.InvariantCultureIgnoreCase));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Memory_SubtractTest()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(12);
|
||||
page.StandardOperators.DivideButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
|
||||
page.MemoryPanel.MemButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3.3);
|
||||
page.MemoryPanel.MemMinus.Click();
|
||||
var memoryItems = page.MemoryPanel.GetAllMemoryListViewItems();
|
||||
Assert.IsTrue(memoryItems[0].Text.Equals("0.7", StringComparison.InvariantCultureIgnoreCase));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Memory_RecallTest()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(12);
|
||||
page.StandardOperators.DivideButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
|
||||
page.MemoryPanel.MemButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3.3);
|
||||
page.MemoryPanel.MemRecall.Click();
|
||||
var memoryItems = page.MemoryPanel.GetAllMemoryListViewItems();
|
||||
Assert.IsTrue(memoryItems[0].Text.Equals("4", StringComparison.InvariantCultureIgnoreCase));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Memory_ClearTest()
|
||||
{
|
||||
page.StandardOperators.NumberPad.Input(12);
|
||||
page.StandardOperators.DivideButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3);
|
||||
page.StandardOperators.EqualButton.Click();
|
||||
|
||||
page.MemoryPanel.MemButton.Click();
|
||||
page.StandardOperators.NumberPad.Input(3.3);
|
||||
page.MemoryPanel.MemoryClear.Click();
|
||||
page.MemoryPanel.OpenMemoryPanel();
|
||||
Assert.IsNotNull(page.MemoryPanel.MemoryPaneEmptyLabel);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user