Fix installer selectors for setupSuperUser UI variants
This commit is contained in:
@@ -51,6 +51,26 @@ class _RoleLocator:
|
||||
return self._count_value > 0
|
||||
|
||||
|
||||
class _NameOnlyStaticLocator:
|
||||
def __init__(self, page, selector: str):
|
||||
self._page = page
|
||||
self._selector = selector
|
||||
|
||||
def count(self) -> int:
|
||||
if self._selector == "input[name='login']":
|
||||
return 1 if self._page.login_visible else 0
|
||||
if self._selector == "input[name='siteName']":
|
||||
return 0
|
||||
return 0
|
||||
|
||||
@property
|
||||
def first(self):
|
||||
return self
|
||||
|
||||
def is_visible(self) -> bool:
|
||||
return self.count() > 0
|
||||
|
||||
|
||||
class _NoNextButLoginAppearsPage:
|
||||
def __init__(self):
|
||||
self.url = "http://matomo/index.php?action=setupSuperUser&module=Installation"
|
||||
@@ -78,6 +98,33 @@ class _NoNextButLoginAppearsPage:
|
||||
self.login_visible = True
|
||||
|
||||
|
||||
class _NoNextButNamedLoginAppearsPage:
|
||||
def __init__(self):
|
||||
self.url = "http://matomo/index.php?action=setupSuperUser&module=Installation"
|
||||
self.login_visible = False
|
||||
self._wait_calls = 0
|
||||
|
||||
def locator(self, selector: str):
|
||||
return _NameOnlyStaticLocator(self, selector)
|
||||
|
||||
def get_by_role(self, role: str, name: str):
|
||||
return _RoleLocator(0)
|
||||
|
||||
def get_by_text(self, *_args, **_kwargs):
|
||||
return _RoleLocator(0)
|
||||
|
||||
def title(self) -> str:
|
||||
return "setupSuperUser"
|
||||
|
||||
def wait_for_load_state(self, *_args, **_kwargs):
|
||||
return None
|
||||
|
||||
def wait_for_timeout(self, *_args, **_kwargs):
|
||||
self._wait_calls += 1
|
||||
if self._wait_calls >= 1:
|
||||
self.login_visible = True
|
||||
|
||||
|
||||
class TestWebInstallerLocatorCountIntegration(unittest.TestCase):
|
||||
def test_retries_transient_navigation_error(self) -> None:
|
||||
locator = _FlakyLocator(
|
||||
@@ -113,6 +160,14 @@ class TestWebInstallerLocatorCountIntegration(unittest.TestCase):
|
||||
self.assertEqual(step, "Installation:setupSuperUser")
|
||||
self.assertTrue(page.login_visible)
|
||||
|
||||
def test_click_next_wait_treats_named_login_form_as_progress(self) -> None:
|
||||
page = _NoNextButNamedLoginAppearsPage()
|
||||
|
||||
step = _click_next_with_wait(page, timeout_s=1)
|
||||
|
||||
self.assertEqual(step, "Installation:setupSuperUser")
|
||||
self.assertTrue(page.login_visible)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user