* test(acceptance): split competing loader ownership across files The loader matrix was one 578-second file, which set the floor for any shard that received it. Three files keep every CLI and MCP case and let workers overlap them. Co-authored-by: morluto <morluto@users.noreply.github.com> * perf(ci): run eight fast built shards under a ten-minute budget Charge each Vitest project by its resolved worker width so serial process-boundary files spread as tail time. Fast feedback uses eight built shards. The npm download cache stays; node_modules is too large to ship as a shared artifact. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(ci): keep each scheduled file on one worker lane Dividing a file by maxWorkers dropped its own wall-time floor and could pack a parallel file onto a serial tail. Place each file whole on a lane, overlap peers only inside a sequence group, and add later groups after. Co-authored-by: morluto <morluto@users.noreply.github.com> * docs(testing): separate the shard budget from workflow time The ten-minute figure is the built shard job. Classification, build, and the portable-test merge are measured separately on run 39451548945. Co-authored-by: morluto <morluto@users.noreply.github.com> * docs(testing): match fast shard count to lane scheduling Main still described five shards and half-duration weights. Fast qualification uses eight shards, and each file keeps its full duration on one worker. Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(ci): seed split loader durations from pre-split history Timings published before the file split still name one 578-second path. Until a new file appears in that artifact, share the recorded duration by the pre-split case counts. Co-authored-by: morluto <morluto@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: morluto <morluto@users.noreply.github.com>
30 lines
939 B
TypeScript
30 lines
939 B
TypeScript
import { expect, it } from "vitest";
|
|
|
|
import { cliTest } from "../../support/cli/cliFixture.js";
|
|
import {
|
|
assertCompetingLoaderOwnership,
|
|
competingLoaderGroups,
|
|
competingLoaderNames,
|
|
} from "./javascriptLiteralLoaderOwnership.js";
|
|
|
|
const loaders = competingLoaderGroups[0];
|
|
|
|
it("partitions every competing loader across the three ownership files", () => {
|
|
const assigned = competingLoaderGroups.flat();
|
|
expect(assigned).toEqual(competingLoaderNames);
|
|
expect(new Set(assigned).size).toBe(competingLoaderNames.length);
|
|
for (const group of competingLoaderGroups)
|
|
expect(group.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
cliTest.for(
|
|
(["CLI", "stdio MCP"] as const).flatMap((surface) =>
|
|
loaders.map((loader) => ({ surface, loader })),
|
|
),
|
|
)(
|
|
"preserves competing loader ownership for $loader through $surface",
|
|
async ({ surface, loader }, { cli }) => {
|
|
await assertCompetingLoaderOwnership(surface, loader, cli);
|
|
},
|
|
);
|