mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-14 10:34:06 +02:00
63 lines
2.0 KiB
TypeScript
63 lines
2.0 KiB
TypeScript
import { test } from "@app/tests/helpers/test-base";
|
|
import { loginAndSetup } from "@app/tests/helpers/login";
|
|
import {
|
|
switchToEditorIfViewerMode,
|
|
runToolAndWaitForReview,
|
|
waitForModalOpen,
|
|
waitForModalClose,
|
|
} from "@app/tests/helpers/ui-helpers";
|
|
import path from "path";
|
|
|
|
const FIXTURES_DIR = path.join(__dirname, "../test-fixtures");
|
|
const ENCRYPTED_PDF = path.join(FIXTURES_DIR, "encrypted.pdf");
|
|
const SAMPLE_PDF = path.join(FIXTURES_DIR, "sample.pdf");
|
|
|
|
/**
|
|
* The encrypted-PDF unlock prompt is well-tested in isolation
|
|
* (stubbed/EncryptedPdfUnlockE2E.spec.ts), but no test verifies that
|
|
* after unlocking, the file actually flows into a tool run. This spec
|
|
* uploads an encrypted PDF + a regular PDF, unlocks the encrypted one,
|
|
* and runs merge against the real backend.
|
|
*/
|
|
test.describe("Encrypted PDF: unlock then merge", () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await loginAndSetup(page);
|
|
});
|
|
|
|
test("unlocked encrypted PDF participates in a real merge", async ({
|
|
page,
|
|
}) => {
|
|
test.setTimeout(120_000);
|
|
|
|
await page.goto("/merge");
|
|
await page.waitForLoadState("domcontentloaded");
|
|
|
|
await page.getByTestId("files-button").click();
|
|
await waitForModalOpen(page);
|
|
await page
|
|
.locator('[data-testid="file-input"]')
|
|
.setInputFiles([ENCRYPTED_PDF, SAMPLE_PDF]);
|
|
|
|
// Encrypted unlock modal appears (the files modal may still be closing)
|
|
const passwordInput = page.getByPlaceholder(/password/i).first();
|
|
if (
|
|
!(await passwordInput.isVisible({ timeout: 10_000 }).catch(() => false))
|
|
) {
|
|
test.skip(
|
|
true,
|
|
"Encrypted unlock modal not surfaced — fixture may not match this build",
|
|
);
|
|
return;
|
|
}
|
|
await passwordInput.fill("test");
|
|
await page
|
|
.getByRole("button", { name: /unlock/i })
|
|
.first()
|
|
.click();
|
|
|
|
await waitForModalClose(page, 15_000);
|
|
await switchToEditorIfViewerMode(page);
|
|
await runToolAndWaitForReview(page);
|
|
});
|
|
});
|