Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/app/api-common/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@
"@biomejs/biome": "^2.3.7",
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^1.3.0",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.0.7",
"vitest": "^4.0.14",
"zod": "^4.0.17"
},
"dependencies": {
Expand Down
4 changes: 2 additions & 2 deletions packages/app/api-contracts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@
"@biomejs/biome": "^2.3.7",
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^1.3.0",
"@vitest/coverage-v8": "^3.2.4",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.2.4",
"vitest": "^4.0.14",
"zod": "^4.0.17"
},
"dependencies": {}
Expand Down
4 changes: 2 additions & 2 deletions packages/app/auth/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,10 @@
"@lokalise/tsconfig": "^1.3.0",
"@lokalise/universal-ts-utils": "^4.5.1",
"@types/node": "^24.0.3",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"mockttp": "^4.1.0",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.0.7"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/aws-config/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@
"@message-queue-toolkit/sns": "^23.1.2",
"@message-queue-toolkit/sqs": "^22.2.0",
"@types/node": "^24.0.3",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.0.7"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/backend-http-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@
"@lokalise/node-core": "^14.4.2",
"@lokalise/tsconfig": "^1.3.0",
"@types/node": "^24.0.3",
"@vitest/coverage-v8": "^3.2.2",
"@vitest/coverage-v8": "^4.0.14",
"typescript": "^5.9.3",
"vitest": "^3.2.4",
"vitest": "^4.0.14",
"zod": "^4.1.12"
}
}
4 changes: 2 additions & 2 deletions packages/app/background-jobs-common/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^1.3.0",
"@types/node": "^24.0.3",
"@vitest/coverage-v8": "^3.2.3",
"@vitest/coverage-v8": "^4.0.14",
"bullmq": "^5.56.8",
"ioredis": "^5.6.1",
"pino": "^10.0.0",
"rimraf": "^6.0.1",
"toad-scheduler": "^3.1.0",
"typescript": "5.9.3",
"vitest": "^3.2.3",
"vitest": "^4.0.14",
"zod": "^4.0.17"
}
}
4 changes: 2 additions & 2 deletions packages/app/context-fastify-plugins/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,12 @@
"@lokalise/tsconfig": "^1.3.0",
"@prisma/instrumentation": "^7.0.1",
"@types/node": "^24.0.3",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"fastify": "^5.0.0",
"pino": "^10.1.0",
"pino-pretty": "^13.0.0",
"rimraf": "^6.0.1",
"typescript": "^5.9.3",
"vitest": "^3.0.7"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/error-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@
"@lokalise/biome-config": "^3.1.0",
"@lokalise/node-core": "^14.0.0",
"@lokalise/tsconfig": "^1.3.0",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.0.7"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/fastify-api-contracts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@
"@lokalise/api-contracts": "^6.0.0",
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "~1.2.0",
"@vitest/coverage-v8": "^3.1.1",
"@vitest/coverage-v8": "^4.0.14",
"fastify-type-provider-zod": "^6.0.0",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.2.2",
"vitest": "^4.0.14",
"zod": "^4.0.17"
}
}
4 changes: 2 additions & 2 deletions packages/app/fastify-bullboard-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"@lokalise/background-jobs-common": "^14.0.0",
"@lokalise/biome-config": "^3.1.0",
"@types/node": "^24.0.12",
"@vitest/coverage-v8": "^3.2.4",
"@vitest/coverage-v8": "^4.0.14",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

Script executed:

#!/bin/bash

# Check for vitest/vite config files in the fastify-bullboard-plugin package
echo "=== Searching for vitest/vite config files ==="
find packages/app/fastify-bullboard-plugin -maxdepth 2 \( -name "vitest.config.*" -o -name "vite.config.*" \)

# Also check if there are any config files at root level that might apply
echo ""
echo "=== Checking root level config files ==="
find . -maxdepth 1 \( -name "vitest.config.*" -o -name "vite.config.*" \) 2>/dev/null

# Show the full package.json to see test scripts and any vitest config
echo ""
echo "=== Full package.json content ==="
cat -n packages/app/fastify-bullboard-plugin/package.json

Repository: lokalise/shared-ts-libs


<shell_result>
Repository: lokalise/shared-ts-libs
Exit code: 0

stdout:

=== Searching for vitest/vite config files ===
packages/app/fastify-bullboard-plugin/vitest.config.ts

=== Checking root level config files ===

