test: migrate test & utils (#14569)

#### PR Dependency Tree


* **PR #14569** 👈

This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Upgraded development test tooling to Vitest v4 and added Playwright
browser test integration; normalized test configurations and CI shard
matrix.

* **Tests**
* Added a large suite of new integration tests covering editor flows
(edgeless, database, embeds, images, latex, code, clipboard,
multi-editor, presentation, undo/redo, etc.).
* Removed numerous end-to-end Playwright test suites across the same
feature areas.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2026-03-07 04:12:27 +08:00
committed by GitHub
parent b5d5b71f95
commit f34e25e122
61 changed files with 370 additions and 328 deletions

View File

@@ -226,7 +226,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
shard: [1, 2] shard: [1, 2, 3, 4, 5]
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- name: Setup Node.js - name: Setup Node.js
@@ -356,7 +356,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
shard: [1, 2, 3] shard: [1, 2, 3, 4, 5]
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- name: Setup Node.js - name: Setup Node.js

View File

@@ -300,6 +300,6 @@
"devDependencies": { "devDependencies": {
"@vanilla-extract/vite-plugin": "^5.0.0", "@vanilla-extract/vite-plugin": "^5.0.0",
"msw": "^2.12.4", "msw": "^2.12.4",
"vitest": "^3.2.4" "vitest": "^4.0.18"
} }
} }

View File

@@ -11,7 +11,7 @@ export default defineConfig({
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 1000, testTimeout: 1000,
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul',
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: '../../../.coverage/blocksuite-affine', reportsDirectory: '../../../.coverage/blocksuite-affine',
}, },

View File

