diff --git a/tests/files/test-pdf.foldable.border.pdf b/tests/files/test-pdf.foldable.border.pdf new file mode 100644 index 0000000..5d7f576 Binary files /dev/null and b/tests/files/test-pdf.foldable.border.pdf differ diff --git a/tests/files/test-pdf.foldable.mini-cover.pdf b/tests/files/test-pdf.foldable.mini-cover.pdf new file mode 100644 index 0000000..25e32a8 Binary files /dev/null and b/tests/files/test-pdf.foldable.mini-cover.pdf differ diff --git a/tests/files/test-pdf.foldable.mini-fit.pdf b/tests/files/test-pdf.foldable.mini-fit.pdf new file mode 100644 index 0000000..25b94c7 Binary files /dev/null and b/tests/files/test-pdf.foldable.mini-fit.pdf differ diff --git a/tests/files/test-pdf.foldable.mini-stretch.pdf b/tests/files/test-pdf.foldable.mini-stretch.pdf new file mode 100644 index 0000000..e56c25e Binary files /dev/null and b/tests/files/test-pdf.foldable.mini-stretch.pdf differ diff --git a/tests/fixtures.js b/tests/fixtures.js index 89613d1..7467dab 100644 --- a/tests/fixtures.js +++ b/tests/fixtures.js @@ -9,6 +9,10 @@ const testPdf = { outputPathVerticalOnly: "./files/test-pdf.foldable.vertical.pdf", outputPathHorizontalOnly: "./files/test-pdf.foldable.horizontal.pdf", outputPathNoRows: "./files/test-pdf.foldable.no-rows.pdf", + outputPathMiniFit: "./files/test-pdf.foldable.mini-fit.pdf", + outputPathMiniCover: "./files/test-pdf.foldable.mini-cover.pdf", + outputPathMiniStretch: "./files/test-pdf.foldable.mini-stretch.pdf", + outputPathBorder: "./files/test-pdf.foldable.border.pdf", outputFilename: "test-pdf.foldable.pdf" } diff --git a/tests/specs/generate-pdf.spec.js b/tests/specs/generate-pdf.spec.js index c859d92..5b0f472 100644 --- a/tests/specs/generate-pdf.spec.js +++ b/tests/specs/generate-pdf.spec.js @@ -140,3 +140,110 @@ test("PDF generation: no rows", async ({page, testPdf}, testInfo) => { // cleanup await download.delete(); }); + +test("PDF generation: target size mini fit", async ({page, testPdf}, testInfo) => { + await page.locator("#targetSizePresets").selectOption("mini"); + await page.locator("#targetAspectRatio").selectOption("fit"); + + // generate PDF + await page.locator("#generate").click(); + + // verify the PDF is generated + await expect(await page.locator("#download-button").getAttribute("href")).toContain("blob:"); + await expect(await page.locator("#output iframe").getAttribute("src")).toContain("blob:"); + + // download PDF + const downloadPromise = page.waitForEvent('download'); + await expect(await page.locator("#download-button").getAttribute("download")).toBe(testPdf.outputFilename); + await page.locator("#download-button").click(); + const download = await downloadPromise; + + // verify the PDF is downloaded + expect(download.url()).toContain("blob:"); + expect(download.suggestedFilename()).toMatch(/.pdf$/i); + await checkPdf(download, testPdf.outputPathMiniFit, testInfo); + + // cleanup + await download.delete(); +}); + +test("PDF generation: target size mini cover", async ({page, testPdf}, testInfo) => { + await page.locator("#targetSizePresets").selectOption("mini"); + await page.locator("#targetAspectRatio").selectOption("cover"); + + // generate PDF + await page.locator("#generate").click(); + + // verify the PDF is generated + await expect(await page.locator("#download-button").getAttribute("href")).toContain("blob:"); + await expect(await page.locator("#output iframe").getAttribute("src")).toContain("blob:"); + + // download PDF + const downloadPromise = page.waitForEvent('download'); + await expect(await page.locator("#download-button").getAttribute("download")).toBe(testPdf.outputFilename); + await page.locator("#download-button").click(); + const download = await downloadPromise; + + // verify the PDF is downloaded + expect(download.url()).toContain("blob:"); + expect(download.suggestedFilename()).toMatch(/.pdf$/i); + await checkPdf(download, testPdf.outputPathMiniCover, testInfo); + + // cleanup + await download.delete(); +}); + +test("PDF generation: target size mini stretch", async ({page, testPdf}, testInfo) => { + await page.locator("#targetSizePresets").selectOption("mini"); + await page.locator("#targetAspectRatio").selectOption("stretch"); + + // generate PDF + await page.locator("#generate").click(); + + // verify the PDF is generated + await expect(await page.locator("#download-button").getAttribute("href")).toContain("blob:"); + await expect(await page.locator("#output iframe").getAttribute("src")).toContain("blob:"); + + // download PDF + const downloadPromise = page.waitForEvent('download'); + await expect(await page.locator("#download-button").getAttribute("download")).toBe(testPdf.outputFilename); + await page.locator("#download-button").click(); + const download = await downloadPromise; + + // verify the PDF is downloaded + expect(download.url()).toContain("blob:"); + expect(download.suggestedFilename()).toMatch(/.pdf$/i); + await checkPdf(download, testPdf.outputPathMiniStretch, testInfo); + + // cleanup + await download.delete(); +}); + +test("PDF generation: border", async ({page, testPdf}, testInfo) => { + await page.locator("#innerBorderWidth").fill("1"); + await page.locator("#outerBorderWidth").fill("2"); + await page.locator("#roundCorners").fill("3"); + await page.locator("#backgroundColorFront").fill("#000000"); + await page.locator("#backgroundColorBack").fill("#000000"); + + // generate PDF + await page.locator("#generate").click(); + + // verify the PDF is generated + await expect(await page.locator("#download-button").getAttribute("href")).toContain("blob:"); + await expect(await page.locator("#output iframe").getAttribute("src")).toContain("blob:"); + + // download PDF + const downloadPromise = page.waitForEvent('download'); + await expect(await page.locator("#download-button").getAttribute("download")).toBe(testPdf.outputFilename); + await page.locator("#download-button").click(); + const download = await downloadPromise; + + // verify the PDF is downloaded + expect(download.url()).toContain("blob:"); + expect(download.suggestedFilename()).toMatch(/.pdf$/i); + await checkPdf(download, testPdf.outputPathBorder, testInfo); + + // cleanup + await download.delete(); +});