From 72a0341a0e30bd5fc2257dfcce5ef7675ed77405 Mon Sep 17 00:00:00 2001 From: Seraphima Zykova Date: Sat, 21 Mar 2020 16:35:23 +0300 Subject: [PATCH] Editor templates tests (#1639) * edit-cancel tests for templates * edit-save tests for templates --- .../EditorTemplatesEditTests.cs | 212 ++++++++++++++++ src/tests/win-app-driver/PowerToysSession.cs | 2 + .../win-app-driver/win-app-driver.csproj | 229 +++++++++--------- 3 files changed, 329 insertions(+), 114 deletions(-) create mode 100644 src/tests/win-app-driver/FancyZonesTests/EditorTemplatesEditTests.cs diff --git a/src/tests/win-app-driver/FancyZonesTests/EditorTemplatesEditTests.cs b/src/tests/win-app-driver/FancyZonesTests/EditorTemplatesEditTests.cs new file mode 100644 index 0000000000..d6f6a88ef7 --- /dev/null +++ b/src/tests/win-app-driver/FancyZonesTests/EditorTemplatesEditTests.cs @@ -0,0 +1,212 @@ +using System.IO; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json.Linq; +using OpenQA.Selenium.Appium.Windows; +using OpenQA.Selenium.Interactions; + +namespace PowerToysTests +{ + [TestClass] + public class FancyZonesEditorTemplatesEditTests : PowerToysSession + { + WindowsElement editorWindow; + + private static void ResetDefaultFancyZonesSettings() + { + if (!Directory.Exists(_settingsFolderPath)) + { + Directory.CreateDirectory(_settingsFolderPath); + } + + string settings = "{\"version\":\"1.0\",\"name\":\"FancyZones\",\"properties\":{\"fancyzones_shiftDrag\":{\"value\":true},\"fancyzones_overrideSnapHotkeys\":{\"value\":false},\"fancyzones_zoneSetChange_flashZones\":{\"value\":false},\"fancyzones_displayChange_moveWindows\":{\"value\":false},\"fancyzones_zoneSetChange_moveWindows\":{\"value\":false},\"fancyzones_virtualDesktopChange_moveWindows\":{\"value\":false},\"fancyzones_appLastZone_moveWindows\":{\"value\":false},\"use_cursorpos_editor_startupscreen\":{\"value\":true},\"fancyzones_zoneHighlightColor\":{\"value\":\"#0078D7\"},\"fancyzones_highlight_opacity\":{\"value\":90},\"fancyzones_editor_hotkey\":{\"value\":{\"win\":true,\"ctrl\":false,\"alt\":false,\"shift\":false,\"code\":192,\"key\":\"`\"}},\"fancyzones_excluded_apps\":{\"value\":\"\"}}}"; + File.WriteAllText(_settingsPath, settings); + } + + private void ResetDefautZoneSettings() + { + string zoneSettings = "{\"app-zone-history\":[],\"devices\":[],\"custom-zone-sets\":[]}"; + File.WriteAllText(_zoneSettingsPath, zoneSettings); + } + + private void OpenEditor() + { + new Actions(session).KeyDown(OpenQA.Selenium.Keys.Command).SendKeys("`").KeyUp(OpenQA.Selenium.Keys.Command).Perform(); + ShortWait(); + + editorWindow = session.FindElementByXPath("//Window[@Name=\"FancyZones Editor\"]"); + } + + private void OpenTemplates() + { + WindowsElement templatesTab = session.FindElementByName("Templates"); + templatesTab.Click(); + string isSelected = templatesTab.GetAttribute("SelectionItem.IsSelected"); + Assert.AreEqual("True", isSelected, "Templates tab cannot be opened"); + } + + private void OpenCreatorWindow(string tabName, string creatorWindowName) + { + string elementXPath = "//Text[@Name=\"" + tabName + "\"]"; + session.FindElementByXPath(elementXPath).Click(); + session.FindElementByAccessibilityId("EditTemplateButton").Click(); + + WindowsElement creatorWindow = session.FindElementByName(creatorWindowName); + Assert.IsNotNull(creatorWindow, "Creator window didn't open"); + } + + private void ChangeLayout() + { + new Actions(session).MoveToElement(session.FindElementByAccessibilityId("PART_TitleBar")).MoveByOffset(0, -50).Click().Perform(); + } + + private void CancelTest() + { + new Actions(session).MoveToElement(session.FindElementByXPath("//Button[@Name=\"Cancel\"]")).Click().Perform(); + ShortWait(); + + Assert.AreEqual(_initialZoneSettings, File.ReadAllText(_zoneSettingsPath), "Settings were changed"); + } + + private void SaveTest() + { + new Actions(session).MoveToElement(session.FindElementByName("Save and apply")).Click().Perform(); + ShortWait(); + + JObject settings = JObject.Parse(File.ReadAllText(_zoneSettingsPath)); + Assert.AreEqual("Custom Layout 1", settings["custom-zone-sets"][0]["name"]); + Assert.AreEqual(settings["custom-zone-sets"][0]["uuid"], settings["devices"][0]["active-zoneset"]["uuid"]); + } + + [TestMethod] + public void EditFocusCancel() + { + OpenCreatorWindow("Focus", "Custom layout creator"); + session.FindElementByAccessibilityId("newZoneButton").Click(); + CancelTest(); + } + + [TestMethod] + public void EditColumnsCancel() + { + OpenCreatorWindow("Columns", "Custom table layout creator"); + ChangeLayout(); + CancelTest(); + } + + [TestMethod] + public void EditRowsCancel() + { + OpenCreatorWindow("Rows", "Custom table layout creator"); + ChangeLayout(); + CancelTest(); + } + + [TestMethod] + public void EditGridCancel() + { + OpenCreatorWindow("Grid", "Custom table layout creator"); + ChangeLayout(); + CancelTest(); + } + + [TestMethod] + public void EditPriorityGridCancel() + { + OpenCreatorWindow("Priority Grid", "Custom table layout creator"); + ChangeLayout(); + CancelTest(); + } + + [TestMethod] + public void EditFocusSave() + { + OpenCreatorWindow("Focus", "Custom layout creator"); + session.FindElementByAccessibilityId("newZoneButton").Click(); + SaveTest(); + } + + [TestMethod] + public void EditColumnsSave() + { + OpenCreatorWindow("Columns", "Custom table layout creator"); + ChangeLayout(); + SaveTest(); + } + + [TestMethod] + public void EditRowsSave() + { + OpenCreatorWindow("Rows", "Custom table layout creator"); + ChangeLayout(); + SaveTest(); + } + + [TestMethod] + public void EditGridSave() + { + OpenCreatorWindow("Grid", "Custom table layout creator"); + ChangeLayout(); + SaveTest(); + } + + [TestMethod] + public void EditPriorityGridSave() + { + OpenCreatorWindow("Priority Grid", "Custom table layout creator"); + ChangeLayout(); + SaveTest(); + } + + [ClassInitialize] + public static void ClassInitialize(TestContext context) + { + Setup(context, false); + + if (isPowerToysLaunched) + { + ExitPowerToys(); + } + ResetDefaultFancyZonesSettings(); + LaunchPowerToys(); + } + + [ClassCleanup] + public static void ClassCleanup() + { + CloseSettings(); + TearDown(); + } + + [TestInitialize] + public void TestInitialize() + { + if (!isPowerToysLaunched) + { + LaunchPowerToys(); + } + OpenEditor(); + OpenTemplates(); + } + + [TestCleanup] + public void TestCleanup() + { + //Close editor + try + { + if (editorWindow != null) + { + editorWindow.SendKeys(OpenQA.Selenium.Keys.Alt + OpenQA.Selenium.Keys.F4); + ShortWait(); + } + } + catch(OpenQA.Selenium.WebDriverException) + { + //editor has already closed + } + + ResetDefautZoneSettings(); + ExitPowerToys(); + } + } +} \ No newline at end of file diff --git a/src/tests/win-app-driver/PowerToysSession.cs b/src/tests/win-app-driver/PowerToysSession.cs index 554b279f7f..f20f21fed3 100644 --- a/src/tests/win-app-driver/PowerToysSession.cs +++ b/src/tests/win-app-driver/PowerToysSession.cs @@ -206,6 +206,7 @@ namespace PowerToysTests WindowsDriver driver = new WindowsDriver(new Uri(WindowsApplicationDriverUrl), opts); Assert.IsNotNull(driver); driver.LaunchApp(); + isPowerToysLaunched = true; } catch (OpenQA.Selenium.WebDriverException) { @@ -224,6 +225,7 @@ namespace PowerToysTests session.FindElementByXPath("//MenuItem[@Name=\"Exit\"]").Click(); trayButton.Click(); //close tray + isPowerToysLaunched = false; } } } diff --git a/src/tests/win-app-driver/win-app-driver.csproj b/src/tests/win-app-driver/win-app-driver.csproj index cb0b533c93..f55773b686 100644 --- a/src/tests/win-app-driver/win-app-driver.csproj +++ b/src/tests/win-app-driver/win-app-driver.csproj @@ -1,115 +1,116 @@ - - - - - - Debug - AnyCPU - {880ED251-9E16-4713-9A70-D35FE0C01669} - Library - Properties - PowerToysTests - PowerToysTests - v4.6.1 - 512 - {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 15.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages - False - UnitTest - - - $(SolutionDir)$(Platform)\$(Configuration)\obj\$(AssemblyName)\ - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - x64 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - x64 - - - - ..\..\..\packages\Appium.WebDriver.4.1.1\lib\net45\Appium.Net.dll - - - ..\..\..\packages\Castle.Core.4.3.1\lib\net45\Castle.Core.dll - True - - - ..\..\..\packages\MSTest.TestFramework.2.1.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll - True - - - ..\..\..\packages\MSTest.TestFramework.2.1.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll - True - - - ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll - True - - - ..\..\..\packages\DotNetSeleniumExtras.PageObjects.3.11.0\lib\net45\SeleniumExtras.PageObjects.dll - True - - - C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll - - - C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll - - - C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll - - - - - ..\..\..\packages\Selenium.WebDriver.3.141.0\lib\net45\WebDriver.dll - True - - - ..\..\..\packages\Selenium.Support.3.141.0\lib\net45\WebDriver.Support.dll - True - - - - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - + + + + + + Debug + AnyCPU + {880ED251-9E16-4713-9A70-D35FE0C01669} + Library + Properties + PowerToysTests + PowerToysTests + v4.7.2 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + $(SolutionDir)$(Platform)\$(Configuration)\obj\$(AssemblyName)\ + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x64 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + x64 + + + + ..\..\..\packages\Appium.WebDriver.4.1.1\lib\net45\Appium.Net.dll + + + ..\..\..\packages\Castle.Core.4.3.1\lib\net45\Castle.Core.dll + True + + + ..\..\..\packages\MSTest.TestFramework.2.1.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll + True + + + ..\..\..\packages\MSTest.TestFramework.2.1.0\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + True + + + ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll + True + + + ..\..\..\packages\DotNetSeleniumExtras.PageObjects.3.11.0\lib\net45\SeleniumExtras.PageObjects.dll + True + + + C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll + + + C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll + + + C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll + + + + + ..\..\..\packages\Selenium.WebDriver.3.141.0\lib\net45\WebDriver.dll + True + + + ..\..\..\packages\Selenium.Support.3.141.0\lib\net45\WebDriver.Support.dll + True + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file