=== Full package.json content ===
     1	{
     2	    "name": "@lokalise/fastify-bullboard-plugin",
     3	    "version": "2.1.0",
     4	    "type": "module",
     5	    "files": [
     6	        "dist",
     7	        "README.md",
     8	        "LICENSE.md"
     9	    ],
    10	    "engines": {
    11	        "node": ">=20.13.0"
    12	    },
    13	    "license": "Apache-2.0",
    14	    "main": "./dist/index.js",
    15	    "module": "./dist/index.js",
    16	    "types": "./dist/index.d.ts",
    17	    "exports": {
    18	        ".": "./dist/index.js",
    19	        "./package.json": "./package.json"
    20	    },
    21	    "scripts": {
    22	        "build": "rimraf dist && tsc --project tsconfig.build.json",
    23	        "lint": "biome check . && tsc",
    24	        "lint:fix": "biome check --write",
    25	        "test": "vitest run",
    26	        "test:ci": "vitest run --coverage",
    27	        "prepublishOnly": "npm run build",
    28	        "package-version": "echo $npm_package_version",
    29	        "postversion": "biome check --write package.json"
    30	    },
    31	    "dependencies": {
    32	        "@bull-board/api": "^6.14.0",
    33	        "@bull-board/fastify": "^6.14.0",
    34	        "@fastify/auth": "^5.0.3",
    35	        "@fastify/basic-auth": "^6.2.0"
    36	    },
    37	    "peerDependencies": {
    38	        "@lokalise/background-jobs-common": ">=12.6.0"
    39	    },
    40	    "devDependencies": {
    41	        "@biomejs/biome": "^2.3.7",
    42	        "@lokalise/background-jobs-common": "^14.0.0",
    43	        "@lokalise/biome-config": "^3.1.0",
    44	        "@types/node": "^24.0.12",
    45	        "@vitest/coverage-v8": "^4.0.14",
    46	        "@fastify/awilix": "^8.0.0",
    47	        "@fastify/schedule": "^6.0.0",
    48	        "@lokalise/fastify-extras": "^30.0.0",
    49	        "@lokalise/node-core": "^14.1.0",
    50	        "awilix": "^12.0.5",
    51	        "awilix-manager": "^6.1.0",
    52	        "bullmq": "^5.56.8",
    53	        "cross-env": "^10.0.0",
    54	        "fastify": "^5.4.0",
    55	        "fastify-graceful-shutdown": "^4.0.1",
    56	        "fastify-metrics": "^12.1.0",
    57	        "fastify-plugin": "^5.0.1",
    58	        "ioredis": "^5.6.1",
    59	        "pino": "^10.1.0",
    60	        "toad-scheduler": "^3.0.1",
    61	        "ts-deepmerge": "^7.0.3",
    62	        "pino-pretty": "^13.0.0",
    63	        "typescript": "5.9.3",
    64	        "vitest": "^4.0.14"
    65	    },
    66	    "keywords": [
    67	        "fastify",
    68	        "bullboard",
    69	        "bull",
    70	        "dashboard",
    71	        "plugin"
    72	    ],
    73	    "homepage": "https://github.com/lokalise/shared-ts-libs",
    74	    "repository": {
    75	        "type": "git",
    76	        "url": "git://github.com/lokalise/shared-ts-libs.git"
    77	    },
    78	    "publishConfig": {
    79	        "access": "public"
    80	    }
    81	}

</shell_result>


Script executed:

#!/bin/bash

echo "=== vitest.config.ts content ==="
cat -n packages/app/fastify-bullboard-plugin/vitest.config.ts

Repository: lokalise/shared-ts-libs


<shell_result>
Repository: lokalise/shared-ts-libs
Exit code: 0

stdout:

=== vitest.config.ts content ===
     1	import { defineConfig } from 'vitest/config'
     2	
     3	// biome-ignore lint/style/noDefaultExport: vite expects default export
     4	export default defineConfig({
     5	  test: {
     6	    globals: true,
     7	    watch: false,
     8	    restoreMocks: true,
     9	    pool: 'threads',
    10	    coverage: {
    11	      provider: 'v8',
    12	      include: ['src/**/*.ts'],
    13	      exclude: ['src/index.ts'],
    14	      thresholds: {
    15	        lines: 78,
    16	        functions: 75,
    17	        branches: 86,
    18	        statements: 78,
    19	      },
    20	    },
    21	  },
    22	})

</shell_result>


vitest 4.0 breaking changes migration guide from 3.x


