ci: matrix over Node 22 and 24, add the bench and packaging tiers (task 0040)
The workflow pinned Node 20, which reached end-of-life in April 2026, while the manifest promised support down to it — so the entire claimed range below the single tested version went unverified and its floor was unsupported. Matrix over the two supported long-term-support majors and narrow the engine range to `^22 || ^24`, naming exactly what is tested. Narrowing is free now because nothing has been published and no tags exist. The benchmark harness tier joins every leg: it is deterministic and needs no network, and its non-default runner configuration made it easy to believe it was running when it was not. The end-to-end and packaging tiers run on the highest leg only, conditioned on a flag attached to that leg through a matrix `include` entry rather than on a version number restated at each site. The benchmark smoke tier stays out, since it would pass by skipping. `@types/node` follows the new floor; it was the last Node 20 reference in the manifest, and the typecheck runs on every leg.
This commit was merged in pull request #49.
This commit is contained in:
@@ -63,8 +63,13 @@ describe("npm distribution artifact", () => {
|
||||
|
||||
expect(packedManifest.license).toBe("MIT");
|
||||
|
||||
// The declared range names exactly the majors continuous integration
|
||||
// matrixes over, so nothing is promised that is never tested. Node 20 is
|
||||
// end-of-life and deliberately no longer named.
|
||||
const engines = packedManifest.engines as Record<string, string> | undefined;
|
||||
expect(engines?.node).toMatch(/20/);
|
||||
expect(engines?.node).toMatch(/22/);
|
||||
expect(engines?.node).toMatch(/24/);
|
||||
expect(engines?.node).not.toMatch(/20/);
|
||||
|
||||
expect(packedManifest.type).toBe("module");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user