diff --git a/src/common/UITestAutomation/Element/By.cs b/src/common/UITestAutomation/Element/By.cs index 5ccaf1eb06eb..2e4814accde5 100644 --- a/src/common/UITestAutomation/Element/By.cs +++ b/src/common/UITestAutomation/Element/By.cs @@ -31,6 +31,13 @@ public override string ToString() /// A By object. public static By Name(string name) => new By(OpenQA.Selenium.By.Name(name)); + /// + /// Creates a By object using the className attribute. + /// + /// The className attribute to search for. + /// A By object. + public static By ClassName(string className) => new By(OpenQA.Selenium.By.ClassName(className)); + /// /// Creates a By object using the ID attribute. /// diff --git a/src/modules/fancyzones/UITests-FancyZonesEditor/RunFancyZonesEditorTest.cs b/src/modules/fancyzones/UITests-FancyZonesEditor/RunFancyZonesEditorTest.cs index 63a91d64cf6e..59c3daaa62da 100644 --- a/src/modules/fancyzones/UITests-FancyZonesEditor/RunFancyZonesEditorTest.cs +++ b/src/modules/fancyzones/UITests-FancyZonesEditor/RunFancyZonesEditorTest.cs @@ -7,22 +7,27 @@ using FancyZonesEditorCommon.Data; using Microsoft.FancyZonesEditor.UITests; using Microsoft.FancyZonesEditor.UnitTests.Utils; +using Microsoft.PowerToys.UITest; using Microsoft.VisualStudio.TestTools.UnitTesting; +using OpenQA.Selenium.Appium.Windows; +using static Microsoft.FancyZonesEditor.UnitTests.Utils.FancyZonesEditorHelper; namespace UITests_FancyZonesEditor { [TestClass] - public class RunFancyZonesEditorTest + public class RunFancyZonesEditorTest : UITestBase { - private static FancyZonesEditorSession? _session; - private static TestContext? _context; + public RunFancyZonesEditorTest() + : base(PowerToysModule.FancyZone) + { + } [ClassInitialize] public static void ClassInitialize(TestContext testContext) { - _context = testContext; + FancyZonesEditorHelper.Files.Restore(); - // prepare files to launch Editor without errors + // prepare test editor parameters with 2 monitors before launching the editor EditorParameters editorParameters = new EditorParameters(); EditorParameters.ParamsWrapper parameters = new EditorParameters.ParamsWrapper { @@ -46,9 +51,25 @@ public static void ClassInitialize(TestContext testContext) MonitorWidth = 1920, IsSelected = true, }, + new EditorParameters.NativeMonitorDataWrapper + { + Monitor = "monitor-2", + MonitorInstanceId = "instance-id-2", + MonitorSerialNumber = "serial-number-2", + MonitorNumber = 2, + VirtualDesktop = "{FF34D993-73F3-4B8C-AA03-73730A01D6A8}", + Dpi = 96, + LeftCoordinate = 1920, + TopCoordinate = 0, + WorkAreaHeight = 1040, + WorkAreaWidth = 1920, + MonitorHeight = 1080, + MonitorWidth = 1920, + IsSelected = false, + }, }, }; - FancyZonesEditorSession.Files.ParamsIOHelper.WriteData(editorParameters.Serialize(parameters)); + FancyZonesEditorHelper.Files.ParamsIOHelper.WriteData(editorParameters.Serialize(parameters)); LayoutTemplates layoutTemplates = new LayoutTemplates(); LayoutTemplates.TemplateLayoutsListWrapper templateLayoutsListWrapper = new LayoutTemplates.TemplateLayoutsListWrapper @@ -57,16 +78,16 @@ public static void ClassInitialize(TestContext testContext) { new LayoutTemplates.TemplateLayoutWrapper { - Type = Constants.TemplateLayoutJsonTags[Constants.TemplateLayout.Empty], + Type = LayoutType.Blank.TypeToString(), }, new LayoutTemplates.TemplateLayoutWrapper { - Type = Constants.TemplateLayoutJsonTags[Constants.TemplateLayout.Focus], + Type = LayoutType.Focus.TypeToString(), ZoneCount = 10, }, new LayoutTemplates.TemplateLayoutWrapper { - Type = Constants.TemplateLayoutJsonTags[Constants.TemplateLayout.Rows], + Type = LayoutType.Rows.TypeToString(), ZoneCount = 2, ShowSpacing = true, Spacing = 10, @@ -74,7 +95,7 @@ public static void ClassInitialize(TestContext testContext) }, new LayoutTemplates.TemplateLayoutWrapper { - Type = Constants.TemplateLayoutJsonTags[Constants.TemplateLayout.Columns], + Type = LayoutType.Columns.TypeToString(), ZoneCount = 2, ShowSpacing = true, Spacing = 20, @@ -82,7 +103,7 @@ public static void ClassInitialize(TestContext testContext) }, new LayoutTemplates.TemplateLayoutWrapper { - Type = Constants.TemplateLayoutJsonTags[Constants.TemplateLayout.Grid], + Type = LayoutType.Grid.TypeToString(), ZoneCount = 4, ShowSpacing = false, Spacing = 10, @@ -90,7 +111,7 @@ public static void ClassInitialize(TestContext testContext) }, new LayoutTemplates.TemplateLayoutWrapper { - Type = Constants.TemplateLayoutJsonTags[Constants.TemplateLayout.PriorityGrid], + Type = LayoutType.PriorityGrid.TypeToString(), ZoneCount = 3, ShowSpacing = true, Spacing = 1, @@ -98,81 +119,112 @@ public static void ClassInitialize(TestContext testContext) }, }, }; - FancyZonesEditorSession.Files.LayoutTemplatesIOHelper.WriteData(layoutTemplates.Serialize(templateLayoutsListWrapper)); + FancyZonesEditorHelper.Files.LayoutTemplatesIOHelper.WriteData(layoutTemplates.Serialize(templateLayoutsListWrapper)); CustomLayouts customLayouts = new CustomLayouts(); CustomLayouts.CustomLayoutListWrapper customLayoutListWrapper = new CustomLayouts.CustomLayoutListWrapper { - CustomLayouts = new List { }, + CustomLayouts = new List + { + new CustomLayouts.CustomLayoutWrapper + { + Uuid = "{E7807D0D-6223-4883-B15B-1F3883944C09}", + Type = CustomLayout.Canvas.TypeToString(), + Name = "Custom layout", + Info = new CustomLayouts().ToJsonElement(new CustomLayouts.CanvasInfoWrapper + { + RefHeight = 952, + RefWidth = 1500, + SensitivityRadius = 10, + Zones = new List { }, + }), + }, + }, }; - FancyZonesEditorSession.Files.CustomLayoutsIOHelper.WriteData(customLayouts.Serialize(customLayoutListWrapper)); + FancyZonesEditorHelper.Files.CustomLayoutsIOHelper.WriteData(customLayouts.Serialize(customLayoutListWrapper)); DefaultLayouts defaultLayouts = new DefaultLayouts(); DefaultLayouts.DefaultLayoutsListWrapper defaultLayoutsListWrapper = new DefaultLayouts.DefaultLayoutsListWrapper { DefaultLayouts = new List { }, }; - FancyZonesEditorSession.Files.DefaultLayoutsIOHelper.WriteData(defaultLayouts.Serialize(defaultLayoutsListWrapper)); + FancyZonesEditorHelper.Files.DefaultLayoutsIOHelper.WriteData(defaultLayouts.Serialize(defaultLayoutsListWrapper)); LayoutHotkeys layoutHotkeys = new LayoutHotkeys(); LayoutHotkeys.LayoutHotkeysWrapper layoutHotkeysWrapper = new LayoutHotkeys.LayoutHotkeysWrapper { LayoutHotkeys = new List { }, }; - FancyZonesEditorSession.Files.LayoutHotkeysIOHelper.WriteData(layoutHotkeys.Serialize(layoutHotkeysWrapper)); + FancyZonesEditorHelper.Files.LayoutHotkeysIOHelper.WriteData(layoutHotkeys.Serialize(layoutHotkeysWrapper)); AppliedLayouts appliedLayouts = new AppliedLayouts(); AppliedLayouts.AppliedLayoutsListWrapper appliedLayoutsWrapper = new AppliedLayouts.AppliedLayoutsListWrapper { AppliedLayouts = new List { }, }; - FancyZonesEditorSession.Files.AppliedLayoutsIOHelper.WriteData(appliedLayouts.Serialize(appliedLayoutsWrapper)); + FancyZonesEditorHelper.Files.AppliedLayoutsIOHelper.WriteData(appliedLayouts.Serialize(appliedLayoutsWrapper)); } [ClassCleanup] public static void ClassCleanup() { - FancyZonesEditorSession.Files.Restore(); - _context = null; + FancyZonesEditorHelper.Files.Restore(); } [TestInitialize] public void TestInitialize() { - _session = new FancyZonesEditorSession(_context!); } [TestCleanup] public void TestCleanup() { - _session?.Close(_context!); + this.TestClean(); } [TestMethod] - public void OpenEditorWindow() // verify the session is initialized + public void OpenNewLayoutDialog() // verify the new layout dialog is opened { - Assert.IsNotNull(_session?.Session); + Session.FindByAccessibilityId