<web_search_result>
Here are the main breaking changes and migration notes when upgrading from Vitest 3.x → 4.0 (concise summary; see linked official migration docs for full details):

  • V8 coverage remapping changed — new AST‑based remapping; expect coverage report differences. coverage.ignoreEmptyLines removed; coverage ignore hints updated. [1][2]
  • Mocking changes:
    • vi.fn().getMockName() now returns vi.fn() (not "spy") by default (may affect snapshots).
    • vi.restoreAllMocks no longer resets automocks — it only restores spies created with vi.spyOn (restoreMocks config affected). .mockRestore still clears state.
    • vi.spyOn on an already mocked function returns the same mock.
    • mock.settledResults populated immediately with 'incomplete' on invocation. [1][2]
  • Browser mode / providers:
    • Browser provider config now accepts an object (and providers are separate packages). @vitest/browser is no longer required; import paths changed (use vitest/browser). preview is not a default. Update any /// usages. [1][2]
  • Removed / renamed config options and deprecated APIs:
    • Removed: poolMatchGlobs, environmentMatchGlobs — use projects.
    • Removed reporter APIs: onCollected, onSpecsCollected, onPathsCollected, onTaskUpdate, onFinished — use new Reporters API.
    • deps.external, deps.inline, deps.fallbackCJS moved to server.deps.*.
    • browser.testerScripts → use browser.testerHtmlPath.
    • minWorkers removed (only maxWorkers matters).
    • reporters: 'basic' removed (equivalent config shown in migration doc).
    • Passing test/describe options as 3rd arg removed — use second-arg options object instead (timeout number as last arg still allowed). [1][2][3]
  • Deprecated types removed (fixes accidental @types/node pull-in). [1][2]
  • V8 vs Istanbul coverage provider behavior and ignore hints changed — update CI/coverage expectations and config where necessary. [1][2]

Primary references / migration docs:

  • Vitest blog & announcement (4.0): [1]
  • Official Migration Guide / Docs (detailed list & examples): [2][3]

If you want, I can:

  • produce a diff-style checklist for your repo (config, imports, mocks, reporters) based on your package.json and vitest config, or
  • extract the exact code changes for each item (examples) from the migration doc. Which would you prefer?
    </web_search_result>

Script executed:

#!/bin/bash

echo "=== Checking for deprecated vitest 4.0 options in config ==="
grep -n "ignoreEmptyLines\|poolMatchGlobs\|environmentMatchGlobs\|minWorkers" packages/app/fastify-bullboard-plugin/vitest.config.ts || echo "No deprecated options found in config"

echo ""
echo "=== Checking test files for potential mock/spy issues ==="
find packages/app/fastify-bullboard-plugin/src -name "*.test.ts" -o -name "*.spec.ts" | head -5

Repository: lokalise/shared-ts-libs


<shell_result>
Repository: lokalise/shared-ts-libs
Exit code: 0

stdout:

=== Checking for deprecated vitest 4.0 options in config ===
No deprecated options found in config

=== Checking test files for potential mock/spy issues ===
packages/app/fastify-bullboard-plugin/src/basicAuth.spec.ts
packages/app/fastify-bullboard-plugin/src/bullBoard.spec.ts
packages/app/fastify-bullboard-plugin/src/errorReporterPlugin.spec.ts

</shell_result>


Based on my verification, I can now provide a rewritten review comment:


Verify restoreMocks behavior and v8 coverage reporting after vitest 4.0 upgrade.

This file upgrades vitest and @vitest/coverage-v8 from 3.2.4 to 4.0.14. While the config file exists and uses no deprecated options, vitest 4.0 introduces breaking changes affecting this package:

  1. restoreMocks behavior changed: The restoreMocks: true setting (line 8 of vitest.config.ts) now only restores spies created with vi.spyOn, no longer resetting automocks. Review test files to ensure mock behavior remains correct.

  2. v8 coverage remapping changed: The AST-based remapping in v8 provider may produce different coverage reports than 3.2.4. Monitor CI coverage metrics for unexpected threshold changes.

Also applies to: 64-64

🤖 Prompt for AI Agents
In packages/app/fastify-bullboard-plugin/package.json around line 45, vitest and
@vitest/coverage-v8 were upgraded to 4.0.14 which changes restoreMocks behavior
and v8 coverage remapping; update the test suite and CI accordingly by (1)
auditing tests that rely on automatic mock restoration and either change them to
use vi.spyOn where appropriate or call vi.restoreAllMocks()/vi.resetAllMocks()
in afterEach hooks (or change vitest.config.ts restoreMocks to false and use
explicit restores), and (2) run CI locally to compare coverage reports and, if
thresholds shift due to v8 remapping, adjust coverage thresholds or investigate
source-mapping differences to ensure expected coverage metrics remain correct.

