From 4a5f6fbbf68f407f695b716ba472eb1e9f8834f9 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Sun, 19 Apr 2026 20:01:13 +0200 Subject: [PATCH] test: try to fix unit tests with new vite version Signed-off-by: Ferdinand Thiessen --- .gitignore | 2 + apps/files/src/services/Search.spec.ts | 2 +- build/frontend-legacy/vitest.config.mts | 1 - build/frontend/vitest.config.ts | 7 +- package-lock.json | 88 +++++++++++++++++++------ package.json | 2 +- vitest.config.ts | 6 ++ 7 files changed, 85 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 06cb1ac1ecc..d2958f124e0 100644 --- a/.gitignore +++ b/.gitignore @@ -161,6 +161,8 @@ Vagrantfile /config/autoconfig.php clover.xml /coverage +.vitest*/ +__screenshots__/ # Tests - dependencies tests/acceptance/vendor/ diff --git a/apps/files/src/services/Search.spec.ts b/apps/files/src/services/Search.spec.ts index 2f8b23751ba..bf726c12136 100644 --- a/apps/files/src/services/Search.spec.ts +++ b/apps/files/src/services/Search.spec.ts @@ -35,7 +35,7 @@ describe('Search service', () => { searchNodes.mockImplementationOnce(() => { throw new Error('expected error') }) - expect(() => getContents('', { signal: new AbortController().signal })).rejects.toThrow('expected error') + await expect(() => getContents('', { signal: new AbortController().signal })).rejects.toThrow('expected error') }) it('returns the search results and a fake root', async () => { diff --git a/build/frontend-legacy/vitest.config.mts b/build/frontend-legacy/vitest.config.mts index 066a5594c74..3189ba12a44 100644 --- a/build/frontend-legacy/vitest.config.mts +++ b/build/frontend-legacy/vitest.config.mts @@ -57,7 +57,6 @@ export default defineConfig({ coverage: { include: ['./apps/*/src/**', 'core/src/**'], exclude: ['**.spec.*', '**.test.*', '**.cy.*', 'core/src/tests/**'], - provider: 'istanbul', reporter: ['lcov', 'text'], reportsDirectory: resolve(import.meta.dirname, '../../coverage/legacy'), }, diff --git a/build/frontend/vitest.config.ts b/build/frontend/vitest.config.ts index a7078a2356f..1b942aa56dc 100644 --- a/build/frontend/vitest.config.ts +++ b/build/frontend/vitest.config.ts @@ -54,7 +54,6 @@ export default defineConfig({ /* 'core/src/**', */ ], exclude: ['**.spec.*', '**.test.*', '**.cy.*', 'core/src/tests/**'], - provider: 'istanbul', reporter: ['lcov', 'text'], reportsDirectory: resolve(import.meta.dirname, '../../coverage'), }, @@ -72,5 +71,11 @@ export default defineConfig({ inline: [/@nextcloud\//], }, }, + onUnhandledError(error) { + // TODO: remove when this is fixed: https://github.com/nextcloud-libraries/nextcloud-vue/issues/8090 + if (error.message.includes('`fallbackFocus` was specified but was not a node, or did not return a node')) { + return false + } + }, }, }) diff --git a/package-lock.json b/package-lock.json index e0517e5ac8b..b41dbc16c88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,7 @@ "@testing-library/jest-dom": "^6.9.1", "@testing-library/vue": "^8.1.0", "@types/dockerode": "^4.0.1", - "@vitest/coverage-istanbul": "^4.1.4", + "@vitest/coverage-v8": "^4.1.4", "@vue/test-utils": "^2.4.6", "@vue/tsconfig": "^0.9.0", "@zip.js/zip.js": "^2.8.26", @@ -217,6 +217,7 @@ "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.9.0" } @@ -227,6 +228,7 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -258,6 +260,7 @@ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -284,6 +287,7 @@ "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", @@ -301,6 +305,7 @@ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" } @@ -311,6 +316,7 @@ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.9.0" } @@ -321,6 +327,7 @@ "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" @@ -335,6 +342,7 @@ "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", @@ -380,6 +388,7 @@ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.9.0" } @@ -390,6 +399,7 @@ "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" @@ -444,6 +454,7 @@ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", @@ -459,6 +470,7 @@ "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -492,6 +504,16 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@bramus/specificity": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", @@ -1920,16 +1942,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -4486,29 +4498,35 @@ "vue": "^3.2.25" } }, - "node_modules/@vitest/coverage-istanbul": { + "node_modules/@vitest/coverage-v8": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-4.1.4.tgz", - "integrity": "sha512-Pyi4F8RnqU6hBGiIDhS/e8gVD4FRcUvZJ2AbFiIlmIxHlEIsKyCxGOqufCECobty/dXELcN8oIH4Gms3hVOCYA==", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.4.tgz", + "integrity": "sha512-x7FptB5oDruxNPDNY2+S8tCh0pcq7ymCe1gTHcsp733jYjrJl8V1gMUlVysuCD9Kz46Xz9t1akkv08dPcYDs1w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.29.0", - "@istanbuljs/schema": "^0.1.3", - "@jridgewell/gen-mapping": "^0.3.13", - "@jridgewell/trace-mapping": "0.3.31", + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.1.4", + "ast-v8-to-istanbul": "^1.0.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", "magicast": "^0.5.2", "obug": "^2.1.1", + "std-env": "^4.0.0-rc.1", "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { + "@vitest/browser": "4.1.4", "vitest": "4.1.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, "node_modules/@vitest/expect": { @@ -5511,6 +5529,35 @@ "node": ">=18" } }, + "node_modules/ast-v8-to-istanbul": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.0.tgz", + "integrity": "sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, "node_modules/ast-walker-scope": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.8.3.tgz", @@ -9206,6 +9253,7 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.9.0" } @@ -11365,6 +11413,7 @@ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "yallist": "^3.0.2" } @@ -18227,7 +18276,8 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/yaml": { "version": "2.8.3", diff --git a/package.json b/package.json index 290aa7380a0..eabdfaab9e8 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "@testing-library/jest-dom": "^6.9.1", "@testing-library/vue": "^8.1.0", "@types/dockerode": "^4.0.1", - "@vitest/coverage-istanbul": "^4.1.4", + "@vitest/coverage-v8": "^4.1.4", "@vue/test-utils": "^2.4.6", "@vue/tsconfig": "^0.9.0", "@zip.js/zip.js": "^2.8.26", diff --git a/vitest.config.ts b/vitest.config.ts index 499fd4e0f62..84ab5fd1b26 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -10,6 +10,12 @@ export default defineConfig({ projects: [ 'build/frontend*', ], + onUnhandledError(error) { + // TODO: remove when this is fixed: https://github.com/nextcloud-libraries/nextcloud-vue/issues/8090 + if (error.message.includes('`fallbackFocus` was specified but was not a node, or did not return a node')) { + return false + } + }, }, server: { watch: {