public static void Win10SetupCalc(TestContext testContext) { _fixture = new UiAutomationFixture(); UiAutomationFixture.TimeoutSeconds = 5; Assert.IsFalse(_fixture.SwitchToProcess("name:Calculator"), "Check there is no calculator running already"); _fixture.NoAutomaticSwitchToStartedApplication(); _fixture.StartApplication("calc.exe"); Assert.IsTrue(UiAutomationFixture.WaitForProcess("name:Calculator"), "Wait for process Calculator"); Assert.IsTrue(_fixture.SwitchToProcess("name:Calculator"), "Switch to calc app"); }
public void FixtureIsUwpTest() { var fixture = new UiAutomationFixture(); fixture.StartApplication("notepad"); Assert.IsNotNull(fixture.ApplicationProcessId); var process = Process.GetProcessById(fixture.ApplicationProcessId.Value); Assert.IsFalse(AppLauncher.IsUwpApp(process.Handle), "Notepad is not UWP"); Assert.IsTrue(fixture.CloseApplication(), "Close notepad"); fixture.StartApplicationWithArguments(@"windows.immersivecontrolpanel_cw5n1h2txyewy", null); Assert.IsNotNull(fixture.ApplicationProcessId); var pid = fixture.ApplicationProcessId.Value; process = Process.GetProcessById(pid); Assert.IsTrue(AppLauncher.IsUwpApp(process.Handle), "App is UWP"); Assert.AreEqual(IntPtr.Zero, process.MainWindowHandle, "Main window handle for Uwp window is 0"); Assert.IsTrue(fixture.SwitchToParentWindow(), "Switch to parent"); Assert.AreNotEqual(pid, fixture.ApplicationProcessId, @"Pids are not equal"); Assert.IsTrue(AppLauncher.IsUwpApp(process.Handle), "Parent is UWP"); Assert.IsNotNull(fixture.ApplicationProcessId); process = Process.GetProcessById(fixture.ApplicationProcessId.Value); Assert.AreNotEqual(IntPtr.Zero, process.MainWindowHandle, "Main window handle for Uwp parent window is not 0"); Assert.IsTrue(fixture.SwitchToProcess("ProcessId:" + pid), "Switch to child"); Assert.IsTrue(fixture.CloseApplication(), "Close UWP app"); }
public void FixtureRunWord() { // Word doesn't always start a new process, but will re-use an existing process if that was already running. // That's why we don't use the automatic switch to the process, but switch by its process name separately var fixture = new UiAutomationFixture(); UiAutomationFixture.SearchBy("Name"); fixture.NoAutomaticSwitchToStartedApplication(); UiAutomationFixture.TimeoutSeconds = 10; Assert.IsTrue(fixture.StartApplicationWithArguments(WordPath, "/w /q"), "Started Word"); UiAutomationFixture.WaitSeconds(3); // todo: this fails when Word is already active when the test runs. Make more resilient Assert.IsTrue(fixture.SwitchToProcess(@"name:winword"), "Switched to Word"); fixture.PressKey(@"The Quick Brown Fox Jumps Over the Lazy Dog+{HOME}"); Assert.IsTrue(fixture.ClickControl("ControlType:Button && Name:Bold"), "Click Bold"); Assert.IsTrue(fixture.ControlExists("Name:Heading 1"), "Heading 1 found"); Assert.IsTrue(fixture.ClickControl("Heading 1"), "Click Heading 1"); Assert.IsTrue(fixture.ClickControl("ControlType:Button && Name:Underline"), "Click Underline"); Assert.IsFalse(fixture.CloseApplication(), "Close application doesn't work due to dialog"); // This is a tricky one, as it is a control on a modal dialog. // It works because click has a fallback to simulate a mouseclick in the center of the control's bounding rectangle Assert.IsTrue(fixture.ClickControl("Name:Don't Save"), "click Don't Save"); // Normally exiting Word can take a very long time. 10 seconds is typically not enough UiAutomationFixture.TimeoutSeconds = 30; Assert.IsTrue(UiAutomationFixture.WaitUntilProcessEnds(@"winword"), "WinWord process ends"); UiAutomationFixture.TimeoutSeconds = 3; fixture.SetAutomaticSwitchToStartedApplication(); }
public void FixtureStartAndSwitchTestOnWord2016() { UiAutomationFixture.TimeoutSeconds = 3; Assert.IsFalse(_fixture.SwitchToProcess(@"name:winword"), "Word not running already"); _fixture.NoAutomaticSwitchToStartedApplication(); UiAutomationFixture.TimeoutSeconds = 10; // command line switch /w opens Word with a blank page. Assert.IsTrue(_fixture.StartApplicationWithArguments(WordPath, "/w /q"), @"first start of Winword succeeds (no autoswitch)"); var processId = _fixture.ApplicationProcessId; Assert.IsTrue(UiAutomationFixture.WaitForProcess("ProcessId:" + processId), "Wait for Word process"); Assert.IsTrue(_fixture.SwitchToProcess("ProcessId:" + processId), "Now Word is running"); _fixture.SetAutomaticSwitchToStartedApplication(); Assert.IsTrue(_fixture.StartApplicationWithArguments(WordPath, "/w /q"), @"second start of Winword succeeds too (autoswitch)"); Assert.AreNotEqual(processId, _fixture.ApplicationProcessId, "Process IDs are not equal"); Assert.IsTrue(_fixture.ForcedCloseApplication(), "Forced close of 2nd instance succeeds"); Assert.IsTrue(_fixture.SwitchToProcess("ProcessId:" + processId), "Can switch to first Word instance"); Assert.IsTrue(_fixture.ForcedCloseApplication(), "Forced close 1st instance succeeds"); Assert.IsTrue(UiAutomationFixture.WaitUntilProcessEnds(@"name:winword"), "WinWord process ends"); }
public void FixtureAppUsageFailures() { var fixture = new UiAutomationFixture(); UiAutomationFixture.SearchBy("Name"); Assert.IsFalse(fixture.SwitchToAppWindow(), "Cannot switch to app window if not started"); Assert.IsFalse(fixture.SwitchToParentWindow(), "cannot switch to parent if no app launched"); Assert.IsFalse(fixture.IsUwpApp(), "IsUwpApp returns false if no app started"); #pragma warning disable 618 Assert.IsFalse(fixture.SwitchToWindow("irrelevant"), @"Can't switch to nonexisting window"); #pragma warning restore 618 Assert.IsFalse(fixture.SwitchToProcess("irrelevant")); Assert.IsFalse(fixture.MaximizeWindow(), "Can't maximize nonexisting window"); Assert.IsFalse(fixture.MinimizeWindow(), "Can't minimize nonexisting window"); Assert.IsFalse(fixture.MoveWindowTo(new Coordinate(10, 10)), "Can't move nonexisting window"); Assert.IsFalse(fixture.NormalWindow(), "Can't restore nonexisting window"); Assert.IsFalse(fixture.ResizeWindowTo(new Coordinate(100, 100)), "Can't resize nonexisting window"); var topleft = fixture.WindowTopLeft; var size = fixture.WindowSize; Assert.AreEqual(0, size.X, "Width of nonexisting window is 0"); Assert.AreEqual(0, size.Y, "height of nonexisting window is 0"); Assert.AreEqual(0, topleft.X, "Row of nonexisting window is 0"); Assert.AreEqual(0, topleft.Y, "Column of nonexisting window is 0"); }