Files
mygit/e2e/tests/admin/reset-password.test.ts
T
DuckQ1u 93d1b7c3d3
Copilot Setup Steps / copilot-setup-steps (push) Has been cancelled
first commit
2026-04-22 19:51:20 +07:00

60 lines
2.7 KiB
TypeScript

import {AnalyticsOverviewPage, LoginPage, PasswordResetPage, SettingsPage} from '@/admin-pages';
import {EmailClient, MailPit} from '@/helpers/services/email/mail-pit';
import {Page} from '@playwright/test';
import {expect, test} from '@/helpers/playwright';
import {extractPasswordResetLink} from '@/helpers/services/email/utils';
test.describe('Ghost Admin - Reset Password', () => {
const emailClient: EmailClient = new MailPit();
async function logout(page: Page) {
const loginPage = new LoginPage(page);
await loginPage.logout();
}
test('resets account owner password', async ({page, ghostAccountOwner}) => {
await logout(page);
const {email} = ghostAccountOwner;
const newPassword = 'test@lginSecure@123';
const loginPage = new LoginPage(page);
await loginPage.requestPasswordReset(ghostAccountOwner.email);
await expect.soft(loginPage.body).toContainText('An email with password reset instructions has been sent.');
const messages = await emailClient.search({subject: 'Reset Password', to: email});
const latestMessage = await emailClient.getMessageDetailed(messages[0]);
const passwordResetUrl = extractPasswordResetLink(latestMessage);
await loginPage.goto(passwordResetUrl);
const passwordResetPage = new PasswordResetPage(page);
await passwordResetPage.resetPassword(newPassword, newPassword);
const analyticsPage = new AnalyticsOverviewPage(page);
await expect(analyticsPage.header).toBeVisible();
});
test('resets account owner password when 2FA enabled', async ({page, ghostAccountOwner}) => {
const newPassword = 'test@lginSecure@123';
const settingsPage = new SettingsPage(page);
await settingsPage.staffSection.goto();
await settingsPage.staffSection.enableRequireTwoFa();
await logout(page);
const loginPage = new LoginPage(page);
await loginPage.requestPasswordReset(ghostAccountOwner.email);
await expect.soft(loginPage.body).toContainText('An email with password reset instructions has been sent.');
const messages = await emailClient.search({subject: 'Reset Password', to: ghostAccountOwner.email});
const latestMessage = await emailClient.getMessageDetailed(messages[0]);
const passwordResetUrl = extractPasswordResetLink(latestMessage);
await loginPage.goto(passwordResetUrl);
const passwordResetPage = new PasswordResetPage(page);
await passwordResetPage.resetPassword(newPassword, newPassword);
const analyticsPage = new AnalyticsOverviewPage(page);
await expect(analyticsPage.header).toBeVisible();
});
});