private void PressGamepadButtonAndVerifyOffsetAndFocus(GamepadButton gamepadButton, string expectedFocusedItemName, double expectedHorizontalOffset, double expectedVerticalOffset) { var focusChangedWaiter = new FocusAcquiredWaiter(); bool waitForFocusChange = UIObject.Focused.Name != expectedFocusedItemName; GamepadHelper.PressButton(null, gamepadButton); if (waitForFocusChange) { focusChangedWaiter.Wait(TimeSpan.FromSeconds(2)); } WaitForScrollViewerOffsets(expectedHorizontalOffset, expectedVerticalOffset); Verify.AreEqual(expectedFocusedItemName, UIObject.Focused.Name, "Verify focused element"); }
public static void SetFocus(UIObject control) { if (!control.HasKeyboardFocus) { var uiCondition = string.IsNullOrEmpty(control.AutomationId) ? UICondition.CreateFromName(control.Name) : UICondition.CreateFromId(control.AutomationId); using (var focusChangedWaiter = new FocusAcquiredWaiter(uiCondition)) { control.SetFocus(); focusChangedWaiter.Wait(); } } }
public void ValidateUnhandledKeysOnNonTransientFlyoutDoNotCloseFlyout() { if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.NineteenH1)) { Log.Warning("Test is disabled pre-19H1 because the bug fix needed to support this were not available pre-19H1."); return; } using (var setup = new TextCommandBarFlyoutTestSetupHelper()) { Log.Comment("Give focus to the RichEditBox."); FocusHelper.SetFocus(FindElement.ById("RichEditBox")); using (var waiter = new FocusAcquiredWaiter(UICondition.CreateFromName("Bold"))) { Log.Comment("Double-tap to select a word and bring up the context menu. The Bold button should get focus."); KeyboardHelper.PressKey(Key.F10, ModifierKey.Shift); waiter.Wait(); } Log.Comment("Press the down arrow key. Focus should stay in the flyout."); KeyboardHelper.PressKey(Key.Down); Wait.ForIdle(); Log.Comment("Press the up arrow key. Focus should stay in the flyout."); KeyboardHelper.PressKey(Key.Up); Wait.ForIdle(); using (var waiter = new FocusAcquiredWaiter(UICondition.CreateFromId("RichEditBox"))) { Log.Comment("Use Escape to close the context menu. The RichEditBox should now have focus."); KeyboardHelper.PressKey(Key.Escape); waiter.Wait(); } } }
public void ValidateKeyboarding() { if (PlatformConfiguration.IsOSVersionLessThan(OSVersion.Redstone5)) { Log.Warning("Test is disabled pre-RS5 because the keyboarding fixes needed to support this were not available pre-RS5."); return; } using (var setup = new TextCommandBarFlyoutTestSetupHelper()) { Log.Comment("Give focus to the TextBox."); var textBox = FindElement.ById("TextBox"); FocusHelper.SetFocus(textBox); using (var waiter = new FocusAcquiredWaiter(UICondition.CreateFromName("Select All"))) { Log.Comment("Use Shift+F10 to bring up the context menu. The Select All button should get focus."); KeyboardHelper.PressKey(Key.F10, ModifierKey.Shift); waiter.Wait(); } using (var waiter = new FocusAcquiredWaiter(UICondition.CreateFromId("TextBox"))) { Log.Comment("Use Escape to close the context menu. The TextBox should now have focus."); KeyboardHelper.PressKey(Key.Escape); // On 19H1, there's a bug with the focus restoration code, so we'll manually restore focus to allow the rest of the test to run. if (PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.NineteenH1)) { textBox.SetFocus(); } waiter.Wait(); } Log.Comment("Give focus to the RichEditBox."); var richEditBox = FindElement.ById("RichEditBox"); FocusHelper.SetFocus(richEditBox); using (var waiter = new FocusAcquiredWaiter(UICondition.CreateFromName("Bold"))) { Log.Comment("Use Shift+F10 to bring up the context menu. The Bold button should get focus."); KeyboardHelper.PressKey(Key.F10, ModifierKey.Shift); waiter.Wait(); } Log.Comment("Press the spacebar to invoke the bold button. Focus should stay in the flyout."); KeyboardHelper.PressKey(Key.Space); Wait.ForIdle(); using (var waiter = new FocusAcquiredWaiter(UICondition.CreateFromName("More app bar"))) { Log.Comment("Press the right arrow key three times. The '...' button should get focus."); KeyboardHelper.PressKey(Key.Right, ModifierKey.None, numPresses: 3); waiter.Wait(); } using (var waiter = new FocusAcquiredWaiter(UICondition.CreateFromName("Select All"))) { Log.Comment("Press the down arrow key twice. The Select All button should get focus."); KeyboardHelper.PressKey(Key.Down, ModifierKey.None, numPresses: 2); waiter.Wait(); } using (var waiter = new FocusAcquiredWaiter(UICondition.CreateFromId("RichEditBox"))) { Log.Comment("Use Escape to close the context menu. The RichEditBox should now have focus."); KeyboardHelper.PressKey(Key.Escape); // On 19H1, there's a bug with the focus restoration code, so we'll manually restore focus to allow the rest of the test to run. if (PlatformConfiguration.IsOsVersionGreaterThanOrEqual(OSVersion.NineteenH1)) { richEditBox.SetFocus(); } waiter.Wait(); } } }