@@ -31,7 +31,8 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "@vitest/browser-playwright": "^4.0.18",
"vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -1,3 +1,4 @@
import { playwright } from '@vitest/browser-playwright';
import { defineConfig } from 'vitest/config'; import { defineConfig } from 'vitest/config';
export default defineConfig({ export default defineConfig({
@@ -8,10 +9,9 @@ export default defineConfig({
browser: { browser: {
enabled: true, enabled: true,
headless: true, headless: true,
name: 'chromium', instances: [{ browser: 'chromium' }],
provider: 'playwright', provider: playwright(),
isolate: false, isolate: false,
providerOptions: {},
}, },
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 500, testTimeout: 500,

View File

@@ -45,8 +45,10 @@ export class AffineCodeUnit extends ShadowlessElement {
if (!codeBlock || !vElement) return plainContent; if (!codeBlock || !vElement) return plainContent;
const tokens = codeBlock.highlightTokens$.value; const tokens = codeBlock.highlightTokens$.value;
if (tokens.length === 0) return plainContent; if (tokens.length === 0) return plainContent;
const line = tokens[vElement.lineIndex];
if (!line) return plainContent;
// copy the tokens to avoid modifying the original tokens // copy the tokens to avoid modifying the original tokens
const lineTokens = structuredClone(tokens[vElement.lineIndex]); const lineTokens = structuredClone(line);
if (lineTokens.length === 0) return plainContent; if (lineTokens.length === 0) return plainContent;
const startOffset = vElement.startOffset; const startOffset = vElement.startOffset;

View File

@@ -35,7 +35,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -35,7 +35,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -31,7 +31,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -33,7 +33,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -32,7 +32,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -15,7 +15,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts" ".": "./src/index.ts"

View File

@@ -8,7 +8,7 @@ export default defineConfig({
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 500, testTimeout: 500,
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul',
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: '../../../.coverage/ext-loader', reportsDirectory: '../../../.coverage/ext-loader',
}, },

View File

@@ -34,7 +34,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -32,7 +32,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -29,7 +29,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -34,7 +34,8 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "@vitest/browser-playwright": "^4.0.18",
"vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -1,3 +1,4 @@
import { playwright } from '@vitest/browser-playwright';
import { defineConfig } from 'vitest/config'; import { defineConfig } from 'vitest/config';
export default defineConfig({ export default defineConfig({
@@ -8,10 +9,9 @@ export default defineConfig({
browser: { browser: {
enabled: true, enabled: true,
headless: true, headless: true,
name: 'chromium', instances: [{ browser: 'chromium' }],
provider: 'playwright', provider: playwright(),
isolate: false, isolate: false,
providerOptions: {},
}, },
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 500, testTimeout: 500,

View File

@@ -74,7 +74,7 @@
], ],
"devDependencies": { "devDependencies": {
"@types/pdfmake": "^0.2.12", "@types/pdfmake": "^0.2.12",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"version": "0.26.3" "version": "0.26.3"
} }

View File

@@ -9,7 +9,7 @@ export default defineConfig({
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 1000, testTimeout: 1000,
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul', // or 'istanbul'
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: '../../../.coverage/affine-shared', reportsDirectory: '../../../.coverage/affine-shared',
}, },

View File

@@ -62,7 +62,7 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"version": "0.26.3" "version": "0.26.3"
} }

View File

@@ -5,7 +5,7 @@ export default defineConfig({
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 500, testTimeout: 500,
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul',
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: '../../../.coverage/global', reportsDirectory: '../../../.coverage/global',
}, },

View File

@@ -33,7 +33,8 @@
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "@vitest/browser-playwright": "^4.0.18",
"vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -1,3 +1,4 @@
import { playwright } from '@vitest/browser-playwright';
import { defineConfig } from 'vitest/config'; import { defineConfig } from 'vitest/config';
export default defineConfig({ export default defineConfig({
@@ -8,15 +9,14 @@ export default defineConfig({
browser: { browser: {
enabled: true, enabled: true,
headless: true, headless: true,
name: 'chromium', instances: [{ browser: 'chromium' }],
provider: 'playwright', provider: playwright(),
isolate: false, isolate: false,
providerOptions: {},
}, },
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 500, testTimeout: 500,
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul',
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: '../../../.coverage/std', reportsDirectory: '../../../.coverage/std',
}, },

View File

@@ -29,7 +29,7 @@
"devDependencies": { "devDependencies": {
"@types/lodash.clonedeep": "^4.5.9", "@types/lodash.clonedeep": "^4.5.9",
"@types/lodash.merge": "^4.6.9", "@types/lodash.merge": "^4.6.9",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
".": "./src/index.ts", ".": "./src/index.ts",

View File

@@ -7,15 +7,11 @@ export * from './transformer';
export { type IdGenerator, nanoid, uuidv4 } from './utils/id-generator'; export { type IdGenerator, nanoid, uuidv4 } from './utils/id-generator';
export * from './yjs'; export * from './yjs';
const env = ( const env = (typeof globalThis !== 'undefined'
typeof globalThis !== 'undefined' ? globalThis
? globalThis : typeof window !== 'undefined'
: typeof window !== 'undefined' ? window
? window : {}) as unknown as Record<string, boolean>;
: typeof global !== 'undefined'
? global
: {}
) as Record<string, boolean>;
const importIdentifier = '__ $BLOCKSUITE_STORE$ __'; const importIdentifier = '__ $BLOCKSUITE_STORE$ __';
if (env[importIdentifier] === true) { if (env[importIdentifier] === true) {

View File

@@ -8,7 +8,7 @@ export default defineConfig({
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 500, testTimeout: 500,
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul',
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: '../../../.coverage/store', reportsDirectory: '../../../.coverage/store',
}, },

View File

@@ -19,7 +19,7 @@
"y-protocols": "^1.0.6" "y-protocols": "^1.0.6"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"peerDependencies": { "peerDependencies": {
"yjs": "*" "yjs": "*"

View File

@@ -5,7 +5,7 @@ export default defineConfig({
include: ['src/__tests__/**/*.unit.spec.ts'], include: ['src/__tests__/**/*.unit.spec.ts'],
testTimeout: 500, testTimeout: 500,
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul',
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: '../../../.coverage/sync', reportsDirectory: '../../../.coverage/sync',
}, },

View File

@@ -6,7 +6,7 @@
"dev": "vite", "dev": "vite",
"build": "tsc", "build": "tsc",
"test:unit": "vitest --browser.headless --run", "test:unit": "vitest --browser.headless --run",
"test:debug": "PWDEBUG=1 npx vitest" "test:debug": "PWDEBUG=1 npx vitest --browser.headless=false"
}, },
"sideEffects": false, "sideEffects": false,
"keywords": [], "keywords": [],
@@ -41,10 +41,11 @@
], ],
"devDependencies": { "devDependencies": {
"@vanilla-extract/vite-plugin": "^5.0.0", "@vanilla-extract/vite-plugin": "^5.0.0",
"@vitest/browser-playwright": "^4.0.18",
"vite": "^7.2.7", "vite": "^7.2.7",
"vite-plugin-istanbul": "^7.2.1", "vite-plugin-istanbul": "^7.2.1",
"vite-plugin-wasm": "^3.5.0", "vite-plugin-wasm": "^3.5.0",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"version": "0.26.3" "version": "0.26.3"
} }

View File

@@ -1,4 +1,5 @@
import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin'; import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin';
import { playwright } from '@vitest/browser-playwright';
import { defineConfig } from 'vitest/config'; import { defineConfig } from 'vitest/config';
export default defineConfig(_configEnv => export default defineConfig(_configEnv =>
@@ -18,13 +19,13 @@ export default defineConfig(_configEnv =>
retry: process.env.CI === 'true' ? 3 : 0, retry: process.env.CI === 'true' ? 3 : 0,
browser: { browser: {
enabled: true, enabled: true,
headless: process.env.CI === 'true', headless: true,
instances: [ instances: [
{ browser: 'chromium' }, { browser: 'chromium' },
{ browser: 'firefox' }, { browser: 'firefox' },
{ browser: 'webkit' }, { browser: 'webkit' },
], ],
provider: 'playwright', provider: playwright(),
isolate: false, isolate: false,
viewport: { viewport: {
width: 1024, width: 1024,
@@ -32,16 +33,13 @@ export default defineConfig(_configEnv =>
}, },
}, },
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul',
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: '../../.coverage/integration-test', reportsDirectory: '../../.coverage/integration-test',
}, },
deps: { deps: {
interopDefault: true, interopDefault: true,
}, },
testTransformMode: {
web: ['src/__tests__/**/*.spec.ts'],
},
}, },
}) })
); );

View File

@@ -64,9 +64,9 @@
"@types/node": "^22.0.0", "@types/node": "^22.0.0",
"@typescript-eslint/parser": "^8.55.0", "@typescript-eslint/parser": "^8.55.0",
"@vanilla-extract/vite-plugin": "^5.0.0", "@vanilla-extract/vite-plugin": "^5.0.0",
"@vitest/browser": "^3.2.4", "@vitest/browser": "^4.0.18",
"@vitest/coverage-istanbul": "^3.2.4", "@vitest/coverage-istanbul": "^4.0.18",
"@vitest/ui": "^3.2.4", "@vitest/ui": "^4.0.18",
"cross-env": "^10.1.0", "cross-env": "^10.1.0",
"electron": "^39.0.0", "electron": "^39.0.0",
"eslint": "^9.39.2", "eslint": "^9.39.2",
@@ -90,7 +90,7 @@
"typescript-eslint": "^8.55.0", "typescript-eslint": "^8.55.0",
"unplugin-swc": "^1.5.9", "unplugin-swc": "^1.5.9",
"vite": "^7.2.7", "vite": "^7.2.7",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"packageManager": "yarn@4.12.0", "packageManager": "yarn@4.12.0",
"resolutions": { "resolutions": {

View File

@@ -4,9 +4,6 @@
"version": "0.26.3", "version": "0.26.3",
"description": "Affine Node.js server", "description": "Affine Node.js server",
"type": "module", "type": "module",
"bin": {
"run-test": "./scripts/run-test.ts"
},
"scripts": { "scripts": {
"build": "affine bundle -p @affine/server", "build": "affine bundle -p @affine/server",
"dev": "nodemon ./src/index.ts", "dev": "nodemon ./src/index.ts",

View File

@@ -10,7 +10,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/debug": "^4.1.12", "@types/debug": "^4.1.12",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"version": "0.26.3" "version": "0.26.3"
} }

View File

@@ -3,7 +3,7 @@
"private": true, "private": true,
"type": "module", "type": "module",
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"exports": { "exports": {
"./automation": "./src/automation.ts", "./automation": "./src/automation.ts",

View File

@@ -11,6 +11,6 @@
"graphql": "^16.9.0" "graphql": "^16.9.0"
}, },
"devDependencies": { "devDependencies": {
"vitest": "^3.2.4" "vitest": "^4.0.18"
} }
} }

View File

@@ -18,7 +18,7 @@
"@graphql-codegen/typescript-operations": "^4.6.1", "@graphql-codegen/typescript-operations": "^4.6.1",
"@types/lodash-es": "^4.17.12", "@types/lodash-es": "^4.17.12",
"prettier": "^3.7.4", "prettier": "^3.7.4",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"scripts": { "scripts": {
"build": "gql-gen --errors-only" "build": "gql-gen --errors-only"

View File

@@ -39,7 +39,7 @@
"@types/react": "^19.0.1", "@types/react": "^19.0.1",
"fake-indexeddb": "^6.0.0", "fake-indexeddb": "^6.0.0",
"rxjs": "^7.8.2", "rxjs": "^7.8.2",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"peerDependencies": { "peerDependencies": {
"electron": "*", "electron": "*",

View File

@@ -2,6 +2,7 @@
"extends": "../../../tsconfig.web.json", "extends": "../../../tsconfig.web.json",
"include": ["./src"], "include": ["./src"],
"compilerOptions": { "compilerOptions": {
"types": ["build-config", "affine__env", "node"],
"rootDir": "./src", "rootDir": "./src",
"outDir": "./dist", "outDir": "./dist",
"tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo" "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo"

View File

@@ -37,7 +37,7 @@
"fake-indexeddb": "^6.0.0", "fake-indexeddb": "^6.0.0",
"idb": "^8.0.0", "idb": "^8.0.0",
"socket.io-client": "^4.8.3", "socket.io-client": "^4.8.3",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"peerDependencies": { "peerDependencies": {
"@affine/error": "workspace:*", "@affine/error": "workspace:*",

View File

@@ -2,6 +2,7 @@
"extends": "../../../tsconfig.web.json", "extends": "../../../tsconfig.web.json",
"include": ["./src"], "include": ["./src"],
"compilerOptions": { "compilerOptions": {
"types": ["build-config", "affine__env", "node"],
"rootDir": "./src", "rootDir": "./src",
"outDir": "./dist", "outDir": "./dist",
"tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo" "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo"

View File

@@ -19,7 +19,7 @@
}, },
"devDependencies": { "devDependencies": {
"@blocksuite/affine": "workspace:*", "@blocksuite/affine": "workspace:*",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"peerDependencies": { "peerDependencies": {
"@blocksuite/affine": "workspace:*" "@blocksuite/affine": "workspace:*"

View File

@@ -12,7 +12,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/aws4": "^1.11.6", "@types/aws4": "^1.11.6",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"version": "0.26.3" "version": "0.26.3"
} }

View File

@@ -69,7 +69,7 @@
"tailwind-merge": "^3.4.0", "tailwind-merge": "^3.4.0",
"tailwindcss": "^4.1.17", "tailwindcss": "^4.1.17",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"scripts": { "scripts": {
"build": "affine bundle", "build": "affine bundle",

View File

@@ -2,6 +2,7 @@
"extends": "../../../tsconfig.web.json", "extends": "../../../tsconfig.web.json",
"include": ["./src", "./src/config.json"], "include": ["./src", "./src/config.json"],
"compilerOptions": { "compilerOptions": {
"types": ["build-config", "affine__env", "node"],
"resolveJsonModule": true, "resolveJsonModule": true,
"rootDir": "./src", "rootDir": "./src",
"outDir": "./dist", "outDir": "./dist",

View File

@@ -73,7 +73,7 @@
"tree-kill": "^1.2.2", "tree-kill": "^1.2.2",
"typescript": "^5.9.3", "typescript": "^5.9.3",
"uuid": "^13.0.0", "uuid": "^13.0.0",
"vitest": "^3.2.4", "vitest": "^4.0.18",
"zod": "^3.25.76" "zod": "^3.25.76"
}, },
"dependencies": { "dependencies": {

View File

@@ -24,13 +24,10 @@ export default defineConfig({
setupFiles: [resolve(rootDir, './scripts/setup/global.ts')], setupFiles: [resolve(rootDir, './scripts/setup/global.ts')],
include: ['./test/**/*.spec.ts'], include: ['./test/**/*.spec.ts'],
testTimeout: 5000, testTimeout: 5000,
poolOptions: { pool: 'forks',
forks: { maxWorkers: 1,
singleFork: true,
},
},
coverage: { coverage: {
provider: 'istanbul', // or 'c8' provider: 'istanbul', // or 'istanbul'
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: resolve(rootDir, '.coverage/electron'), reportsDirectory: resolve(rootDir, '.coverage/electron'),
}, },

View File

@@ -14,6 +14,6 @@
}, },
"devDependencies": { "devDependencies": {
"typescript": "^5.9.3", "typescript": "^5.9.3",
"vitest": "^3.2.4" "vitest": "^4.0.18"
} }
} }

View File

@@ -73,19 +73,19 @@
"devDependencies": { "devDependencies": {
"@affine-tools/utils": "workspace:*", "@affine-tools/utils": "workspace:*",
"@blocksuite/affine": "workspace:*", "@blocksuite/affine": "workspace:*",
"@storybook/react": "^10.2.13", "@storybook/react": "^10.2.14",
"@storybook/react-vite": "^10.2.13", "@storybook/react-vite": "^10.2.14",
"@testing-library/dom": "^10.4.0", "@testing-library/dom": "^10.4.0",
"@testing-library/react": "^16.1.0", "@testing-library/react": "^16.1.0",
"@types/bytes": "^3.1.5", "@types/bytes": "^3.1.5",
"@types/react": "^19.0.1", "@types/react": "^19.0.1",
"@types/react-dom": "^19.0.2", "@types/react-dom": "^19.0.2",
"@vanilla-extract/css": "^1.17.0", "@vanilla-extract/css": "^1.17.0",
"storybook": "^10.2.13", "storybook": "^10.2.14",
"typescript": "^5.9.3", "typescript": "^5.9.3",
"unplugin-swc": "^1.5.9", "unplugin-swc": "^1.5.9",
"vite": "^7.2.7", "vite": "^7.2.7",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"version": "0.26.3" "version": "0.26.3"
} }

View File

@@ -112,6 +112,6 @@
"fake-indexeddb": "^6.0.0", "fake-indexeddb": "^6.0.0",
"happy-dom": "^20.3.0", "happy-dom": "^20.3.0",
"lodash-es": "^4.17.23", "lodash-es": "^4.17.23",
"vitest": "^3.2.4" "vitest": "^4.0.18"
} }
} }

View File

@@ -1,9 +1,7 @@
/** /**
* @vitest-environment happy-dom * @vitest-environment happy-dom
*/ */
import { afterEach } from 'node:test'; import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
import { beforeEach, describe, expect, test, vi } from 'vitest';
import { resolveLinkToDoc, toURLSearchParams } from '../utils'; import { resolveLinkToDoc, toURLSearchParams } from '../utils';

View File

@@ -29,6 +29,6 @@
"@affine-tools/cli": "workspace:*", "@affine-tools/cli": "workspace:*",
"@affine-tools/utils": "workspace:*", "@affine-tools/utils": "workspace:*",
"glob": "^11.0.0", "glob": "^11.0.0",
"vitest": "^3.2.4" "vitest": "^4.0.18"
} }
} }

View File

@@ -14,7 +14,7 @@
"@affine-tools/utils": "workspace:*", "@affine-tools/utils": "workspace:*",
"path-to-regexp": "^8.3.0", "path-to-regexp": "^8.3.0",
"query-string": "^9.1.1", "query-string": "^9.1.1",
"vitest": "^3.2.4" "vitest": "^4.0.18"
}, },
"peerDependencies": { "peerDependencies": {
"react": "^19.2.1", "react": "^19.2.1",

View File

@@ -14,6 +14,6 @@
}, },
"devDependencies": { "devDependencies": {
"@types/react": "^19.0.1", "@types/react": "^19.0.1",
"vitest": "^3.2.4" "vitest": "^4.0.18"
} }
} }

View File

@@ -46,6 +46,11 @@ export default defineConfig({
}, },
}, },
test: { test: {
projects: [
'.',
'./packages/frontend/apps/electron',
'./blocksuite/**/*/vitest.config.ts',
],
setupFiles: [ setupFiles: [
resolve(rootDir, './scripts/setup/polyfill.ts'), resolve(rootDir, './scripts/setup/polyfill.ts'),
resolve(rootDir, './scripts/setup/lit.ts'), resolve(rootDir, './scripts/setup/lit.ts'),
@@ -66,8 +71,7 @@ export default defineConfig({
], ],
testTimeout: 5000, testTimeout: 5000,
coverage: { coverage: {
all: false, provider: 'istanbul', // or 'istanbul'
provider: 'istanbul', // or 'c8'
reporter: ['lcov'], reporter: ['lcov'],
reportsDirectory: resolve(rootDir, '.coverage/store'), reportsDirectory: resolve(rootDir, '.coverage/store'),
}, },

View File

@@ -1,7 +0,0 @@
import { defineWorkspace } from 'vitest/config';
export default defineWorkspace([
'.',
'./packages/frontend/apps/electron',
'./blocksuite/**/*/vitest.config.ts',
]);

512
yarn.lock

File diff suppressed because it is too large Load Diff