"@fastify/awilix": "^8.0.0",
"@fastify/schedule": "^6.0.0",
"@lokalise/fastify-extras": "^30.0.0",
Expand All @@ -61,7 +61,7 @@
"ts-deepmerge": "^7.0.3",
"pino-pretty": "^13.0.0",
"typescript": "5.9.3",
"vitest": "^3.2.4"
"vitest": "^4.0.14"
},
"keywords": [
"fastify",
Expand Down
4 changes: 2 additions & 2 deletions packages/app/frontend-http-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "~1.3.0",
"@types/node": "^24.0.3",
"@vitest/coverage-v8": "^3.2.2",
"@vitest/coverage-v8": "^4.0.14",
"jest-fail-on-console": "^3.3.1",
"mock-xmlhttprequest": "^8.4.1",
"mockttp": "^4.0.1",
"rimraf": "^6.0.1",
"typescript": "~5.9.3",
"vitest": "^3.2.2",
"vitest": "^4.0.14",
"zod": "^4.0.17"
},
"keywords": [
Expand Down
4 changes: 2 additions & 2 deletions packages/app/healthcheck-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@
"@lokalise/background-jobs-common": "^14.0.0",
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^1.3.0",
"@vitest/coverage-v8": "^3.1.2",
"@vitest/coverage-v8": "^4.0.14",
"ioredis": "^5.6.1",
"prom-client": "^15.1.3",
"rimraf": "^6.0.1",
"toad-scheduler": "^3.1.0",
"typescript": "5.9.3",
"vitest": "^3.1.2"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/id-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@
"@biomejs/biome": "^2.3.7",
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^1.3.0",
"@vitest/coverage-v8": "^3.1.2",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.1.2"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/metrics-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
"@biomejs/biome": "^2.3.7",
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^1.3.0",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.0.7"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/non-translatable-markup/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@
"@biomejs/biome": "^2.3.7",
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "*",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.0.7"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/prisma-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@
"@lokalise/fastify-extras": "^30.2.1",
"@lokalise/tsconfig": "^1.3.0",
"@prisma/client": "~6.19.0",
"@vitest/coverage-v8": "^3.2.4",
"@vitest/coverage-v8": "^4.0.14",
"cross-env": "^10.0.0",
"prisma": "~6.19.0",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.2.4",
"vitest": "^4.0.14",
"zod": "^4.1.12"
}
}
4 changes: 2 additions & 2 deletions packages/app/script-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
"@biomejs/biome": "^2.3.7",
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^1.3.0",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.0.7"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/supported-languages/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@
"@lokalise/node-core": "^14.0.0",
"@lokalise/tsconfig": "^1.3.0",
"@rollup/plugin-typescript": "^12.1.0",
"@vitest/coverage-v8": "^3.0.7",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.0.7"
"vitest": "^4.0.14"
}
}
4 changes: 2 additions & 2 deletions packages/app/universal-testing-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@
"@lokalise/biome-config": "^3.1.0",
"@lokalise/frontend-http-client": "*",
"@lokalise/tsconfig": "^1.3.0",
"@vitest/coverage-v8": "^3.2.4",
"@vitest/coverage-v8": "^4.0.14",
"mockttp": "^4.1.0",
"msw": "^2.11.1",
"rimraf": "^6.0.1",
"typescript": "5.9.3",
"vitest": "^3.2.4",
"vitest": "^4.0.14",
"wretch": "^2.11.0",
"zod": "^4.1.5"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/app/universal-ts-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^2.0.0",
"@types/node": "^24.2.0",
"@vitest/coverage-v8": "^3.2.4",
"@vitest/coverage-v8": "^4.0.14",
"typescript": "^5.9.3",
"vitest": "^3.2.4"
"vitest": "^4.0.14"
},
"exports": {
"./node": "./dist/node.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/app/websockets-common/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"@lokalise/tsconfig": "^1.3.0",
"rimraf": "^6.0.1",
"typescript": "~5.9.3",
"vitest": "^3.0.7",
"vitest": "^4.0.14",
"zod": "^4.0.17"
}
}
4 changes: 2 additions & 2 deletions packages/app/zod-extras/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@
"@lokalise/biome-config": "^3.1.0",
"@lokalise/tsconfig": "^1.3.0",
"@types/node": "^24.0.3",
"@vitest/coverage-v8": "^3.2.2",
"@vitest/coverage-v8": "^4.0.14",
"rimraf": "^6.0.1",
"typescript": "^5.9.3",
"vitest": "^3.2.2",
"vitest": "^4.0.14",
"zod": "^4.0.17"
}
}
Loading