From 3f486ea3db16d84d73f6a3b6d4e25ea9508c52fa Mon Sep 17 00:00:00 2001 From: Gleb Khmyznikov Date: Fri, 1 Aug 2025 10:39:36 +0200 Subject: [PATCH] init --- PowerToys.sln | 18 +++++ .../ScreenRuler.UITests/ActivationTest.cs | 68 +++++++++++++++++++ .../ScreenRuler.UITests/Package.appxmanifest | 51 ++++++++++++++ .../ScreenRuler.UITests.csproj | 23 +++++++ .../Tests/ScreenRuler.UITests/app.manifest | 19 ++++++ 5 files changed, 179 insertions(+) create mode 100644 src/modules/MeasureTool/Tests/ScreenRuler.UITests/ActivationTest.cs create mode 100644 src/modules/MeasureTool/Tests/ScreenRuler.UITests/Package.appxmanifest create mode 100644 src/modules/MeasureTool/Tests/ScreenRuler.UITests/ScreenRuler.UITests.csproj create mode 100644 src/modules/MeasureTool/Tests/ScreenRuler.UITests/app.manifest diff --git a/PowerToys.sln b/PowerToys.sln index 4a94baa77f..645c8cd930 100644 --- a/PowerToys.sln +++ b/PowerToys.sln @@ -786,6 +786,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.Window EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CmdPal.Ext.UnitTestBase", "src\modules\cmdpal\Tests\Microsoft.CmdPal.Ext.UnitTestsBase\Microsoft.CmdPal.Ext.UnitTestBase.csproj", "{00D8659C-2068-40B6-8B86-759CD6284BBB}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{E11826E1-76DF-42AC-985C-164CC2EE57A1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScreenRuler.UITests", "src\modules\MeasureTool\Tests\ScreenRuler.UITests\ScreenRuler.UITests.csproj", "{66C069F8-C548-4CA6-8CDE-239104D68E88}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM64 = Debug|ARM64 @@ -2840,6 +2844,18 @@ Global {00D8659C-2068-40B6-8B86-759CD6284BBB}.Release|ARM64.Build.0 = Release|ARM64 {00D8659C-2068-40B6-8B86-759CD6284BBB}.Release|x64.ActiveCfg = Release|x64 {00D8659C-2068-40B6-8B86-759CD6284BBB}.Release|x64.Build.0 = Release|x64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Debug|ARM64.Build.0 = Debug|ARM64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Debug|x64.ActiveCfg = Debug|x64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Debug|x64.Build.0 = Debug|x64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Debug|x64.Deploy.0 = Debug|x64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Release|ARM64.ActiveCfg = Release|ARM64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Release|ARM64.Build.0 = Release|ARM64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Release|ARM64.Deploy.0 = Release|ARM64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Release|x64.ActiveCfg = Release|x64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Release|x64.Build.0 = Release|x64 + {66C069F8-C548-4CA6-8CDE-239104D68E88}.Release|x64.Deploy.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -3150,6 +3166,8 @@ Global {E816D7AF-4688-4ECB-97CC-3D8E798F3828} = {8EF25507-2575-4ADE-BF7E-D23376903AB8} {E816D7B0-4688-4ECB-97CC-3D8E798F3829} = {8EF25507-2575-4ADE-BF7E-D23376903AB8} {00D8659C-2068-40B6-8B86-759CD6284BBB} = {8EF25507-2575-4ADE-BF7E-D23376903AB8} + {E11826E1-76DF-42AC-985C-164CC2EE57A1} = {7AC943C9-52E8-44CF-9083-744D8049667B} + {66C069F8-C548-4CA6-8CDE-239104D68E88} = {E11826E1-76DF-42AC-985C-164CC2EE57A1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C3A2F9D1-7930-4EF4-A6FC-7EE0A99821D0} diff --git a/src/modules/MeasureTool/Tests/ScreenRuler.UITests/ActivationTest.cs b/src/modules/MeasureTool/Tests/ScreenRuler.UITests/ActivationTest.cs new file mode 100644 index 0000000000..433cd1d084 --- /dev/null +++ b/src/modules/MeasureTool/Tests/ScreenRuler.UITests/ActivationTest.cs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation +// 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; +using System.Globalization; +using System.Threading.Tasks; +using Microsoft.PowerToys.UITest; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace ScreenRuler.UITests +{ + [TestClass] + public class ActivationTest : UITestBase + { + public ActivationTest() + : base(PowerToysModule.PowerToysSettings, WindowSize.Large) + { + } + + /// + /// Test MeasureTool keyboard shortcuts + /// + /// + /// Validating toolbar appears when MeasureTool is activated + /// + /// + /// Validating Ctrl+1 activates Bounds tool + /// + /// + /// Validating Escape closes the toolbar + /// + /// + /// + [TestMethod("MeasureTool.Shortcuts.ActivateToolbar")] + [TestCategory("Measure Tool #1")] + public void TestActivateMeasureTool() + { + // Launch PowerToys Settings + LaunchFromSetting(); + + // Enable MeasureTool + var foundCustom = this.Find("Screen Ruler"); + Assert.IsNotNull(foundCustom, "Screen Ruler group not found."); + + // Toggle on MeasureTool + foundCustom.Find("Enable Measure Tool").Toggle(true); + Task.Delay(1000).Wait(); + } + + private void LaunchFromSetting() + { + this.Session.SetMainWindowSize(WindowSize.Medium); + + // Navigate to Measure Tool settings + if (this.FindAll("Screen Ruler", 2000).Count == 0) + { + // Expand Utilities list-group if needed + this.Find("Utilities").Click(); + Task.Delay(1000).Wait(); + } + + Task.Delay(1000).Wait(); + this.Find("Screen Ruler").Click(); + Task.Delay(2000).Wait(); + } + } +} diff --git a/src/modules/MeasureTool/Tests/ScreenRuler.UITests/Package.appxmanifest b/src/modules/MeasureTool/Tests/ScreenRuler.UITests/Package.appxmanifest new file mode 100644 index 0000000000..4a13746a50 --- /dev/null +++ b/src/modules/MeasureTool/Tests/ScreenRuler.UITests/Package.appxmanifest @@ -0,0 +1,51 @@ + + + + + + + + + + ScreenRuler.UITests + gkhmyznikov + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/modules/MeasureTool/Tests/ScreenRuler.UITests/ScreenRuler.UITests.csproj b/src/modules/MeasureTool/Tests/ScreenRuler.UITests/ScreenRuler.UITests.csproj new file mode 100644 index 0000000000..bf5ce9b47d --- /dev/null +++ b/src/modules/MeasureTool/Tests/ScreenRuler.UITests/ScreenRuler.UITests.csproj @@ -0,0 +1,23 @@ + + + + PowerToys.MeasureToolUI.UITests + PowerToys.MeasureToolUI.UITests + false + true + enable + Library + + + false + + + $(SolutionDir)$(Platform)\$(Configuration)\tests\PowerToys.MeasureToolUI.UITests\ + + + + + + + + \ No newline at end of file diff --git a/src/modules/MeasureTool/Tests/ScreenRuler.UITests/app.manifest b/src/modules/MeasureTool/Tests/ScreenRuler.UITests/app.manifest new file mode 100644 index 0000000000..b15e30cce2 --- /dev/null +++ b/src/modules/MeasureTool/Tests/ScreenRuler.UITests/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file