Files
Stirling-PDF/frontend/src/core/tests/live/encrypted-unlock-then-tool.spec.ts
T
2026-04-27 11:35:50 +01:00

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);
});
});