splitting tests
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
import { unzipSync } from 'fflate';
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import { createPdf, dropFiles, expectPdfDownload, pdfDropzone, trackPageErrors } from './helpers';
|
||||
|
||||
test('encrypt protects a dropped PDF and decrypt rebuilds it with the password', async ({
|
||||
page
|
||||
}) => {
|
||||
const pageErrors = trackPageErrors(page);
|
||||
await page.goto('/tools/encrypt');
|
||||
await dropFiles(page, pdfDropzone(page), [
|
||||
{ name: 'geheim.pdf', mimeType: 'application/pdf', buffer: await createPdf(1, 'Geheim') }
|
||||
]);
|
||||
|
||||
await page.locator('#encrypt-password').fill('test-passwort');
|
||||
await page.locator('#encrypt-password-confirmation').fill('test-passwort');
|
||||
await page.getByRole('button', { name: 'Passwort setzen', exact: true }).click();
|
||||
await expect(page.getByText('Fertig ✓')).toBeVisible({ timeout: 15_000 });
|
||||
const encryptedDownloadPromise = page.waitForEvent('download');
|
||||
await page.getByRole('button', { name: 'geheim.pdf herunterladen' }).click();
|
||||
const encryptedBytes = await expectPdfDownload(
|
||||
await encryptedDownloadPromise,
|
||||
/^geheim_geschuetzt\.pdf$/
|
||||
);
|
||||
|
||||
await page.goto('/tools/decrypt');
|
||||
await dropFiles(page, pdfDropzone(page), [
|
||||
{
|
||||
name: 'geheim_geschuetzt.pdf',
|
||||
mimeType: 'application/pdf',
|
||||
buffer: encryptedBytes
|
||||
}
|
||||
]);
|
||||
await page.locator('#decrypt-password').fill('test-passwort');
|
||||
await page.getByRole('button', { name: 'Passwort entfernen', exact: true }).click();
|
||||
await expect(page.getByText('Fertig ✓')).toBeVisible({ timeout: 20_000 });
|
||||
const decryptedDownloadPromise = page.waitForEvent('download');
|
||||
await page.getByRole('button', { name: 'geheim_geschuetzt.pdf herunterladen' }).click();
|
||||
await expectPdfDownload(await decryptedDownloadPromise, /^geheim_geschuetzt_entsperrt\.pdf$/);
|
||||
expect(pageErrors).toEqual([]);
|
||||
});
|
||||
|
||||
test('encrypt batch protects every file and bundles results in one ZIP', async ({ page }) => {
|
||||
const pageErrors = trackPageErrors(page);
|
||||
await page.goto('/tools/encrypt');
|
||||
await dropFiles(page, pdfDropzone(page), [
|
||||
{ name: 'eins.pdf', mimeType: 'application/pdf', buffer: await createPdf(1, 'Eins') },
|
||||
{ name: 'zwei.pdf', mimeType: 'application/pdf', buffer: await createPdf(2, 'Zwei') }
|
||||
]);
|
||||
|
||||
await expect(page.getByText('Dateien (2)')).toBeVisible();
|
||||
await page.locator('#encrypt-password').fill('test-passwort');
|
||||
await page.locator('#encrypt-password-confirmation').fill('test-passwort');
|
||||
await page.getByRole('button', { name: 'Passwort setzen', exact: true }).click();
|
||||
await expect(page.getByText('Fertig ✓')).toHaveCount(2, { timeout: 15_000 });
|
||||
|
||||
const downloadPromise = page.waitForEvent('download');
|
||||
await page.getByRole('button', { name: 'Alle herunterladen' }).click();
|
||||
const download = await downloadPromise;
|
||||
expect(download.suggestedFilename()).toMatch(/^geschuetzt_\d{4}-\d{2}-\d{2}\.zip$/);
|
||||
const zipPath = await download.path();
|
||||
expect(zipPath).not.toBeNull();
|
||||
const entries = Object.keys(unzipSync(new Uint8Array(await readFile(zipPath!))));
|
||||
expect(entries.sort()).toEqual(['eins_geschuetzt.pdf', 'zwei_geschuetzt.pdf']);
|
||||
expect(pageErrors).toEqual([]);
|
||||
});
|
||||
Reference in New Issue
Block a user