u
This commit is contained in:
1 parent
15e0ae5b67
commit
e434374db5
71 files changed
+5726
-329
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import { expect, test } from './support/fixtures'
|
||||
import { loadSession } from './support/session'
|
||||
|
||||
/**
|
||||
* 冒烟用例:证明「免登录」这条基础设施真的通了。
|
||||
*
|
||||
* 落点选 `/approval/todo` 而不是首页:
|
||||
* - `/dashboard` **没有任何权限点**(`sql/20_registration/14_dashboard_menu.sql` 写明
|
||||
* 「不建权限点」,只有 `g3soft` 提权可见);
|
||||
* - e2e 默认账号 `demo_zhangwei` 只被授了 `menu.approval%`
|
||||
* (`sql/90_mock/02_fms_workflow_runtime_mock.sql:186`)。
|
||||
* 于是非超管进 `/dashboard` 会被守卫送到 `/403`,而 `/approval/todo` 是演示账号有授权的页面,
|
||||
* 换成 `g3soft`(超管)也照样通过 —— 两边都不挑账号。
|
||||
*/
|
||||
|
||||
test('种了会话就能直接进受保护页面,不跳登录页也不跳 403', async ({ page }) => {
|
||||
await page.goto('/approval/todo')
|
||||
|
||||
// 断言最终 URL 就是目标页,同时覆盖两种失败:跳 /login(会话没种上)、
|
||||
// 跳 /403(种上了但没授权)。只写 not.toHaveURL('/login') 会漏掉后者,而且
|
||||
// goto 之后 URL 立刻就是目标值,not 断言会在重定向发生前就通过 —— 断言不到东西。
|
||||
await expect(page).toHaveURL(/\/approval\/todo$/)
|
||||
})
|
||||
|
||||
test('顶栏显示的是会话里的那个用户', async ({ page }) => {
|
||||
const user = loadSession().user
|
||||
const expected = user?.name || user?.account || ''
|
||||
expect(expected, '会话里没有用户名,登录响应结构可能变了').not.toBe('')
|
||||
|
||||
await page.goto('/approval/todo')
|
||||
|
||||
await expect(page.locator('.layout-header__user')).toContainText(expected)
|
||||
})
|
||||
|
||||
test('刷新后仍是登录态(会话读自 sessionStorage,不靠内存)', async ({ page }) => {
|
||||
await page.goto('/approval/todo')
|
||||
await expect(page).toHaveURL(/\/approval\/todo$/)
|
||||
|
||||
await page.reload()
|
||||
|
||||
await expect(page).toHaveURL(/\/approval\/todo$/)
|
||||
})
|
||||
Reference in new issue
Block a user