Also test the latest Node.js version in GitHub Actions

Hopefully this will allow us to catch bugs in new Node.js versions earlier, rather than having to wait for bug reports.

Given that `CompressionStream` is (currently) only potentially used when saving a *modified* PDF document, which is unlikely to be a common use-case in Node.js environments, let's just disable the affected unit-test for now.
This commit is contained in:
Jonas Jenwald 2023-10-29 14:21:13 +01:00
parent f528f6f07b
commit 99522c3201
3 changed files with 21 additions and 1 deletions

View File

@ -9,8 +9,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
fail-fast: false
matrix: matrix:
node-version: [18, lts/*] node-version: [18, lts/*, latest]
steps: steps:
- name: Checkout repository - name: Checkout repository

View File

@ -26,6 +26,7 @@ import {
AnnotationFieldFlag, AnnotationFieldFlag,
AnnotationFlag, AnnotationFlag,
AnnotationType, AnnotationType,
isNodeJS,
OPS, OPS,
RenderingIntentFlag, RenderingIntentFlag,
stringToBytes, stringToBytes,
@ -34,6 +35,7 @@ import {
import { import {
CMAP_URL, CMAP_URL,
createIdFactory, createIdFactory,
getNodeVersion,
STANDARD_FONT_DATA_URL, STANDARD_FONT_DATA_URL,
XRefMock, XRefMock,
} from "./test_utils.js"; } from "./test_utils.js";
@ -2207,6 +2209,12 @@ describe("annotation", function () {
}); });
it("should compress and save text", async function () { it("should compress and save text", async function () {
if (isNodeJS && getNodeVersion().major === 21) {
pending(
"CompressionStream behaves differently in Node.js 21, " +
"compared to Firefox, Chrome, and Node.js 18/20."
);
}
const textWidgetRef = Ref.get(123, 0); const textWidgetRef = Ref.get(123, 0);
const xref = new XRefMock([ const xref = new XRefMock([
{ ref: textWidgetRef, data: textWidgetDict }, { ref: textWidgetRef, data: textWidgetDict },

View File

@ -144,11 +144,22 @@ function createIdFactory(pageIndex) {
return page._localIdFactory; return page._localIdFactory;
} }
function getNodeVersion() {
if (!isNodeJS) {
throw new Error("getNodeVersion - only valid in Node.js environments.");
}
const [major, minor, patch] = process.versions.node
.split(".")
.map(parseFloat);
return { major, minor, patch };
}
export { export {
buildGetDocumentParams, buildGetDocumentParams,
CMAP_URL, CMAP_URL,
createIdFactory, createIdFactory,
DefaultFileReaderFactory, DefaultFileReaderFactory,
getNodeVersion,
STANDARD_FONT_DATA_URL, STANDARD_FONT_DATA_URL,
TEST_PDFS_PATH, TEST_PDFS_PATH,
XRefMock, XRefMock,