test(pdf): letters print the sender's header in every template

This commit is contained in:
Amruth Pillai
2026-09-29 08:08:12 +02:00
parent 6c2bc74f92
commit 17d25c5ffa
@@ -0,0 +1,41 @@
import { describe, expect, it } from "vitest";
import * as forme from "@formepdf/core";
import { getDocument } from "pdfjs-dist/legacy/build/pdf.mjs";
import { createCoverLetterResumeData } from "@reactive-resume/resume/cover-letter";
import { sampleResumeData } from "@reactive-resume/schema/resume/sample";
import { templateSchema } from "@reactive-resume/schema/templates";
import { renderResume } from "../../forme/render";
const letterIn = (template: (typeof templateSchema.options)[number]) => {
const { notes: _notes, layout: _layout, ...metadata } = { ...sampleResumeData.metadata, template };
return createCoverLetterResumeData({
name: "Letter",
recipient: "<p>Hiring Manager</p>",
content: "<p>Dear team, I would like to apply.</p>",
style: {
basics: sampleResumeData.basics,
picture: { ...sampleResumeData.picture, hidden: true },
metadata,
sectionId: "letter",
itemId: "letter-item",
},
});
};
describe("letters", () => {
// A letter's page is full width; templates that keep their header in the sidebar still print it.
it.each(templateSchema.options)("prints the sender's header in %s", { timeout: 60_000 }, async (template) => {
const { pdf } = await renderResume(forme, {
data: letterIn(template),
template,
renderOptions: { includeCoverLetterHeader: true },
});
const document = await getDocument({ data: pdf }).promise;
const text = (await (await document.getPage(1)).getTextContent()).items
.map((item) => ("str" in item ? item.str : ""))
.join(" ");
expect(text).toContain(sampleResumeData.basics.name);
expect(text).toContain("Dear team");
});
});