diff --git a/apps/web/__e2e__/user.test.js b/apps/web/__e2e__/user.test.js
index 9e1199dad..33e96cdc7 100644
--- a/apps/web/__e2e__/user.test.js
+++ b/apps/web/__e2e__/user.test.js
@@ -28,6 +28,13 @@ async function logoutUser() {
expect(await isAbsent(getTestId("navitem-sync"))).toBe(true);
}
+async function forceExpireSession() {
+ await page.evaluate(() => {
+ window.localStorage.setItem("sessionExpired", "true");
+ });
+ await page.reload();
+}
+
test("login user", async () => {
await loginUser();
@@ -146,3 +153,62 @@ test("reset user password", async ({ page, browserName }) => {
newKey = cKey;
}
});
+
+test("reset user password after session expiry", async ({
+ page,
+ browserName,
+}) => {
+ test.setTimeout(2 * 60 * 1000);
+ test.skip(browserName !== "chromium", "Cannot run in parallel.");
+
+ let currentPassword = "";
+ let currentKey = "";
+
+ let newPassword = USER.password;
+ let newKey = "";
+
+ let email = USER.email;
+
+ for (let i = 0; i <= 1; ++i) {
+ await loginUser({ email, password: currentPassword });
+
+ await forceExpireSession();
+
+ await page.click(getTestId("auth-forgot-password"));
+
+ await page.click(getTestId("submitButton"));
+
+ await page.waitForSelector(getTestId("step-backup-data"));
+
+ await page.click(getTestId("step-next"));
+
+ await page.waitForSelector(getTestId("step-new-password"));
+
+ await page.fill(getTestId("new_password"), newPassword);
+
+ await page.click(getTestId("step-next"));
+
+ await page.waitForSelector(getTestId("step-finished"));
+
+ const actualRecoveryKey = await page.innerText(
+ getTestId("new-recovery-key")
+ );
+ expect(actualRecoveryKey).toBe(newKey);
+
+ await page.click(getTestId("step-finish"));
+
+ await loginUser({ password: newPassword }, false);
+
+ await page.waitForSelector(getTestId("sync-status-success"));
+
+ await logoutUser();
+
+ const cPassword = currentPassword;
+ currentPassword = newPassword;
+ newPassword = cPassword;
+
+ const cKey = currentKey;
+ currentKey = newKey;
+ newKey = cKey;
+ }
+});
diff --git a/apps/web/__e2e__/utils/index.js b/apps/web/__e2e__/utils/index.js
index 3ed9e3d40..3d1e2cc52 100644
--- a/apps/web/__e2e__/utils/index.js
+++ b/apps/web/__e2e__/utils/index.js
@@ -13,7 +13,7 @@ const USER = {
async function loginUser(user = USER, navigate = true) {
if (navigate) await page.click(getTestId("navitem-login"));
- await page.fill(getTestId("email"), user.email);
+ if (user.email) await page.fill(getTestId("email"), user.email);
await page.fill(getTestId("password"), user.password);
diff --git a/apps/web/playwright.config.js b/apps/web/playwright.config.js
index 1389f00ad..ef431785f 100644
--- a/apps/web/playwright.config.js
+++ b/apps/web/playwright.config.js
@@ -18,14 +18,14 @@ const projects = IS_CI
browserName: "chromium",
},
},
- {
- name: "Firefox",
- use: { browserName: "firefox" },
- },
- {
- name: "WebKit",
- use: { browserName: "webkit" },
- },
+ // {
+ // name: "Firefox",
+ // use: { browserName: "firefox" },
+ // },
+ // {
+ // name: "WebKit",
+ // use: { browserName: "webkit" },
+ // },
];
module.exports = {
@@ -44,7 +44,7 @@ module.exports = {
reporter: "list",
retries: IS_CI ? 3 : 1,
use: {
- headless: true,
+ headless: false,
acceptDownloads: true,
// Artifacts
diff --git a/apps/web/src/views/recovery.js b/apps/web/src/views/recovery.js
index bed4d3665..f2132b73c 100644
--- a/apps/web/src/views/recovery.js
+++ b/apps/web/src/views/recovery.js
@@ -400,7 +400,8 @@ function FinalStep() {
})();
}, [isSessionExpired]);
- if (!isReady) return ;
+ if (!isReady && !isSessionExpired)
+ return ;
return (