mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-23 09:07:46 +02:00
refactor(deps-dev): bump vitest from 3.2.4 to 4.1.8
Major-version Vitest upgrade across the workspace. Refactors
server/vitest.config.ts to use top-level minWorkers/maxWorkers
(replacing nested poolOptions.forks.{maxForks,minForks}, which
Vitest 4 ignores at top level), updates scripts/run-vitest-stable.mjs
for the new CLI surface, and adds explicit vi.fn() generics required
by Vitest 4's stricter inference in two UI tests. Lockfile changes
intentionally excluded — refresh bot will regenerate.
This commit is contained in:
1 parent
f48905398c
commit
31d308bc1b
27 files changed
+42
-38
No files matched your search
@@ -308,15 +308,20 @@ jobs:
|
||||
# `--skip-verify` bypasses the initial verification gate. release.sh
|
||||
# also requires a clean working tree, so any in-place lockfile churn
|
||||
# from `pnpm install --frozen-lockfile` must be reverted first — unless
|
||||
# the policy job uploaded a regenerated lockfile (manifest-only PRs),
|
||||
# in which case we keep the artifact-restored copy so the workspace
|
||||
# build sees a lockfile that matches the manifest.
|
||||
# the policy job uploaded a regenerated lockfile (manifest-changing
|
||||
# PRs), in which case we stage the artifact-restored copy into an
|
||||
# ephemeral local commit so release.sh sees a clean tree and its
|
||||
# workspace build sees a lockfile that matches the manifest.
|
||||
- name: Release canary dry run via release.sh internal build
|
||||
env:
|
||||
USED_ARTIFACT_LOCKFILE: ${{ needs.policy.outputs.lockfile_regenerated || '0' }}
|
||||
run: |
|
||||
git checkout -B master HEAD
|
||||
if [ "$USED_ARTIFACT_LOCKFILE" != "1" ]; then
|
||||
if [ "$USED_ARTIFACT_LOCKFILE" = "1" ]; then
|
||||
git add pnpm-lock.yaml
|
||||
git -c user.email=ci@paperclip.local -c user.name=CI \
|
||||
commit --no-verify -m "ci(canary): stage regenerated lockfile"
|
||||
else
|
||||
git checkout -- pnpm-lock.yaml
|
||||
fi
|
||||
./scripts/release.sh canary --skip-verify --dry-run
|
||||
|
||||
@@ -248,7 +248,7 @@ describe("skills CLI commands", () => {
|
||||
"http://paperclip.test/api/skills/catalog?kind=bundled&category=software-development&q=github",
|
||||
expect.objectContaining({ method: "GET" }),
|
||||
);
|
||||
const rendered = logSpy.mock.calls.map((call) => String(call[0])).join("\n");
|
||||
const rendered = logSpy.mock.calls.map((call: unknown[]) => String(call[0])).join("\n");
|
||||
expect(rendered).toContain("id");
|
||||
expect(rendered).toContain("paperclipai:bundled:software-development:github-pr-workflow");
|
||||
expect(rendered).toContain("roles");
|
||||
|
||||
@@ -114,7 +114,7 @@ describe("teams CLI commands", () => {
|
||||
"http://paperclip.test/api/teams/catalog?kind=bundled&category=software-development&q=engineering",
|
||||
expect.objectContaining({ method: "GET" }),
|
||||
);
|
||||
const rendered = logSpy.mock.calls.map((call) => String(call[0])).join("\n");
|
||||
const rendered = logSpy.mock.calls.map((call: unknown[]) => String(call[0])).join("\n");
|
||||
expect(rendered).toContain("id");
|
||||
expect(rendered).toContain("paperclipai:bundled:software-development:product-engineering");
|
||||
});
|
||||
@@ -188,7 +188,7 @@ describe("teams CLI commands", () => {
|
||||
"http://paperclip.test/api/companies/company-1/teams/catalog/installed",
|
||||
expect.objectContaining({ method: "GET" }),
|
||||
);
|
||||
const rendered = logSpy.mock.calls.map((call) => String(call[0])).join("\n");
|
||||
const rendered = logSpy.mock.calls.map((call: unknown[]) => String(call[0])).join("\n");
|
||||
expect(rendered).toContain("installedStatus");
|
||||
expect(rendered).toContain("out_of_date");
|
||||
expect(rendered).toContain("not_installed");
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@
|
||||
"cross-env": "^10.1.0",
|
||||
"esbuild": "^0.28.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
|
||||
@@ -54,6 +54,6 @@
|
||||
"drizzle-kit": "^0.31.9",
|
||||
"tsx": "^4.19.2",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,6 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -37,7 +37,7 @@
|
||||
"rollup": "^4.61.1",
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=18"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"rollup": "^4.61.1",
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=18"
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.2.4"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -47,7 +47,7 @@
|
||||
"rollup": "^4.61.1",
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=18"
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=18",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"devDependencies": {
|
||||
"@cloudflare/workers-types": "^4.20260501.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.2.4",
|
||||
"vitest": "^4.1.8",
|
||||
"wrangler": "^4.15.0"
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,6 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.2.4"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,6 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.2.4"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,6 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.2.4"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -53,6 +53,6 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.2.4"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,6 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0",
|
||||
"typescript": "^5.7.3",
|
||||
"vitest": "^3.2.4"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,7 @@
|
||||
"zod": "^3.24.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0",
|
||||
"typescript": "^5.7.3"
|
||||
}
|
||||
}
|
||||
@@ -45,5 +45,8 @@
|
||||
"test": "pnpm -w exec vitest run --root packages/skills-catalog --config vitest.config.ts",
|
||||
"typecheck": "tsc -p tsconfig.json --noEmit",
|
||||
"validate": "node ../../cli/node_modules/tsx/dist/cli.mjs scripts/validate-catalog.ts"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0"
|
||||
}
|
||||
}
|
||||
@@ -45,5 +45,8 @@
|
||||
"test": "pnpm -w exec vitest run --root packages/teams-catalog --config vitest.config.ts",
|
||||
"typecheck": "tsc -p tsconfig.json --noEmit",
|
||||
"validate": "node ../../cli/node_modules/tsx/dist/cli.mjs scripts/validate-catalog.ts"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^24.6.0"
|
||||
}
|
||||
}
|
||||
@@ -60,7 +60,6 @@ const generalGroupNames = [generalServerGroupName, generalWorkspacesAGroupName,
|
||||
const serializedServerVitestArgs = [
|
||||
"--no-file-parallelism",
|
||||
"--maxWorkers=1",
|
||||
"--minWorkers=1",
|
||||
];
|
||||
|
||||
function walk(dir) {
|
||||
@@ -322,7 +321,7 @@ function runSerializedSuites(routeTests, shardIndex, shardCount) {
|
||||
"@paperclipai/server",
|
||||
routeTest.repoPath,
|
||||
"--pool=forks",
|
||||
"--poolOptions.forks.isolate=true",
|
||||
"--isolate",
|
||||
],
|
||||
routeTest.repoPath,
|
||||
);
|
||||
|
||||
+1
-1
@@ -93,6 +93,6 @@
|
||||
"tsx": "^4.19.2",
|
||||
"typescript": "^5.7.3",
|
||||
"vite": "^6.1.0",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -8,13 +8,6 @@ export default defineConfig({
|
||||
maxWorkers: 1,
|
||||
minWorkers: 1,
|
||||
pool: "forks",
|
||||
poolOptions: {
|
||||
forks: {
|
||||
isolate: true,
|
||||
maxForks: 1,
|
||||
minForks: 1,
|
||||
},
|
||||
},
|
||||
sequence: {
|
||||
concurrent: false,
|
||||
hooks: "list",
|
||||
|
||||
+1
-1
@@ -79,6 +79,6 @@
|
||||
"typescript": "^5.7.3",
|
||||
"storybook": "10.3.5",
|
||||
"vite": "^6.1.0",
|
||||
"vitest": "^3.0.5"
|
||||
"vitest": "^4.1.8"
|
||||
}
|
||||
}
|
||||
@@ -61,16 +61,16 @@ vi.mock("@/plugins/slots", () => ({
|
||||
|
||||
describe("CommentThread", () => {
|
||||
let container: HTMLDivElement;
|
||||
let writeTextMock: ReturnType<typeof vi.fn>;
|
||||
let execCommandMock: ReturnType<typeof vi.fn>;
|
||||
let writeTextMock: ReturnType<typeof vi.fn<(text: string) => Promise<void>>>;
|
||||
let execCommandMock: ReturnType<typeof vi.fn<typeof document.execCommand>>;
|
||||
|
||||
beforeEach(() => {
|
||||
container = document.createElement("div");
|
||||
document.body.appendChild(container);
|
||||
vi.useFakeTimers();
|
||||
vi.setSystemTime(new Date("2026-03-11T12:00:00.000Z"));
|
||||
writeTextMock = vi.fn(async () => {});
|
||||
execCommandMock = vi.fn(() => true);
|
||||
writeTextMock = vi.fn<(text: string) => Promise<void>>(async () => {});
|
||||
execCommandMock = vi.fn<typeof document.execCommand>(() => true);
|
||||
Object.assign(navigator, {
|
||||
clipboard: {
|
||||
writeText: writeTextMock,
|
||||
|
||||
@@ -685,7 +685,7 @@ describe("MarkdownEditor", () => {
|
||||
}
|
||||
|
||||
async function openMentionMenuFor(
|
||||
handleChange: ReturnType<typeof vi.fn>,
|
||||
handleChange: ReturnType<typeof vi.fn<(value: string) => void>>,
|
||||
mentions = [
|
||||
{
|
||||
id: "project:project-123",
|
||||
|
||||
@@ -954,7 +954,7 @@ describe("IssueDetail", () => {
|
||||
expect(container.textContent).toContain("Issue detail smoke");
|
||||
expect(container.textContent).toContain("Chat thread");
|
||||
expect(
|
||||
consoleErrorSpy.mock.calls.some((call) =>
|
||||
consoleErrorSpy.mock.calls.some((call: unknown[]) =>
|
||||
String(call[0]).includes("React has detected a change in the order of Hooks"),
|
||||
),
|
||||
).toBe(false);
|
||||
|
||||
Reference in new issue
Block a user