Files
Reactive-Resume/tests/e2e/specs/lock-resume.spec.ts
T
Amruth Pillai 0ba44865c7 test: add e2e specs for dashboard, sections, templates, sharing and settings workflows
- dashboard-lifecycle: rename, duplicate, delete via card context menu
- section-editing: add experience item, verify persistence across reloads
- template-switch: switch template in gallery, verify persisted selection
- sharing-password: password-protect public link, unlock as anonymous visitor
- lock-resume: lock blocks update/delete, unlock restores them
- settings-profile: profile name change persists
2026-07-03 20:04:36 +02:00

35 lines
1.7 KiB
TypeScript

import { createSampleResumeFromDashboard, openResumeCardMenu } from "../fixtures/resume";
import { expect, test } from "../fixtures/test";
test("locks a resume, blocking updates and deletion until unlocked", async ({ authPage: page }, testInfo) => {
const resumeName = await createSampleResumeFromDashboard(page, testInfo);
await openResumeCardMenu(page, resumeName);
const lockPromise = page.waitForResponse((response) => {
if (!response.url().includes("/api/rpc")) return false;
if (!response.ok()) return false;
return (response.request().postData() ?? "").includes('"isLocked":true');
});
await page.getByRole("menuitem", { name: "Lock" }).click();
await page.getByRole("alertdialog").getByRole("button", { name: "Confirm" }).click();
await lockPromise;
// Locked: the menu now offers Unlock, and destructive/edit actions are disabled
await openResumeCardMenu(page, resumeName);
await expect(page.getByRole("menuitem", { name: "Unlock" })).toBeVisible();
await expect(page.getByRole("menuitem", { name: "Update" })).toBeDisabled();
await expect(page.getByRole("menuitem", { name: "Delete" })).toBeDisabled();
// Unlock restores the actions — wait for the mutation to land before re-reading the menu
const unlockPromise = page.waitForResponse((response) => {
if (!response.url().includes("/api/rpc")) return false;
if (!response.ok()) return false;
return (response.request().postData() ?? "").includes('"isLocked":false');
});
await page.getByRole("menuitem", { name: "Unlock" }).click();
await unlockPromise;
await openResumeCardMenu(page, resumeName);
await expect(page.getByRole("menuitem", { name: "Lock" })).toBeVisible();
await expect(page.getByRole("menuitem", { name: "Delete" })).toBeEnabled();
});