import { expect, test } from '@playwright/test'; import { PDFDocument } from 'pdf-lib'; import { createPdf, createPreRotatedPdf, dropFiles, expectPdfDownload, pdfDropzone, trackPageErrors } from './helpers'; test('rotate turns pages losslessly via /Rotate and reset clears deltas', async ({ page }) => { const pageErrors = trackPageErrors(page); await page.goto('/tools/rotate'); await dropFiles(page, pdfDropzone(page), [ { name: 'drehung.pdf', mimeType: 'application/pdf', buffer: await createPdf(3, 'Drehen') } ]); const downloadButton = page.getByRole('button', { name: 'Drehen & herunterladen' }); await expect(page.getByRole('button', { name: 'Seite 2 um 90° nach rechts drehen' })).toBeVisible( { timeout: 15_000 } ); await expect(downloadButton).toBeDisabled(); const rotateRightPage2 = page.getByRole('button', { name: 'Seite 2 um 90° nach rechts drehen' }); await rotateRightPage2.click(); await rotateRightPage2.click(); await expect(page.getByText('1 von 3 Seiten gedreht')).toBeVisible(); await expect(page.getByText('180°', { exact: true })).toBeVisible(); const downloadPromise = page.waitForEvent('download'); await downloadButton.click(); const bytes = await expectPdfDownload(await downloadPromise, /^drehung_gedreht\.pdf$/); const output = await PDFDocument.load(bytes); expect(output.getPage(1).getRotation().angle).toBe(180); expect(output.getPage(0).getRotation().angle).toBe(0); await page.getByRole('button', { name: 'Zurücksetzen' }).click(); await expect(page.getByText('0 von 3 Seiten gedreht')).toBeVisible(); await expect(downloadButton).toBeDisabled(); expect(pageErrors).toEqual([]); }); test('rotate adds the delta on top of an existing /Rotate value', async ({ page }) => { const pageErrors = trackPageErrors(page); await page.goto('/tools/rotate'); await dropFiles(page, pdfDropzone(page), [ { name: 'vorgedreht.pdf', mimeType: 'application/pdf', buffer: await createPreRotatedPdf(2, 'Vorgedreht') } ]); await expect(page.getByRole('button', { name: 'Seite 1 um 90° nach rechts drehen' })).toBeVisible( { timeout: 15_000 } ); await page.getByRole('button', { name: 'Seite 1 um 90° nach rechts drehen' }).click(); await expect(page.getByText('1 von 2 Seiten gedreht')).toBeVisible(); const downloadPromise = page.waitForEvent('download'); await page.getByRole('button', { name: 'Drehen & herunterladen' }).click(); const bytes = await expectPdfDownload(await downloadPromise, /^vorgedreht_gedreht\.pdf$/); const output = await PDFDocument.load(bytes); expect(output.getPage(0).getRotation().angle).toBe(180); expect(output.getPage(1).getRotation().angle).toBe(0); expect(pageErrors).toEqual([]); });