Browse Source
chore: Move from Jest to vitest
chore: Move from Jest to vitest
There are some benefits, like faster tests and thus saving CI time, but the main reason for me is: Jest still does not properly support ESM packages, this casues a lot of breaking stuff. Sometimes you need to adjust imports for mocking, and somethimes other random stuff break. Instead of wasting valuable developer lifetime we can use vitest which works perfectly with ESM. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>pull/47466/head
No known key found for this signature in database
GPG Key ID: 45FAE7268762B400
9 changed files with 9236 additions and 12584 deletions
-
12__tests__/jest-setup.ts
-
5__tests__/mock-window.js
-
5__tests__/setup-testing-library.js
-
6__tests__/tsconfig.json
-
81jest.config.ts
-
21661package-lock.json
-
20package.json
-
4tsconfig.json
-
26vitest.config.ts
@ -1,12 +0,0 @@ |
|||
/** |
|||
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors |
|||
* SPDX-License-Identifier: AGPL-3.0-or-later |
|||
*/ |
|||
|
|||
import '@testing-library/jest-dom' |
|||
|
|||
// Mock `window.location` with Jest spies and extend expect
|
|||
import 'jest-location-mock' |
|||
|
|||
// Mock `window.fetch` with Jest
|
|||
import 'jest-fetch-mock' |
@ -0,0 +1,5 @@ |
|||
/** |
|||
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors |
|||
* SPDX-License-Identifier: CC0-1.0 |
|||
*/ |
|||
import '@testing-library/jest-dom/vitest' |
@ -1,6 +0,0 @@ |
|||
{ |
|||
"extends": "../tsconfig.json", |
|||
"compilerOptions": { |
|||
"verbatimModuleSyntax": false |
|||
} |
|||
} |
@ -1,81 +0,0 @@ |
|||
/** |
|||
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors |
|||
* SPDX-License-Identifier: AGPL-3.0-or-later |
|||
*/ |
|||
import type { Config } from 'jest' |
|||
|
|||
// TODO: find a way to consolidate this in one place, with webpack.common.js
|
|||
const ignorePatterns = [ |
|||
'@buttercup/fetch', |
|||
'@juliushaertl', |
|||
'@mdi/svg', |
|||
'@nextcloud/files', |
|||
'@nextcloud/upload', |
|||
'@nextcloud/vue', |
|||
'ansi-regex', |
|||
'camelcase', |
|||
'char-regex', |
|||
'hot-patcher', |
|||
'is-svg', |
|||
'layerr', |
|||
'mime', |
|||
'p-cancelable', |
|||
'p-limit', |
|||
'p-queue', |
|||
'p-timeout', |
|||
'splitpanes', |
|||
'string-length', |
|||
'strip-ansi', |
|||
'tributejs', |
|||
'unist-.+', |
|||
'url-join', |
|||
'vue-material-design-icons', |
|||
'webdav', |
|||
'yocto-queue', |
|||
] |
|||
|
|||
const config: Config = { |
|||
testMatch: ['<rootDir>/**/*.(spec|test).(ts|js)'], |
|||
|
|||
clearMocks: true, |
|||
setupFilesAfterEnv: [ |
|||
'<rootDir>/__tests__/jest-setup.ts', |
|||
'<rootDir>/__tests__/mock-window.js', |
|||
], |
|||
|
|||
testEnvironment: 'jest-environment-jsdom', |
|||
preset: 'ts-jest/presets/js-with-ts', |
|||
|
|||
roots: [ |
|||
'<rootDir>/__mocks__', |
|||
'<rootDir>/__tests__', |
|||
'<rootDir>/apps', |
|||
'<rootDir>/core', |
|||
], |
|||
|
|||
transform: { |
|||
// process `*.js` files with `babel-jest`
|
|||
'^.+\\.c?js$': 'babel-jest', |
|||
'^.+\\.vue$': '@vue/vue2-jest', |
|||
'^.+\\.ts$': ['ts-jest', { |
|||
// @see https://github.com/kulshekhar/ts-jest/issues/4081
|
|||
tsconfig: './__tests__/tsconfig.json', |
|||
}], |
|||
}, |
|||
transformIgnorePatterns: [ |
|||
'node_modules/(?!(' + ignorePatterns.join('|') + ')/)', |
|||
], |
|||
|
|||
// Allow mocking svg files
|
|||
moduleNameMapper: { |
|||
'^.+\\.svg(\\?raw)?$': '<rootDir>/__mocks__/svg.js', |
|||
'\\.s?css$': '<rootDir>/__mocks__/css.js', |
|||
}, |
|||
|
|||
modulePathIgnorePatterns: [ |
|||
'<rootDir>/apps2/', |
|||
'<rootDir>/apps-extra/', |
|||
], |
|||
} |
|||
|
|||
export default config |
21661
package-lock.json
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,26 @@ |
|||
/** |
|||
* SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors |
|||
* SPDX-License-Identifier: CC0-1.0 |
|||
*/ |
|||
import { defineConfig } from 'vitest/config' |
|||
import vue from '@vitejs/plugin-vue2' |
|||
|
|||
export default defineConfig({ |
|||
plugins: [vue()], |
|||
test: { |
|||
include: ['{apps,core}/**/*.{test,spec}.?(c|m)[jt]s?(x)'], |
|||
environment: 'jsdom', |
|||
coverage: { |
|||
include: ['apps/*/src/**', 'core/src/**'], |
|||
exclude: ['**.spec.*', '**.test.*', '**.cy.*', 'core/src/tests/**'], |
|||
provider: 'v8', |
|||
reporter: ['lcov', 'text'], |
|||
}, |
|||
setupFiles: ['__tests__/mock-window.js', '__tests__/setup-testing-library.js'], |
|||
server: { |
|||
deps: { |
|||
inline: [/@nextcloud\//], |
|||
}, |
|||
}, |
|||
}, |
|||
}) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue