|
|
|
@@ -233,6 +233,78 @@ test.describe('登录上下文 UI 契约', () => { |
|
|
|
await captureScreenshot(page, testInfo, 'restored-login-identity-without-password') |
|
|
|
}) |
|
|
|
|
|
|
|
test('按登录身份分别恢复记住的账号和密码', async ({ page }) => { |
|
|
|
await page.addInitScript(() => { |
|
|
|
window.localStorage.setItem('unreal-tran:web:login-identity-preference:v1', JSON.stringify({ |
|
|
|
lastRoleCode: 'teacher', |
|
|
|
selections: { |
|
|
|
teacher: { |
|
|
|
departmentId: '110', userId: '402', username: '', |
|
|
|
password: 'Teacher-Remembered-1', remember: true, |
|
|
|
}, |
|
|
|
admin: { |
|
|
|
departmentId: '', userId: '', username: 'admin.remembered', |
|
|
|
password: 'Admin-Remembered-2', remember: true, |
|
|
|
}, |
|
|
|
}, |
|
|
|
})) |
|
|
|
}) |
|
|
|
|
|
|
|
await openLoginWithContext(page) |
|
|
|
|
|
|
|
await expect(identitySelect(page)).toContainText('杜晴') |
|
|
|
await expect(passwordInput(page)).toHaveValue('Teacher-Remembered-1') |
|
|
|
await expect(page.locator('input[name="rememberMe"]')).toBeChecked() |
|
|
|
|
|
|
|
await page.locator('[data-role-code="admin"]').click() |
|
|
|
await expect(adminUsernameInput(page)).toHaveValue('admin.remembered') |
|
|
|
await expect(passwordInput(page)).toHaveValue('Admin-Remembered-2') |
|
|
|
await expect(page.locator('input[name="rememberMe"]')).toBeChecked() |
|
|
|
|
|
|
|
await page.locator('[data-role-code="teacher"]').click() |
|
|
|
await expect(identitySelect(page)).toContainText('杜晴') |
|
|
|
await expect(passwordInput(page)).toHaveValue('Teacher-Remembered-1') |
|
|
|
}) |
|
|
|
|
|
|
|
test('成功登录后按勾选状态保存账号密码', async ({ page }) => { |
|
|
|
await page.route('**/api/auth/v1/auth/login', (route) => route.fulfill({ |
|
|
|
status: 200, |
|
|
|
contentType: 'application/json', |
|
|
|
body: JSON.stringify({ |
|
|
|
code: 200, |
|
|
|
message: '成功', |
|
|
|
data: { accessToken: 'remember-access-token', refreshToken: 'remember-refresh-token', expiresIn: 3600 }, |
|
|
|
}), |
|
|
|
})) |
|
|
|
await page.route('**/api/auth/v1/auth/me', (route) => route.fulfill({ |
|
|
|
status: 200, |
|
|
|
contentType: 'application/json', |
|
|
|
body: JSON.stringify({ |
|
|
|
code: 200, |
|
|
|
message: '成功', |
|
|
|
data: { |
|
|
|
user: { id: '1', username: 'admin.saved', displayName: '系统管理员', mustChangePassword: true }, |
|
|
|
activeRoleId: '1', roles: [{ id: '1', code: 'admin', name: '管理员', enabled: true }], |
|
|
|
permissions: [], authorizationMode: 'SINGLE_ACTIVE', |
|
|
|
}, |
|
|
|
}), |
|
|
|
})) |
|
|
|
await openLoginWithContext(page) |
|
|
|
|
|
|
|
await adminUsernameInput(page).fill('admin.saved') |
|
|
|
await passwordInput(page).fill('Saved-Password-3') |
|
|
|
await page.locator('input[name="rememberMe"]').check() |
|
|
|
await submitButton(page).click() |
|
|
|
|
|
|
|
await expect.poll(() => page.evaluate(() => { |
|
|
|
const raw = window.localStorage.getItem('unreal-tran:web:login-identity-preference:v1') || '{}' |
|
|
|
return JSON.parse(raw).selections?.admin |
|
|
|
})).toEqual({ |
|
|
|
departmentId: '', userId: '', username: 'admin.saved', |
|
|
|
password: 'Saved-Password-3', remember: true, |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
test('已删除的部门或账号不会被本地偏好错误回填', async ({ page }) => { |
|
|
|
await page.addInitScript(() => { |
|
|
|
window.localStorage.setItem('unreal-tran:web:login-identity-preference:v1', JSON.stringify({ |
|
|
|
|