优化顶栏导航与登录请求体验

This commit is contained in:
Cheng Zhou
2026-06-17 17:22:22 +08:00
parent 061792c73f
commit 53249daf8d
9 changed files with 1479 additions and 203 deletions
+12 -11
View File
@@ -18,18 +18,19 @@ describe("Login protocol agreement", () => {
expect(protocolGuardIndex).toBeLessThan(loginCallIndex);
});
it("offers remember password through browser credentials without local password storage", () => {
it("does not access browser password credentials on the login page", () => {
const source = readLoginView();
expect(source).toContain('v-model="form.rememberPassword"');
expect(source).toContain("记住密码");
expect(source).toContain('autocomplete="username"');
expect(source).toContain('name="username"');
expect(source).toContain(":name=\"form.rememberPassword ? 'password' : 'ctms-login-password'\"");
expect(source).toContain("tryLoadBrowserCredential");
expect(source).toContain("tryStoreBrowserCredential");
expect(source).toContain("navigator.credentials");
expect(source).toContain("password: true");
expect(source).toContain('name="ctms-login-password"');
expect(source).toContain('autocomplete="new-password"');
expect(source).not.toContain('v-model="form.rememberPassword"');
expect(source).not.toContain("记住密码");
expect(source).not.toContain("tryLoadBrowserCredential");
expect(source).not.toContain("tryStoreBrowserCredential");
expect(source).not.toContain("navigator.credentials");
expect(source).not.toContain("PasswordCredential");
expect(source).not.toContain('localStorage.setItem("ctms_saved_password"');
expect(source).not.toContain("localStorage.setItem('ctms_saved_password'");
});
@@ -54,11 +55,11 @@ describe("Login protocol agreement", () => {
expect(source).toContain("confirmProtocol");
});
it("avoids browser password caching when remember password is off", () => {
it("avoids browser password caching", () => {
const source = readLoginView();
expect(source).toContain(":name=\"form.rememberPassword ? 'password' : 'ctms-login-password'\"");
expect(source).toContain(":autocomplete=\"form.rememberPassword ? 'current-password' : 'new-password'\"");
expect(source).toContain('name="ctms-login-password"');
expect(source).toContain('autocomplete="new-password"');
expect(source).not.toContain('autocomplete="current-password"');
});