fix: 适配 hash 路由登录页 (/#/login)

This commit is contained in:
xst
2026-07-15 10:55:08 +08:00
parent 7c5a4c5de7
commit 49eb9bcd2b
5 changed files with 34 additions and 26 deletions
+16 -10
View File
@@ -29,8 +29,10 @@ class TestLoginSmoke:
"""验证加载预登录态后可直接访问管理后台,无需重新登录。"""
ensure_login("super_admin")
page.goto(web_config["base_url"])
# 等 hash 路由完成
page.wait_for_timeout(2000)
# 已登录状态下不应重定向到登录页
assert "/login" not in page.url, (
assert "#/login" not in page.url and "/login" not in page.url, (
f"预登录态失效!仍然重定向到登录页。请运行: python tests/web/save_auth.py"
)
@@ -40,7 +42,8 @@ class TestLoginSmoke:
"""验证车队长预登录态有效。"""
ensure_login("team_leader")
page.goto(web_config["base_url"])
assert "/login" not in page.url
page.wait_for_timeout(2000)
assert "#/login" not in page.url and "/login" not in page.url
@pytest.mark.p0
@pytest.mark.smoke
@@ -62,29 +65,31 @@ class TestLoginPageDirect:
@pytest.mark.p1
def test_login_page_accessible(self, page: Page, web_config):
"""验证登录页可直接访问并正常渲染。"""
page.goto(f"{web_config['base_url']}/login")
page.goto(f"{web_config['base_url']}/#/login")
# 登录页应存在用户名输入框
assert page.get_by_placeholder("请输入用户名").is_visible()
@pytest.mark.p1
def test_login_page_elements(self, page: Page, web_config):
"""验证登录页所有关键元素存在。"""
page.goto(f"{web_config['base_url']}/login")
page.goto(f"{web_config['base_url']}/#/login")
assert page.get_by_placeholder("请输入用户名").is_visible()
assert page.get_by_placeholder("请输入密码").is_visible()
assert page.get_by_role("button", name="登录").is_visible()
@pytest.mark.p1
def test_double_login_session_redirect(self, page: Page, web_config, ensure_login):
"""验证已登录用户访问 /login 页自动重定向。"""
"""验证已登录用户访问登录页自动重定向。"""
ensure_login("super_admin")
page.goto(web_config["base_url"])
assert "/login" not in page.url
page.wait_for_timeout(2000)
assert "#/login" not in page.url and "/login" not in page.url
# 已登录状态再次访问 /login
page.goto(f"{web_config['base_url']}/login")
# 已登录状态再次访问登录页
page.goto(f"{web_config['base_url']}/#/login")
page.wait_for_timeout(2000)
# 应被重定向到后台
assert "/login" not in page.url, (
assert "#/login" not in page.url and "/login" not in page.url, (
f"已登录用户访问 /login 应被重定向,当前: {page.url}"
)
@@ -102,4 +107,5 @@ class TestLoginUI:
"""通过 UI 完成完整登录(需要手动关闭 skip_login)。"""
ensure_login("super_admin")
page.goto(web_config["base_url"])
assert "/login" not in page.url
page.wait_for_timeout(2000)
assert "#/login" not in page.url and "/login" not in page.url