Isolate the text layer integration tests

To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
This commit is contained in:
Tim van der Meij 2025-04-13 14:20:51 +02:00
parent 6308f5eb51
commit 965949c259
No known key found for this signature in database
GPG Key ID: 8C3FD2925A5F2762

View File

@ -59,7 +59,7 @@ describe("Text layer", () => {
}; };
} }
beforeAll(() => { beforeEach(() => {
jasmine.addAsyncMatchers({ jasmine.addAsyncMatchers({
// Check that a page has a selection containing the given text, with // Check that a page has a selection containing the given text, with
// some tolerance for extra characters before/after. // some tolerance for extra characters before/after.
@ -111,13 +111,13 @@ describe("Text layer", () => {
describe("doesn't jump when hovering on an empty area", () => { describe("doesn't jump when hovering on an empty area", () => {
let pages; let pages;
beforeAll(async () => { beforeEach(async () => {
pages = await loadAndWait( pages = await loadAndWait(
"tracemonkey.pdf", "tracemonkey.pdf",
`.page[data-page-number = "1"] .endOfContent` `.page[data-page-number = "1"] .endOfContent`
); );
}); });
afterAll(async () => { afterEach(async () => {
await closePages(pages); await closePages(pages);
}); });
@ -220,13 +220,13 @@ describe("Text layer", () => {
describe("doesn't jump when hovering on an empty area, with .markedContent", () => { describe("doesn't jump when hovering on an empty area, with .markedContent", () => {
let pages; let pages;
beforeAll(async () => { beforeEach(async () => {
pages = await loadAndWait( pages = await loadAndWait(
"chrome-text-selection-markedContent.pdf", "chrome-text-selection-markedContent.pdf",
`.page[data-page-number = "1"] .endOfContent` `.page[data-page-number = "1"] .endOfContent`
); );
}); });
afterAll(async () => { afterEach(async () => {
await closePages(pages); await closePages(pages);
}); });
@ -318,22 +318,15 @@ describe("Text layer", () => {
describe("when selecting over a link", () => { describe("when selecting over a link", () => {
let pages; let pages;
beforeAll(async () => { beforeEach(async () => {
pages = await loadAndWait( pages = await loadAndWait(
"annotation-link-text-popup.pdf", "annotation-link-text-popup.pdf",
`.page[data-page-number = "1"] .endOfContent` `.page[data-page-number = "1"] .endOfContent`
); );
}); });
afterAll(async () => { afterEach(async () => {
await closePages(pages); await closePages(pages);
}); });
afterEach(() =>
Promise.all(
pages.map(([_, page]) =>
page.evaluate(() => window.getSelection().removeAllRanges())
)
)
);
it("allows selecting within the link", async () => { it("allows selecting within the link", async () => {
await Promise.all( await Promise.all(
@ -451,7 +444,7 @@ describe("Text layer", () => {
let browser; let browser;
let page; let page;
beforeAll(async () => { beforeEach(async () => {
// Chrome does not support simulating caret-based selection, so this // Chrome does not support simulating caret-based selection, so this
// test only runs in Firefox. // test only runs in Firefox.
browser = await startBrowser({ browser = await startBrowser({
@ -472,7 +465,7 @@ describe("Text layer", () => {
{ timeout: 0 } { timeout: 0 }
); );
}); });
afterAll(async () => { afterEach(async () => {
await closeSinglePage(page); await closeSinglePage(page);
await browser.close(); await browser.close();
}); });
@ -542,7 +535,7 @@ describe("Text layer", () => {
let browser; let browser;
let page; let page;
beforeAll(async () => { beforeEach(async () => {
// Only testing in Firefox because, while Chrome has a setting similar to // Only testing in Firefox because, while Chrome has a setting similar to
// font.minimum-size.x-western, it is not exposed through its API. // font.minimum-size.x-western, it is not exposed through its API.
browser = await startBrowser({ browser = await startBrowser({
@ -561,7 +554,7 @@ describe("Text layer", () => {
); );
}); });
afterAll(async () => { afterEach(async () => {
await closeSinglePage(page); await closeSinglePage(page);
await browser.close(); await browser.close();
}); });