refactor: front-end testing with vitest (#1900)
* refactor: front-end testing with vitest * fix: fix build failed
This commit is contained in:
parent
c603108542
commit
49117afb72
6
.github/workflows/nocobase-test-full.yml
vendored
6
.github/workflows/nocobase-test-full.yml
vendored
@ -53,7 +53,7 @@ jobs:
|
|||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
- run: yarn install
|
- run: yarn install
|
||||||
- name: Test with Sqlite
|
- name: Test with Sqlite
|
||||||
run: yarn nocobase install -f && yarn test
|
run: yarn nocobase install -f && yarn test && yarn test:client
|
||||||
env:
|
env:
|
||||||
DB_DIALECT: sqlite
|
DB_DIALECT: sqlite
|
||||||
DB_STORAGE: /tmp/db.sqlite
|
DB_STORAGE: /tmp/db.sqlite
|
||||||
@ -94,7 +94,7 @@ jobs:
|
|||||||
- run: yarn install
|
- run: yarn install
|
||||||
# - run: yarn build
|
# - run: yarn build
|
||||||
- name: Test with postgres
|
- name: Test with postgres
|
||||||
run: yarn nocobase install -f && yarn test
|
run: yarn nocobase install -f && yarn test && yarn test:client
|
||||||
env:
|
env:
|
||||||
DB_DIALECT: postgres
|
DB_DIALECT: postgres
|
||||||
DB_HOST: postgres
|
DB_HOST: postgres
|
||||||
@ -131,7 +131,7 @@ jobs:
|
|||||||
- run: yarn install
|
- run: yarn install
|
||||||
# - run: yarn build
|
# - run: yarn build
|
||||||
- name: Test with MySQL
|
- name: Test with MySQL
|
||||||
run: yarn nocobase install -f && yarn test
|
run: yarn nocobase install -f && yarn test && yarn test:client
|
||||||
env:
|
env:
|
||||||
DB_DIALECT: mysql
|
DB_DIALECT: mysql
|
||||||
DB_HOST: mysql
|
DB_HOST: mysql
|
||||||
|
2
.github/workflows/nocobase-test-lite.yml
vendored
2
.github/workflows/nocobase-test-lite.yml
vendored
@ -69,7 +69,7 @@ jobs:
|
|||||||
cache: 'yarn'
|
cache: 'yarn'
|
||||||
- run: yarn install
|
- run: yarn install
|
||||||
- name: Test with postgres
|
- name: Test with postgres
|
||||||
run: yarn nocobase install -f && yarn test
|
run: yarn nocobase install -f && yarn test && yarn test:client
|
||||||
env:
|
env:
|
||||||
DB_DIALECT: postgres
|
DB_DIALECT: postgres
|
||||||
DB_HOST: postgres
|
DB_HOST: postgres
|
||||||
|
@ -8,7 +8,7 @@ module.exports = {
|
|||||||
verbose: true,
|
verbose: true,
|
||||||
testEnvironment: 'jsdom',
|
testEnvironment: 'jsdom',
|
||||||
preset: 'ts-jest',
|
preset: 'ts-jest',
|
||||||
testMatch: ['**/__tests__/**/*.test.[jt]s?(x)'],
|
testMatch: ['**/__tests__/**/*.test.[jt]s'],
|
||||||
setupFiles: ['./jest.setup.ts'],
|
setupFiles: ['./jest.setup.ts'],
|
||||||
setupFilesAfterEnv: [require.resolve('jest-dom/extend-expect'), './jest.setupAfterEnv.ts'],
|
setupFilesAfterEnv: [require.resolve('jest-dom/extend-expect'), './jest.setupAfterEnv.ts'],
|
||||||
moduleNameMapper: {
|
moduleNameMapper: {
|
||||||
@ -24,7 +24,7 @@ module.exports = {
|
|||||||
diagnostics: false,
|
diagnostics: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
modulePathIgnorePatterns: ['/esm/', '/es/', '/dist/', '/lib/'],
|
modulePathIgnorePatterns: ['/esm/', '/es/', '/dist/', '/lib/', '/client/', '/sdk/', '\\.test\\.tsx$'],
|
||||||
// add .mjs .cjs for formula.js
|
// add .mjs .cjs for formula.js
|
||||||
moduleFileExtensions: [...defaults.moduleFileExtensions, 'mjs', 'cjs'],
|
moduleFileExtensions: [...defaults.moduleFileExtensions, 'mjs', 'cjs'],
|
||||||
coveragePathIgnorePatterns: [
|
coveragePathIgnorePatterns: [
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
"start": "nocobase start",
|
"start": "nocobase start",
|
||||||
"build": "nocobase build",
|
"build": "nocobase build",
|
||||||
"test": "nocobase test",
|
"test": "nocobase test",
|
||||||
|
"test:client": "vitest",
|
||||||
"doc": "nocobase doc",
|
"doc": "nocobase doc",
|
||||||
"postinstall": "nocobase postinstall",
|
"postinstall": "nocobase postinstall",
|
||||||
"lint": "eslint .",
|
"lint": "eslint .",
|
||||||
@ -44,11 +45,16 @@
|
|||||||
"@commitlint/cli": "^16.1.0",
|
"@commitlint/cli": "^16.1.0",
|
||||||
"@commitlint/config-conventional": "^16.0.0",
|
"@commitlint/config-conventional": "^16.0.0",
|
||||||
"@commitlint/prompt-cli": "^16.1.0",
|
"@commitlint/prompt-cli": "^16.1.0",
|
||||||
|
"@testing-library/jest-dom": "^5.16.5",
|
||||||
|
"@testing-library/react": "^14.0.0",
|
||||||
|
"@vitejs/plugin-react": "^4.0.0",
|
||||||
"auto-changelog": "^2.4.0",
|
"auto-changelog": "^2.4.0",
|
||||||
"ghooks": "^2.0.4",
|
"ghooks": "^2.0.4",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.2.1",
|
||||||
"pretty-format": "^24.0.0",
|
"pretty-format": "^24.0.0",
|
||||||
"pretty-quick": "^3.1.0"
|
"pretty-quick": "^3.1.0",
|
||||||
|
"vite": "^4.3.8",
|
||||||
|
"vitest": "^0.31.1"
|
||||||
},
|
},
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "18.14.2",
|
"node": "18.14.2",
|
||||||
|
@ -1,4 +1,80 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
|
exports[`compose > case 1 1`] = `
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
A
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`compose > case 2 1`] = `
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
A
|
||||||
|
</h1>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
B
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`compose > case 3 1`] = `
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
A
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`compose > case 4 1`] = `
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
A
|
||||||
|
</h1>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
B
|
||||||
|
</h1>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
C
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`compose > case 5 1`] = `
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
A
|
||||||
|
</h1>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
B
|
||||||
|
1
|
||||||
|
</h1>
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
C
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`compose case 1 1`] = `
|
exports[`compose case 1 1`] = `
|
||||||
<div>
|
<div>
|
||||||
|
@ -1,4 +1,12 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
|
exports[`route-switch > case 1 1`] = `
|
||||||
|
<div>
|
||||||
|
<h1>
|
||||||
|
Home
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`route-switch case 1 1`] = `
|
exports[`route-switch case 1 1`] = `
|
||||||
<div>
|
<div>
|
||||||
|
@ -48,7 +48,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
showTime: true,
|
showTime: true,
|
||||||
gmt: true,
|
gmt: true,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
result.onChange(moment.utc('2022-02-22 22:22:22'));
|
result.onChange(moment.utc('2022-02-22 22:22:22'));
|
||||||
@ -59,7 +59,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
showTime: true,
|
showTime: true,
|
||||||
gmt: false,
|
gmt: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
const m = moment('2022-02-22 22:22:22');
|
const m = moment('2022-02-22 22:22:22');
|
||||||
@ -71,7 +71,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
showTime: false,
|
showTime: false,
|
||||||
gmt: true,
|
gmt: true,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
result.onChange(moment.utc('2022-02-22'));
|
result.onChange(moment.utc('2022-02-22'));
|
||||||
@ -82,7 +82,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
showTime: false,
|
showTime: false,
|
||||||
gmt: false,
|
gmt: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
const m = moment('2022-02-22');
|
const m = moment('2022-02-22');
|
||||||
@ -94,7 +94,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
picker: 'year',
|
picker: 'year',
|
||||||
gmt: true,
|
gmt: true,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
result.onChange(moment.utc('2022-01-01T00:00:00.000Z'));
|
result.onChange(moment.utc('2022-01-01T00:00:00.000Z'));
|
||||||
@ -105,7 +105,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
picker: 'year',
|
picker: 'year',
|
||||||
gmt: false,
|
gmt: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
const m = moment('2022-02-01 00:00:00');
|
const m = moment('2022-02-01 00:00:00');
|
||||||
@ -117,7 +117,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
picker: 'month',
|
picker: 'month',
|
||||||
gmt: true,
|
gmt: true,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
result.onChange(moment.utc('2022-02-22T00:00:00.000Z'));
|
result.onChange(moment.utc('2022-02-22T00:00:00.000Z'));
|
||||||
@ -128,7 +128,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
picker: 'month',
|
picker: 'month',
|
||||||
gmt: false,
|
gmt: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
const m = moment('2022-02-01 00:00:00');
|
const m = moment('2022-02-01 00:00:00');
|
||||||
@ -140,7 +140,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
picker: 'quarter',
|
picker: 'quarter',
|
||||||
gmt: true,
|
gmt: true,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
result.onChange(moment.utc('2022-02-22T00:00:00.000Z'));
|
result.onChange(moment.utc('2022-02-22T00:00:00.000Z'));
|
||||||
@ -151,7 +151,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
picker: 'quarter',
|
picker: 'quarter',
|
||||||
gmt: false,
|
gmt: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
const m = moment('2022-02-01 00:00:00');
|
const m = moment('2022-02-01 00:00:00');
|
||||||
@ -163,7 +163,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
picker: 'week',
|
picker: 'week',
|
||||||
gmt: true,
|
gmt: true,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
const m = moment.utc('2022-02-21T00:00:00.000Z');
|
const m = moment.utc('2022-02-21T00:00:00.000Z');
|
||||||
@ -175,7 +175,7 @@ describe('mapDatePicker', () => {
|
|||||||
const props = {
|
const props = {
|
||||||
picker: 'week',
|
picker: 'week',
|
||||||
gmt: false,
|
gmt: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
const m = moment('2022-02-21 00:00:00');
|
const m = moment('2022-02-21 00:00:00');
|
||||||
@ -188,7 +188,7 @@ describe('mapDatePicker', () => {
|
|||||||
showTime: true,
|
showTime: true,
|
||||||
gmt: true,
|
gmt: true,
|
||||||
utc: false,
|
utc: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
result.onChange(moment('2022-02-22 22:22:22'));
|
result.onChange(moment('2022-02-22 22:22:22'));
|
||||||
@ -200,7 +200,7 @@ describe('mapDatePicker', () => {
|
|||||||
showTime: false,
|
showTime: false,
|
||||||
gmt: true,
|
gmt: true,
|
||||||
utc: false,
|
utc: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const result = mapDatePicker()(props);
|
const result = mapDatePicker()(props);
|
||||||
result.onChange(moment('2022-01-01 23:00:00'));
|
result.onChange(moment('2022-01-01 23:00:00'));
|
||||||
|
@ -7,7 +7,7 @@ describe('mapRangePicker', () => {
|
|||||||
showTime: false,
|
showTime: false,
|
||||||
gmt: true,
|
gmt: true,
|
||||||
utc: true,
|
utc: true,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const { onChange } = mapRangePicker()(props);
|
const { onChange } = mapRangePicker()(props);
|
||||||
const value = [moment.utc('2023-01-01T00:00:00.000Z'), moment.utc('2023-01-02T00:00:00.000Z')];
|
const value = [moment.utc('2023-01-01T00:00:00.000Z'), moment.utc('2023-01-02T00:00:00.000Z')];
|
||||||
@ -20,7 +20,7 @@ describe('mapRangePicker', () => {
|
|||||||
showTime: true,
|
showTime: true,
|
||||||
gmt: true,
|
gmt: true,
|
||||||
utc: true,
|
utc: true,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const { onChange } = mapRangePicker()(props);
|
const { onChange } = mapRangePicker()(props);
|
||||||
const value = [moment.utc('2023-01-01T00:00:00.000Z'), moment.utc('2023-01-02T00:00:00.000Z')];
|
const value = [moment.utc('2023-01-01T00:00:00.000Z'), moment.utc('2023-01-02T00:00:00.000Z')];
|
||||||
@ -33,7 +33,7 @@ describe('mapRangePicker', () => {
|
|||||||
showTime: false,
|
showTime: false,
|
||||||
gmt: true,
|
gmt: true,
|
||||||
utc: false,
|
utc: false,
|
||||||
onChange: jest.fn(),
|
onChange: vi.fn(),
|
||||||
};
|
};
|
||||||
const { onChange } = mapRangePicker()(props);
|
const { onChange } = mapRangePicker()(props);
|
||||||
const value = [moment.utc('2023-01-01T00:00:00.000Z'), moment.utc('2023-01-02T00:00:00.000Z')];
|
const value = [moment.utc('2023-01-01T00:00:00.000Z'), moment.utc('2023-01-02T00:00:00.000Z')];
|
||||||
|
@ -482,7 +482,7 @@ describe('parentsIn', () => {
|
|||||||
const dn = createDesignable({
|
const dn = createDesignable({
|
||||||
current: schema.properties.menu.properties.item1,
|
current: schema.properties.menu.properties.item1,
|
||||||
});
|
});
|
||||||
const callback = jest.fn();
|
const callback = vi.fn();
|
||||||
dn.on('error', callback);
|
dn.on('error', callback);
|
||||||
dn.insertAfterBegin(schema.properties.menu);
|
dn.insertAfterBegin(schema.properties.menu);
|
||||||
expect(schema.properties.menu).toBeDefined();
|
expect(schema.properties.menu).toBeDefined();
|
||||||
|
8
packages/core/client/tsconfig.json
Normal file
8
packages/core/client/tsconfig.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../../tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"types": [
|
||||||
|
"vitest/globals"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
}
|
@ -17,11 +17,6 @@
|
|||||||
"rc-tabs": "^11.7.1",
|
"rc-tabs": "^11.7.1",
|
||||||
"rc-tree": "^5.2.0"
|
"rc-tree": "^5.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
|
||||||
"@testing-library/jest-dom": "^5.11.3",
|
|
||||||
"@testing-library/react": "^10.4.8",
|
|
||||||
"react-test-renderer": "^16.13.1"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@umijs/preset-dumi": "1.x",
|
"@umijs/preset-dumi": "1.x",
|
||||||
"react": "^16.13.1 || ^17.0.0"
|
"react": "^16.13.1 || ^17.0.0"
|
||||||
|
8
packages/core/sdk/tsconfig.json
Normal file
8
packages/core/sdk/tsconfig.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../../tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"types": [
|
||||||
|
"vitest/globals"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
}
|
24
scripts/setupVitest.ts
Normal file
24
scripts/setupVitest.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import '@testing-library/jest-dom';
|
||||||
|
import { vi } from 'vitest';
|
||||||
|
import '../packages/core/client/src/i18n';
|
||||||
|
|
||||||
|
// 解决 ypeError: window.matchMedia is not a function
|
||||||
|
// 参见: https://github.com/vitest-dev/vitest/issues/821#issuecomment-1046954558
|
||||||
|
Object.defineProperty(window, 'matchMedia', {
|
||||||
|
writable: true,
|
||||||
|
value: vi.fn().mockImplementation((query) => ({
|
||||||
|
matches: false,
|
||||||
|
media: query,
|
||||||
|
onchange: null,
|
||||||
|
addListener: vi.fn(), // deprecated
|
||||||
|
removeListener: vi.fn(), // deprecated
|
||||||
|
addEventListener: vi.fn(),
|
||||||
|
removeEventListener: vi.fn(),
|
||||||
|
dispatchEvent: vi.fn(),
|
||||||
|
})),
|
||||||
|
});
|
||||||
|
|
||||||
|
// 解决 Error: Not implemented: window.computedStyle(elt, pseudoElt)
|
||||||
|
// 参见:https://github.com/nickcolley/jest-axe/issues/147#issuecomment-758804533
|
||||||
|
const { getComputedStyle } = window;
|
||||||
|
window.getComputedStyle = (elt) => getComputedStyle(elt);
|
7
testUtils.ts
Normal file
7
testUtils.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
const globalTimeout = global.setTimeout;
|
||||||
|
|
||||||
|
export const sleep = async (timeout = 0) => {
|
||||||
|
await new Promise((resolve) => {
|
||||||
|
globalTimeout(resolve, timeout);
|
||||||
|
});
|
||||||
|
};
|
@ -49,7 +49,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"packages/**/*"
|
"packages/**/*",
|
||||||
|
"scripts/setupVitest.ts"
|
||||||
],
|
],
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"packages/**/node_modules",
|
"packages/**/node_modules",
|
||||||
|
27
vitest.config.ts
Normal file
27
vitest.config.ts
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import react from '@vitejs/plugin-react';
|
||||||
|
import { defineConfig } from 'vitest/config';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [react()],
|
||||||
|
test: {
|
||||||
|
globals: true,
|
||||||
|
setupFiles: 'scripts/setupVitest.ts',
|
||||||
|
environment: 'jsdom',
|
||||||
|
css: true,
|
||||||
|
threads: true,
|
||||||
|
alias: [
|
||||||
|
{ find: '@nocobase/evaluators/client', replacement: 'packages/core/evaluators/src/client' },
|
||||||
|
{ find: '@nocobase/utils/client', replacement: 'packages/core/utils/src/client' },
|
||||||
|
{ find: /^@nocobase\/app-(.*)/, replacement: 'packages/$1/src' },
|
||||||
|
{ find: /^@nocobase\/plugin-sample-(.*)/, replacement: 'packages/samples/$1/src' },
|
||||||
|
{ find: /^@nocobase\/plugin-pro-(.*)/, replacement: 'packages/pro-plugins/$1/src' },
|
||||||
|
{ find: /^@nocobase\/plugin-(.*)/, replacement: 'packages/plugins/$1/src' },
|
||||||
|
{ find: /^@nocobase\/preset-(.*)/, replacement: 'packages/presets/$1/src' },
|
||||||
|
{ find: /^@nocobase\/(.*)/, replacement: 'packages/core/$1/src' },
|
||||||
|
],
|
||||||
|
include: ['packages/**/{dumi-theme-nocobase,sdk,client}/**/__tests__/**/*.{test,spec}.{ts,tsx}'],
|
||||||
|
exclude: ['**/node_modules/**', '**/dist/**', '**/lib/**', '**/es/**', '**/{vitest,commitlint}.config.*'],
|
||||||
|
testTimeout: 300000,
|
||||||
|
bail: 1,
|
||||||
|
},
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user