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