From 3991e202cfa685c5d597ef196c047342a45c08db Mon Sep 17 00:00:00 2001 From: seraphima Date: Tue, 14 Nov 2023 13:07:23 +0100 Subject: [PATCH] added sample tests --- .../RunFancyZonesEditorTest.cs | 57 ++++++++++++++++++- .../Utils/FancyZonesEditorSession.cs | 41 +++++++++++++ 2 files changed, 96 insertions(+), 2 deletions(-) diff --git a/src/modules/fancyzones/UITests-FancyZonesEditor/RunFancyZonesEditorTest.cs b/src/modules/fancyzones/UITests-FancyZonesEditor/RunFancyZonesEditorTest.cs index c9b0ce97b3..fc1dddc464 100644 --- a/src/modules/fancyzones/UITests-FancyZonesEditor/RunFancyZonesEditorTest.cs +++ b/src/modules/fancyzones/UITests-FancyZonesEditor/RunFancyZonesEditorTest.cs @@ -2,6 +2,7 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System.Collections.Generic; using Microsoft.FancyZonesEditor.UnitTests.Utils; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -13,23 +14,75 @@ namespace UITests_FancyZonesEditor private static FancyZonesEditorSession? _session; private static TestContext? _context; + private enum Layouts + { + Empty, + Focus, + Rows, + Columns, + Grid, + PriorityGrid, + } + + private static readonly Dictionary LayoutNames = new Dictionary() + { + { Layouts.Empty, "No layout" }, + { Layouts.Focus, "Focus" }, + { Layouts.Rows, "Rows" }, + { Layouts.Columns, "Columns" }, + { Layouts.Grid, "Grid" }, + { Layouts.PriorityGrid, "PriorityGrid" }, + }; + [ClassInitialize] public static void ClassInitialize(TestContext testContext) { _context = testContext; - _session = new FancyZonesEditorSession(testContext); } [ClassCleanup] public static void ClassCleanup() + { + _context = null; + } + + [TestInitialize] + public void TestInitialize() + { + _session = new FancyZonesEditorSession(_context!); + } + + [TestCleanup] + public void TestCleanup() { _session?.Close(_context!); } [TestMethod] - public void RunFancyZonesEditor() + public void OpenEditorWindow() // verify the session is initialized { Assert.IsNotNull(_session?.Session); } + + [TestMethod] + public void OpenNewLayoutDialog() // verify the new layout dialog is opened + { + _session?.Click_CreateNewLayout(); + Assert.IsNotNull(_session?.Session?.FindElementsByName("Choose layout type")); // check the pane header + } + + [TestMethod] + public void OpenEditLayoutDialog() // verify the edit layout dialog is opened + { + _session?.Click_EditLayout(LayoutNames[Layouts.Grid]); + Assert.IsNotNull(_session?.Session?.FindElementByAccessibilityId("EditLayoutDialogTitle")); // check the pane header + Assert.IsNotNull(_session?.Session?.FindElementsByName("Edit 'Grid'")); // verify it's opened for the correct layout + } + + [TestMethod] + public void OpenContextMenu() // verify the context menu is opened + { + Assert.IsNotNull(_session?.OpenContextMenu(LayoutNames[Layouts.Columns])); + } } } diff --git a/src/modules/fancyzones/UITests-FancyZonesEditor/Utils/FancyZonesEditorSession.cs b/src/modules/fancyzones/UITests-FancyZonesEditor/Utils/FancyZonesEditorSession.cs index 31f30307c2..049fac7865 100644 --- a/src/modules/fancyzones/UITests-FancyZonesEditor/Utils/FancyZonesEditorSession.cs +++ b/src/modules/fancyzones/UITests-FancyZonesEditor/Utils/FancyZonesEditorSession.cs @@ -9,6 +9,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenQA.Selenium; using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium.Windows; +using OpenQA.Selenium.Interactions; namespace Microsoft.FancyZonesEditor.UnitTests.Utils { @@ -67,5 +68,45 @@ namespace Microsoft.FancyZonesEditor.UnitTests.Utils Session.Dispose(); } } + + private WindowsElement? GetLayout(string layoutName) + { + var listItem = Session?.FindElementByName(layoutName); + Assert.IsNotNull(listItem, "Layout " + layoutName + " not found"); + return listItem; + } + + public WindowsElement? OpenContextMenu(string layoutName) + { + RightClick_Layout(layoutName); + var menu = Session?.FindElementByClassName("ContextMenu"); + Assert.IsNotNull(menu, "Context menu not found"); + return menu; + } + + public void Click_CreateNewLayout() + { + var button = Session?.FindElementByAccessibilityId("NewLayoutButton"); + Assert.IsNotNull(button, "Create new layout button not found"); + button?.Click(); + } + + public void Click_EditLayout(string layoutName) + { + var layout = GetLayout(layoutName); + var editButton = layout?.FindElementByAccessibilityId("EditLayoutButton"); + Assert.IsNotNull(editButton, "Edit button not found"); + editButton.Click(); + } + + public void RightClick_Layout(string layoutName) + { + var layout = GetLayout(layoutName); + Actions actions = new Actions(Session); + actions.MoveToElement(layout); + actions.MoveByOffset(30, 30); + actions.ContextClick(); + actions.Build().Perform(); + } } }