diff options
author | Even Oscar Andersen <[email protected]> | 2024-02-26 12:46:35 +0800 |
---|---|---|
committer | Even Oscar Andersen <[email protected]> | 2024-03-21 17:50:00 +0100 |
commit | 0737fca6b2f4b29b7e4eda221147187cf72f96f3 (patch) | |
tree | 5ac870f68631e07020006003dc2147c902c62114 /tests/auto/wasm/selenium/qwasmwindow.py | |
parent | edb8bac39b9e7c16925aa0762bbf7feaf6f552ab (diff) |
wasm: Qt::WA_ShowWithoutActivating was not respected
The Qt::WA_ShowWithoutActivating flag was not respected
Added test in the part of the code that calls
requestActivateWindow
Added selenium focus test
Fixes: QTBUG-122776
Change-Id: I1a248ed4352f86376d615a4cb7022e7ea095d4e7
Reviewed-by: Piotr WierciĆski <[email protected]>
Diffstat (limited to 'tests/auto/wasm/selenium/qwasmwindow.py')
-rw-r--r-- | tests/auto/wasm/selenium/qwasmwindow.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/auto/wasm/selenium/qwasmwindow.py b/tests/auto/wasm/selenium/qwasmwindow.py index 39147b7a0f9..1932feb4bb9 100644 --- a/tests/auto/wasm/selenium/qwasmwindow.py +++ b/tests/auto/wasm/selenium/qwasmwindow.py @@ -27,9 +27,45 @@ class WidgetTestCase(unittest.TestCase): self.addTypeEqualityFunc(Color, assert_colors_equal) self.addTypeEqualityFunc(Rect, assert_rects_equal) + def test_hasFocus_returnsFalse_whenSetNoFocusShowWasCalled(self): + screen = Screen(self._driver, ScreenPosition.FIXED, + x=0, y=0, width=600, height=1200) + + w0 = Widget(self._driver, "w0") + w0.show() + self.assertEqual(w0.hasFocus(), True) + + w1 = Widget(self._driver, "w1") + w1.setNoFocusShow() + w1.show() + self.assertEqual(w0.hasFocus(), True) + self.assertEqual(w1.hasFocus(), False) + + w2 = Widget(self._driver, "w2") + w2.show() + self.assertEqual(w0.hasFocus(), False) + self.assertEqual(w1.hasFocus(), False) + self.assertEqual(w2.hasFocus(), True) + + w3 = Widget(self._driver, "w3") + w3.setNoFocusShow() + w3.show() + self.assertEqual(w0.hasFocus(), False) + self.assertEqual(w1.hasFocus(), False) + self.assertEqual(w2.hasFocus(), True) + self.assertEqual(w3.hasFocus(), False) + w3.activate(); + self.assertEqual(w0.hasFocus(), False) + self.assertEqual(w1.hasFocus(), False) + self.assertEqual(w2.hasFocus(), False) + self.assertEqual(w3.hasFocus(), True) + + clearWidgets(self._driver) + def test_window_resizing(self): screen = Screen(self._driver, ScreenPosition.FIXED, x=0, y=0, width=600, height=600) + window = Window(parent=screen, rect=Rect(x=100, y=100, width=200, height=200)) self.assertEqual(window.rect, Rect(x=100, y=100, width=200, height=200)) @@ -527,6 +563,48 @@ class Screen: shadow_container = self.element.find_element(By.CSS_SELECTOR, f'#qt-shadow-container') return shadow_container.shadow_root.find_element(method, query) +def clearWidgets(driver): + driver.execute_script( + f''' + instance.clearWidgets(); + ''' + ) + +class Widget: + def __init__(self, driver, name): + self.name=name + self.driver=driver + + self.driver.execute_script( + f''' + instance.createWidget('{self.name}'); + ''' + ) + + def setNoFocusShow(self): + self.driver.execute_script( + f''' + instance.setWidgetNoFocusShow('{self.name}'); + ''' + ) + + def show(self): + self.driver.execute_script( + f''' + instance.showWidget('{self.name}'); + ''' + ) + def hasFocus(self): + focus = call_instance_function_arg(self.driver, 'hasWidgetFocus', self.name) + return focus + + def activate(self): + self.driver.execute_script( + f''' + instance.activateWidget('{self.name}'); + ''' + ) + class Window: def __init__(self, parent=None, rect=None, title=None, element=None, visible=True): @@ -815,6 +893,13 @@ def call_instance_function(driver, name): instance.{name}(); return eval(result);''') +def call_instance_function_arg(driver, name, arg): + return driver.execute_script( + f'''let result; + window.{name}Callback = data => result = data; + instance.{name}('{arg}'); + return eval(result);''') + def wait_for_animation_frame(driver): driver.execute_script( ''' |