mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-07-11 21:45:04 +10:00
dfd2c77bc9
* docs: design e2e test setup Co-authored-by: Amruth Pillai <im.amruth@gmail.com> * docs: plan e2e test implementation Co-authored-by: Amruth Pillai <im.amruth@gmail.com> * test: add playwright e2e scripts Co-authored-by: Amruth Pillai <im.amruth@gmail.com> * test: configure playwright Co-authored-by: Amruth Pillai <im.amruth@gmail.com> * test: add core e2e fixtures and specs Co-authored-by: Amruth Pillai <im.amruth@gmail.com> * ci: run e2e tests on pull requests Co-authored-by: Amruth Pillai <im.amruth@gmail.com> * [autofix.ci] apply automated fixes * test: stabilize e2e suite Co-authored-by: Amruth Pillai <im.amruth@gmail.com> * test: ignore playwright artifacts Co-authored-by: Amruth Pillai <im.amruth@gmail.com> * Update .github/workflows/e2e.yml Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * test: address e2e review feedback Co-authored-by: Amruth Pillai <im.amruth@gmail.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
31 lines
1.4 KiB
TypeScript
31 lines
1.4 KiB
TypeScript
import { readFile } from "node:fs/promises";
|
|
import { createSampleResumeFromDashboard, openSidebarSection } from "../fixtures/resume";
|
|
import { expect, test } from "../fixtures/test";
|
|
|
|
test("exports and imports a resume JSON backup", async ({ authPage: page }, testInfo) => {
|
|
await createSampleResumeFromDashboard(page, testInfo);
|
|
|
|
await openSidebarSection(page, "Export");
|
|
|
|
const downloadPromise = page.waitForEvent("download");
|
|
await page.getByRole("button", { name: /^JSON/ }).click();
|
|
const download = await downloadPromise;
|
|
expect(download.suggestedFilename()).toMatch(/\.json$/);
|
|
|
|
const downloadPath = testInfo.outputPath(download.suggestedFilename());
|
|
await download.saveAs(downloadPath);
|
|
const exportedData = JSON.parse(await readFile(downloadPath, "utf-8")) as { basics: { name: string } };
|
|
|
|
await page.goto("/dashboard/resumes");
|
|
await page.getByText("Import an existing resume").click();
|
|
const dialog = page.getByRole("dialog", { name: "Import an existing resume" });
|
|
await dialog.getByRole("combobox").click();
|
|
await page.getByRole("option", { name: "Reactive Resume (JSON)" }).click();
|
|
await dialog.locator('input[type="file"]').setInputFiles(downloadPath);
|
|
await dialog.getByRole("button", { name: "Import", exact: true }).click();
|
|
|
|
await page.waitForURL(/\/builder\/.+/);
|
|
await openSidebarSection(page, "Basics");
|
|
await expect(page.getByLabel("Name")).toHaveValue(exportedData.basics.name);
|
|
});
|