Skip to content

chore(backend) Migrate from Jest to Vitest#2876

Merged
gardener-prow[bot] merged 14 commits into
masterfrom
enh/vitest
Apr 16, 2026
Merged

chore(backend) Migrate from Jest to Vitest#2876
gardener-prow[bot] merged 14 commits into
masterfrom
enh/vitest

Conversation

@grolu
Copy link
Copy Markdown
Member

@grolu grolu commented Apr 13, 2026

What this PR does / why we need it:

Which issue(s) this PR fixes:
Fixes #

Special notes for your reviewer:

Release note:

Replaced Jest with Vitest across backend and all packages (kube-client, kube-config, request, logger, monitor, polling-watcher). Removed CommonJS transpilation (rollup) and legacy Jest fixtures/mocks
The firsttris.vscode-jest-runner extension has been replaced by the official Vitest extension (vitest.explorer) for running and debugging tests in VS Code

Summary by CodeRabbit

Release Notes

  • Chores
    • Migrated test infrastructure from Jest to Vitest testing framework
    • Removed deprecated test fixtures and unnecessary mock modules
    • Updated developer environment configurations for Vitest compatibility
    • Refreshed VS Code editor settings and extension recommendations

@gardener-prow gardener-prow Bot added the do-not-merge/needs-kind Indicates a PR lacks a `kind/foo` label and requires one. label Apr 13, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 13, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d8ca1b1e-7c91-4ba5-a6f6-2efec4daab1e

📥 Commits

Reviewing files that changed from the base of the PR and between a95cb58 and bfffb3b.

⛔ Files ignored due to path filters (264)
  • .yarn/cache/@babel-code-frame-npm-7.27.1-4dbcabb137-5dd9a18baa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-compat-data-npm-7.28.0-04d8eecea9-c4e527302b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-core-npm-7.28.3-fb967e901c-e6b3eb830c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-compilation-targets-npm-7.27.2-111dda04b6-f338fa00dc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-globals-npm-7.28.0-8d79c12faf-5a0cd0c0e8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-module-imports-npm-7.27.1-3bf33978f4-e00aace096.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-module-transforms-npm-7.28.3-7b69ec189a-549be62515.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-plugin-utils-npm-7.27.1-4f91e7999b-94cf22c81a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-validator-option-npm-7.27.1-7c563f0423-6fec5f006e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helpers-npm-7.28.3-8e4849da45-03a8f94135.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-d13efb2828.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-bigint-npm-7.8.3-b05d971e6c-686891b81a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-95168fa186.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-class-static-block-npm-7.14.5-7bdd0ff1b3-4464bf9115.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-import-attributes-npm-7.26.0-7a281ed168-e594c185b1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-0b08b5e4c3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-e98f31b2ec.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-jsx-npm-7.27.1-2f6039b8f0-bc5afe6a45.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-2594cfbe29.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-2024fbb116.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-c55a82b311.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-ee1eab52ea.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-27e2493ab6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-46edddf2fa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-private-property-in-object-npm-7.14.5-ee837fdbb2-6982277256.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-top-level-await-npm-7.14.5-60a0a2e83b-14bf6e65d5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-typescript-npm-7.27.1-5d60015570-11589b4c89.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-template-npm-7.27.2-77e67eabbd-ed9e902265.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-traverse-npm-7.28.3-7786c501c7-26e95b29a4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@bcoe-v8-coverage-npm-0.2.3-9e27b3c57e-6b80ae4cb3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@codemirror-lang-yaml-npm-6.1.2-9fd6e82b08-fc993c5e24.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@codemirror-language-npm-6.12.2-6ee31ffc4b-7a167eca99.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@codemirror-view-npm-6.40.0-6ba26ec2b7-2e73812f1d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@esbuild-darwin-arm64-npm-0.25.1-031a09ef40-10c0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@esbuild-darwin-x64-npm-0.25.1-4877d67bbb-10c0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@esbuild-linux-arm64-npm-0.25.1-ae0b90ca0a-10c0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@esbuild-linux-x64-npm-0.25.1-fca13db7a3-10c0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@eslint-community-eslint-utils-npm-4.7.0-47503bfa2a-c0f4f2bd73.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@eslint-community-eslint-utils-npm-4.9.1-30ad3d49de-dc4ab5e3e3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@isaacs-balanced-match-npm-4.0.1-8965afafe6-7da011805b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@isaacs-brace-expansion-npm-5.0.1-79f48d6db7-e5d67c7bbf.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@istanbuljs-load-nyc-config-npm-1.1.0-42d17c9cb1-dd2a8b0948.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-console-npm-30.1.2-59585f073d-108c8d8919.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-core-npm-30.1.3-f6321d6701-0f934a027b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-diff-sequences-npm-30.0.1-73f863a027-3a840404e6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-environment-npm-30.1.2-3db8ac4eca-41ac75f75d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-expect-npm-30.1.2-8acd0364e9-e441639d90.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-expect-utils-npm-30.1.2-3ab9909660-5b6c4d400a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-fake-timers-npm-30.1.2-adb77b828f-043ac3b5d6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-get-type-npm-30.1.0-1ad604ab7f-3e65fd5015.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-globals-npm-30.1.2-3e4ecdc1d2-f743e83d5b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-pattern-npm-30.0.1-2ce04a6497-32c5a7bfb6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-reporters-npm-30.1.3-f0fe21c846-2b027e7752.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-schemas-npm-30.0.5-e55a4c770e-449dcd7ec5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-snapshot-utils-npm-30.1.2-4434977d9a-bb5bbb3b3d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-source-map-npm-30.0.1-52afc7f781-e7bda2786f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-test-result-npm-30.1.3-455b6dab7b-610982f31d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-test-sequencer-npm-30.1.3-f1c176f09f-ed9b24e3b3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-transform-npm-30.1.2-14cfbd16d5-b427614659.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-types-npm-30.0.5-0475c9b283-fd097a390e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@lezer-common-npm-1.5.1-b2a8c1074a-49baefdfc6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@pkgr-core-npm-0.2.9-c65fc09be3-ac8e4e8138.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@rollup-plugin-commonjs-npm-28.0.6-4944888a9e-67fa297384.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@rollup-plugin-json-npm-6.1.0-df78b06968-9400c431b5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@rollup-plugin-node-resolve-npm-16.0.1-2936474bab-54d3328232.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@rollup-pluginutils-npm-5.1.4-83ce21024f-6d58fbc6f1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@sinclair-typebox-npm-0.34.41-602ecca817-0fb61fc2f9.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@sinonjs-commons-npm-3.0.1-bffb9f5a53-1227a7b5bd.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@sinonjs-fake-timers-npm-13.0.5-b25ae4bd2b-a707476efd.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-babel__core-npm-7.20.5-4d95f75eab-bdee3bb699.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-babel__generator-npm-7.6.8-61be1197d9-f0ba105e7d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-babel__template-npm-7.4.4-f34eba762c-cc84f6c6ab.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-babel__traverse-npm-7.20.6-fac4243243-7ba7db61a5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-fs-extra-npm-8.1.5-77d3a95112-c9f7965bc4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-glob-npm-7.2.0-772334bf9a-a8eb5d5cb5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-istanbul-lib-coverage-npm-2.0.6-2ea31fda9c-3948088654.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-istanbul-lib-report-npm-3.0.3-a5c0ef4b88-247e477bbc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-istanbul-reports-npm-3.0.4-1afa69db29-1647fd402a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-minimatch-npm-5.1.2-aab9c394d3-83cf1c1174.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-resolve-npm-1.20.2-5fccb2ad46-c5b7e1770f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-stack-utils-npm-2.0.3-48a0a03262-1f4658385a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-yargs-npm-17.0.33-1d6cca6a2e-d16937d7ac.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-yargs-parser-npm-21.0.3-1d265246a1-e71c3bd9d0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-project-service-npm-8.42.0-113060b364-788b0bc526.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-project-service-npm-8.58.1-2598dcbd0c-c48541a135.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-scope-manager-npm-8.58.1-6d54fcb4b6-c7c67d249a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.42.0-2eb5fb2a85-03882eeee2.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.58.1-1b734c80ea-dcccf8c64e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-types-npm-8.58.1-d1e6eadeb2-c468e2e374.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-typescript-estree-npm-8.58.1-8a3dc63661-06ad23dc71.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-utils-npm-8.58.1-b5491cba76-99538feaaa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-visitor-keys-npm-8.42.0-5bbed61ac5-22c942f2a1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-visitor-keys-npm-8.58.1-153e78be2e-d2709bfb63.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@vitest-eslint-plugin-npm-1.3.4-711830bb79-26ee3fabfc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@vitest-eslint-plugin-npm-1.6.15-78dde9faf1-267a5f3a75.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/abort-controller-npm-3.0.0-2f3a9a2bcb-90ccc50f01.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/ansi-escapes-npm-4.3.2-3ad173702f-da917be018.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/ansi-styles-npm-5.2.0-72fc7003e3-9c4ca80eb3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/anymatch-npm-3.1.3-bc81d103b1-57b06ae984.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/argparse-npm-1.0.10-528934e59d-b2972c5c23.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/array-union-npm-2.1.0-4e4852b221-429897e681.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-jest-npm-30.1.2-2d68b3440b-c0f25d6377.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-plugin-istanbul-npm-7.0.0-924905ff8c-79c37bd59e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-plugin-jest-hoist-npm-30.0.1-be1f25b566-49087f45c8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-preset-current-node-syntax-npm-1.2.0-a954a29b2b-94a4f81cdd.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-preset-jest-npm-30.0.1-0b8ffd2c88-33da009496.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/balanced-match-npm-4.0.4-fd666b3c7f-07e86102a3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/brace-expansion-npm-5.0.5-b81f6c30d6-4d238e14ed.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/browserslist-npm-4.24.4-2fdeb5face-db7ebc1733.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/bser-npm-2.1.1-cc902055ce-24d8dfb7b6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/buffer-from-npm-1.1.2-03d2f20d7e-124fff9d66.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/camelcase-npm-5.3.1-5db8af62c5-92ff9b443b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/camelcase-npm-6.3.0-e5e42a0d15-0d70165821.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/caniuse-lite-npm-1.0.30001699-aed268ac86-e87b3a0602.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/ci-info-npm-4.3.0-2894137978-60d3dfe95d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/cjs-module-lexer-npm-2.1.0-c520790078-91cf28686d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/co-npm-4.6.0-03f2d1feb6-c0e85ea0ca.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/collect-v8-coverage-npm-1.0.2-bd20d0c572-ed7008e2e8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/colorette-npm-1.4.0-7e94b44dc3-4955c8f7da.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/commondir-npm-1.0.1-291b790340-33a124960e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/convert-source-map-npm-2.0.0-7ab664dc4e-8f2f7a27a1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/cross-env-npm-10.1.0-d2d02f62e5-834a862db4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/dedent-npm-1.6.0-2a2b4ba2b1-671b8f5e39.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/detect-newline-npm-3.1.0-6d33fa8d37-c38cfc8eeb.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/dir-glob-npm-3.0.1-1aea628b1b-dcac00920a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/electron-to-chromium-npm-1.5.97-a5d0e46ea1-79080e3fea.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/emittery-npm-0.13.1-cb6cd1bb03-1573d0ae29.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/error-ex-npm-1.3.2-5654f80c0f-ba827f8936.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/esbuild-npm-0.25.1-d9214fa98d-80fca30dd0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/escape-string-regexp-npm-2.0.0-aef69d2a25-2530479fe8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/eslint-plugin-jest-npm-29.0.1-fe022b91da-20edc16650.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/eslint-visitor-keys-npm-5.0.1-30a44b062b-16190bdf2c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/esprima-npm-4.0.1-1084e98778-ad4bab9ead.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/event-target-shim-npm-5.0.1-cb48709025-0255d9f936.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/execa-npm-5.1.1-191347acf5-c8e615235e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/exit-x-npm-0.2.2-c46ac0577e-212a7a095c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/expect-npm-30.1.2-99d1371589-467c1b6954.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/fb-watchman-npm-2.0.2-bcb6f8f831-feae89ac14.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/find-up-npm-4.1.0-c3ccf8d855-0406ee89eb.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/flatted-npm-3.3.3-ca455563b2-e957a1c6b0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/fs-extra-npm-8.1.0-197473387f-259f7b814d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/gensync-npm-1.0.0-beta.2-224666d72f-782aba6cba.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/get-package-type-npm-0.1.0-6c70cdc8ab-e34cdf447f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/get-stream-npm-6.0.1-83e51a4642-49825d57d3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/glob-npm-11.0.2-cd5db3a299-49f91c64ca.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/globby-npm-10.0.1-35fa2ba87a-048f8e19a5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/human-signals-npm-2.1.0-f75815481d-695edb3edf.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/import-local-npm-3.2.0-bf54ec7842-94cd6367a6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-e7fb686a73.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-generator-fn-npm-2.1.0-37895c2d2b-2957cab387.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-module-npm-1.0.0-79ba918283-795a3914bc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-plain-object-npm-3.0.1-15b47fb6eb-eac88599d3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-reference-npm-1.2.1-87ca1743c8-7dc819fc8d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-stream-npm-2.0.1-c802db55e7-7c28424131.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/istanbul-lib-instrument-npm-6.0.3-959dca7404-a1894e060d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jackspeak-npm-4.1.0-8f220eaf6d-08a6a24a36.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-changed-files-npm-30.0.5-7d8d9ad654-41ce090f32.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-circus-npm-30.1.3-ab9758c6bf-9bea7baf7d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-cli-npm-30.1.3-6ba2316843-e15e811b0a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-config-npm-30.1.3-8804ae4604-9e347a2223.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-date-mock-npm-1.0.10-ab130876a0-ff594e9fbf.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-diff-npm-30.1.2-5285cea394-5baba5c54d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-docblock-npm-30.0.1-86756f2942-f9bad2651d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-each-npm-30.1.0-6b3a23bc2b-2db0fe6df0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-environment-node-npm-30.1.2-f48cd7c0ed-6298269ba9.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-haste-map-npm-30.1.0-8189548adb-a6001e350b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-leak-detector-npm-30.1.0-fc51367c07-a0b0c30988.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-matcher-utils-npm-30.1.2-5f3f132018-c4f81fc7d7.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-message-util-npm-30.1.0-d5a5fa5bef-3884f7e772.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-mock-npm-30.0.5-0573f7a688-207fd79297.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-npm-30.1.3-ba9bff049d-6f0c18d8c9.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-pnp-resolver-npm-1.2.3-70e06bf27c-86eec0c784.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-regex-util-npm-30.0.1-af482a9a29-f30c70524e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-resolve-dependencies-npm-30.1.3-f44a9a74dc-1fc144c310.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-resolve-npm-30.1.3-b81d4ca502-ba84ac234a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-runner-npm-30.1.3-69ac625b3e-867f878892.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-runtime-npm-30.1.3-2202cf4ce5-2b5fe84685.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-snapshot-npm-30.1.2-4e0b099b0d-deca264b65.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-util-npm-30.0.5-8940b46e20-d3808b5f77.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-validate-npm-30.1.0-021223f62b-6b8dd92e91.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-watcher-npm-30.1.3-20a9daaaf2-6783c17813.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-worker-npm-30.1.0-b4a01545e6-305a9c64d3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/js-yaml-npm-3.14.1-b968c6095e-6746baaaea.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-140932564c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jsonfile-npm-4.0.0-10ce3aea15-7dc94b628d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/leven-npm-3.1.0-b7697736a3-cd778ba3fb.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-3da6ee62d4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/locate-path-npm-5.0.0-46580c43e4-33a1c5247e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/lru-cache-npm-11.1.0-3de771fc22-85c312f711.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/lru-cache-npm-5.1.1-f475882a51-89b2ef2ef4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/makeerror-npm-1.0.12-69abf085d7-b0e6e59978.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/merge-stream-npm-2.0.0-2ac83efea5-867fdbb30a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/mimic-fn-npm-2.1.0-4fbeb3abb4-b26f5479d7.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/minimatch-npm-10.0.3-23e96438f0-e43e4a905c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/minimatch-npm-10.2.5-f1c8297822-6bb058bd63.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/netmask-npm-2.0.2-2299510a4d-cafd28388e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/netmask-npm-2.1.1-eace0c3dfd-c78e31869b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/node-int64-npm-0.4.0-0dc04ec3b2-a6a4d8369e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/node-releases-npm-2.0.19-b123ed6240-52a0dbd25c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/normalize-path-npm-3.0.0-658ba7d77f-e008c8142b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/npm-run-path-npm-4.0.1-7aebd8bab3-6f9353a952.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/onetime-npm-5.1.2-3ed148fa42-ffcef6fbb2.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/p-limit-npm-2.3.0-94a0310039-8da01ac53e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/p-locate-npm-4.1.0-eec6872537-1b476ad69a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/p-try-npm-2.2.0-e0390dbaf8-c36c199077.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/parse-json-npm-5.2.0-00a63b1199-77947f2253.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/path-scurry-npm-2.0.0-5a556e8161-3da4adedaa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/path-type-npm-4.0.0-10d47fc86a-666f6973f3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/picomatch-npm-2.3.1-c782cfd986-26c02b8d06.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pirates-npm-4.0.7-5e4ee2f078-a51f108dd8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pkg-dir-npm-4.2.0-2b5d0a8d32-c56bda7769.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pretty-format-npm-30.0.5-12c8203223-9f6cf1af5c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pure-rand-npm-7.0.1-c1074fa9ee-9cade41030.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/react-is-npm-18.3.1-370a81e1e9-f2f1e60010.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/resolve-cwd-npm-3.0.0-e6f4e296bf-e608a3ebd1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/resolve-from-npm-5.0.0-15c9db4d33-b21cb7f1fb.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/rimraf-npm-6.0.1-2d0b0aeb1b-b30b6b0727.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/rollup-plugin-copy-npm-3.5.0-a5e02864e9-163a27756f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/signal-exit-npm-3.0.7-bd270458a3-25d272fa73.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/slash-npm-3.0.0-b87de2279a-e18488c6a4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/socket.io-parser-npm-4.2.4-bf87f78bcd-9383b30358.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/source-map-npm-0.6.1-1a3621db16-ab55398007.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/source-map-support-npm-0.5.13-377dfd7321-137539f8c4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/sprintf-js-npm-1.0.3-73f0a322fa-ecadcfe4c7.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/stack-utils-npm-2.0.6-2be1099696-651c9f8766.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/string-length-npm-4.0.2-675173c7a2-1cd77409c3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/strip-bom-npm-4.0.0-97d367a64d-26abad1172.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/strip-final-newline-npm-2.0.0-340c4f7c66-bddf8ccd47.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/supports-color-npm-8.1.1-289e937149-ea1d3c275d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/synckit-npm-0.11.11-415ad819d7-f076149595.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/test-exclude-npm-6.0.0-3fb03d69df-019d33d81a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/tmpl-npm-1.0.5-d399ba37e2-f935537799.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/ts-api-utils-npm-2.5.0-6bde2b2eb9-767849383c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/type-detect-npm-4.0.8-8d8127b901-8fb9a51d3f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/type-fest-npm-0.21.3-5ff2a9c6fd-902bd57bfa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/undici-npm-7.24.6-57102c8005-0f5413ccb2.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/universalify-npm-0.1.2-9b22d31d2d-e70e0339f6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/update-browserslist-db-npm-1.1.2-59b122fef6-9cb353998d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/v8-to-istanbul-npm-9.3.0-35fef658c9-968bcf1c7c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/vite-npm-7.1.11-fb19835f08-c4aa7f47b1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/vue-router-npm-5.0.3-3b160d99bd-ccb465bf62.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/vuetify-npm-3.12.3-97035921e1-a65987e60a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/walker-npm-1.0.8-b0a05b9478-a17e037bcc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/write-file-atomic-npm-5.0.1-52283db6ee-e8c850a8e3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/yallist-npm-3.1.1-a568a556b4-c66a5c46bc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/yaml-npm-2.8.2-6cbf7c73c4-703e4dc1e3.zip is excluded by !**/.yarn/**, !**/*.zip
  • backend/__tests__/__snapshots__/markdown.spec.cjs.snap is excluded by !**/*.snap
  • backend/__tests__/__snapshots__/markdown.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/__snapshots__/services.projects.spec.cjs.snap is excluded by !**/*.snap
  • backend/__tests__/__snapshots__/services.projects.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.cloudProviderCredentials.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.cloudprofiles.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.controllerregistrations.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.info.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.managedseeds.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.members.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.resourceQuotas.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.seeds.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.shoots.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.terminals.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.tickets.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.user.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/auth.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/config.spec.js.snap is excluded by !**/*.snap
📒 Files selected for processing (13)
  • .pnp.cjs
  • .vscode/extensions.json
  • .vscode/settings.json
  • .yarnrc.yml
  • backend/__fixtures__/env.cjs
  • backend/__fixtures__/index.cjs
  • backend/__mocks__/@gardener-dashboard/kube-client.cjs
  • backend/__mocks__/@gardener-dashboard/kube-config.cjs
  • backend/__mocks__/@gardener-dashboard/logger.cjs
  • backend/__mocks__/@gardener-dashboard/markdown.cjs
  • backend/__mocks__/@gardener-dashboard/monitor.cjs
  • backend/__mocks__/p-limit.cjs
  • backend/__test_helpers__/p-event.cjs
💤 Files with no reviewable changes (9)
  • backend/fixtures/env.cjs
  • backend/mocks/p-limit.cjs
  • backend/mocks/@gardener-dashboard/markdown.cjs
  • backend/mocks/@gardener-dashboard/kube-client.cjs
  • backend/test_helpers/p-event.cjs
  • backend/mocks/@gardener-dashboard/monitor.cjs
  • backend/mocks/@gardener-dashboard/logger.cjs
  • backend/mocks/@gardener-dashboard/kube-config.cjs
  • backend/fixtures/index.cjs
✅ Files skipped from review due to trivial changes (2)
  • .vscode/extensions.json
  • .yarnrc.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .vscode/settings.json

📝 Walkthrough

Walkthrough

This PR migrates the backend test suite from Jest to Vitest, converting CommonJS test files to ES modules, replacing Jest-specific APIs with Vitest equivalents, removing Jest fixture and mock modules, and updating VS Code editor configurations to reflect the new test runner.

Changes

Cohort / File(s) Summary
Configuration & Editor Setup
.yarnrc.yml, .vscode/extensions.json, .vscode/settings.json
Added Yarn log filter for YN0002 error; replaced jest-runner VS Code extension with vitest.explorer; switched from jest runner settings to Vitest-specific configuration including search pattern exclusions and node executable path.
Test Fixtures & Mocks (Deleted)
backend/__fixtures__/env.cjs, backend/__fixtures__/index.cjs, backend/__mocks__/@gardener-dashboard/kube-client.cjs, backend/__mocks__/@gardener-dashboard/kube-config.cjs, backend/__mocks__/@gardener-dashboard/logger.cjs, backend/__mocks__/@gardener-dashboard/markdown.cjs, backend/__mocks__/@gardener-dashboard/monitor.cjs, backend/__mocks__/p-limit.cjs, backend/__test_helpers__/p-event.cjs
Removed all Jest-specific fixture and manual mock modules that previously provided CommonJS exports for test setup and mocking utilities.
Acceptance Tests - ESM Conversion
backend/__tests__/acceptance/api.cloudProviderCredentials.spec.js, backend/__tests__/acceptance/api.cloudprofiles.spec.js, backend/__tests__/acceptance/api.controllerregistrations.spec.js, backend/__tests__/acceptance/api.info.spec.js, backend/__tests__/acceptance/api.managedseeds.spec.js, backend/__tests__/acceptance/api.members.spec.js, backend/__tests__/acceptance/api.resourceQuotas.spec.js, backend/__tests__/acceptance/api.seeds.spec.js, backend/__tests__/acceptance/api.user.spec.js, backend/__tests__/acceptance/config.spec.js, backend/__tests__/acceptance/healthz.spec.js, backend/__tests__/acceptance/openapi.spec.js
Converted from CommonJS (require, 'use strict') to ES modules (import); changed beforeAll hooks to async and awaited createAgent(); updated lodash imports to lodash-es where applicable; replaced Jest mocking APIs with Vitest equivalents.
Acceptance Tests - Complex Migration
backend/__tests__/acceptance/api.projects.spec.js, backend/__tests__/acceptance/api.shoots.spec.js, backend/__tests__/acceptance/api.terminals.spec.js, backend/__tests__/acceptance/api.tickets.spec.js, backend/__tests__/acceptance/auth.spec.js, backend/__tests__/acceptance/io.cors.spec.js, backend/__tests__/acceptance/io.spec.js
Converted to ESM with additional changes: replaced jest.mock/jest.spyOn/jest.clearAllMocks() with Vitest equivalents; updated import paths from dist to lib; made agent creation async; refactored mock management strategies; one test case removed (io.spec.js); modified error assertion patterns to handle promise rejections.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • holgerkoser
  • klocke-io

Poem

🐰 From Jest to Vitest we hop and skip,
Removing fixtures with a confident flip,
ES modules bloom where CommonJS did fall,
Async/await smooths the test hall,
Dashboard's test suite now runs so spry!

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is largely incomplete, missing critical sections from the template. While the 'What this PR does' and release notes are present, the 'Which issue(s) this PR fixes' section contains only 'Fixes #' with no issue number, and 'Special notes for your reviewer' is entirely absent. Complete the 'Which issue(s) this PR fixes' section with a valid issue number, and add substantive 'Special notes for your reviewer' to guide the reviewer on key concerns or testing areas.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and accurately summarizes the main change: migration from Jest to Vitest in the backend.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch enh/vitest

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gardener-prow gardener-prow Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Apr 13, 2026
@grolu grolu added the kind/enhancement Enhancement, improvement, extension label Apr 13, 2026
@gardener-prow gardener-prow Bot added cla: yes Indicates the PR's author has signed the cla-assistant.io CLA. and removed do-not-merge/needs-kind Indicates a PR lacks a `kind/foo` label and requires one. labels Apr 13, 2026
Comment thread backend/__tests__/helpers/createAgent.js
Comment thread backend/__tests__/mocks/@gardener-dashboard/monitor.js Outdated
Comment thread backend/__tests__/mocks/@gardener-dashboard/request.js Outdated
await advanceTimersAndFlushPromises(syncManagerOpts.interval)
// When the interval is over a new timeout - in this case - with delay of 0 ms is scheduled.
// jest.advanceTimersByTime(0) does not trigger setTimeout(..., 0). So use 1(ms) here.
// vi.advanceTimersByTime(0) does not trigger setTimeout(..., 0). So use 1(ms) here.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

is this comment still true?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yes, the comment is still valid. Here's why:

The @sinonjs/fake-timers library (which Vitest uses under the hood) has a specific behavior: when a setTimeout(..., 0) is scheduled during a tick (i.e., from within
another timer's callback), it applies this logic:

clock.now + (parseInt(String(timer.delay)) || (clock.duringTick ? 1 : 0))

Since parseInt("0") is 0 (falsy), and clock.duringTick is true (the timer is being scheduled from inside the interval callback), the delay becomes 1, not 0. The
timer is effectively scheduled at clock.now + 1.

That's exactly the scenario in this test: the interval fires, and its callback schedules a new setTimeout(..., 0). Because it's scheduled during the tick, the
effective delay is 1ms. So advanceTimersByTime(0) won't reach it, but advanceTimersByTime(1) will.

This is intentional in fake-timers to prevent infinite loops when timers recursively schedule new 0ms timers. The comment is correct and still applies.

Comment thread backend/__tests__/fixtures/helper.js
Comment thread backend/__tests__/utils.spec.js Outdated
Comment thread charts/__fixtures__/index.js Outdated
Comment thread charts/__fixtures__/helper.js Outdated
Comment thread packages/kube-client/eslint.config.cjs
@petersutter
Copy link
Copy Markdown
Member

also fix this warning:

  Snapshots  1 obsolete
             ↳ __tests__/acceptance/io.spec.js
               · api > events > when user is "foo" > should subscribe shoots for a single namespace 2

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
backend/__tests__/acceptance/io.cors.spec.js (1)

30-32: ⚠️ Potential issue | 🟠 Major

Restore the same config key you mutate in tests.

Each test mutates config.websocketAllowedOrigins, but teardown restores config.io. This can leak mutated origin settings into later suites and make results order-dependent.

💡 Suggested fix
 describe('cors', () => {
   let agent
   let socket
   const ioConfig = config.io
+  const websocketAllowedOrigins = config.websocketAllowedOrigins

   afterEach(async () => {
     Object.defineProperty(config, 'io', { value: ioConfig })
+    Object.defineProperty(config, 'websocketAllowedOrigins', { value: websocketAllowedOrigins })
   })

Also applies to: 40-41, 50-52, 64-66, 78-80, 91-93

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@backend/__tests__/acceptance/io.cors.spec.js` around lines 30 - 32, Tests
mutate config.websocketAllowedOrigins but the teardown uses
Object.defineProperty(config, 'io', ...) which fails to restore the mutated key;
change the afterEach/teardown(s) to restore the exact property mutated by tests
by calling Object.defineProperty(config, 'websocketAllowedOrigins', { value:
ioConfig }) (or the correct original value variable used in each test), and
apply this fix to every occurrence noted (the afterEach blocks that currently
restore 'io').
🧹 Nitpick comments (2)
backend/__tests__/acceptance/openapi.spec.js (1)

58-58: Add afterEach hook to restore mocks and ensure test isolation.

The spy on line 58 is created but never restored, which will cause brittle test behavior once additional tests are added to this file. Add an afterEach hook with vi.restoreAllMocks() to clean up after each test.

Suggested fix
 import {
   describe,
   it,
   expect,
   vi,
   beforeAll,
   afterAll,
   beforeEach,
+  afterEach,
 } from 'vitest'
@@
   beforeEach(() => {
     mockRequest.mockReset()
   })
+
+  afterEach(() => {
+    vi.restoreAllMocks()
+  })
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@backend/__tests__/acceptance/openapi.spec.js` at line 58, The test creates a
spy via vi.spyOn(SwaggerParser, 'dereference') (dereferenceStub) but never
restores it; add an afterEach hook that calls vi.restoreAllMocks() to restore
dereferenceStub and any other mocks between tests to ensure isolation and avoid
cross-test leakage.
backend/__tests__/acceptance/auth.spec.js (1)

114-130: The redundant mockResolvedValue is intentional but could be cleaner.

The comment on lines 128-130 correctly notes that vi.clearAllMocks() clears call history but not mockResolvedValue, making the re-assignment technically redundant. While the explicit approach is acceptable, you could remove lines 128-130 to reduce noise since the mock is already configured in beforeAll.

♻️ Optional: Remove redundant mock setup
   beforeEach(() => {
     vi.clearAllMocks()
 
-    // Re-set the persistent discovery mock (clearAllMocks clears call history
-    // but not mockResolvedValue, so this is technically redundant - but explicit).
-    discovery.mockResolvedValue(discoveryConfig)
-
     randomPKCECodeVerifier.mockReturnValueOnce('code-verifier')
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@backend/__tests__/acceptance/auth.spec.js` around lines 114 - 130, Remove the
redundant re-assignment of the discovery mock in the beforeEach block: delete
the discovery.mockResolvedValue(discoveryConfig) call (and its explanatory
comment) inside beforeEach since discovery.mockResolvedValue(discoveryConfig) is
already set in beforeAll and vi.clearAllMocks() does not clear the
mockResolvedValue; keep the initial setup in beforeAll and leave beforeEach only
to call vi.clearAllMocks().
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@backend/__tests__/acceptance/io.cors.spec.js`:
- Around line 30-32: Tests mutate config.websocketAllowedOrigins but the
teardown uses Object.defineProperty(config, 'io', ...) which fails to restore
the mutated key; change the afterEach/teardown(s) to restore the exact property
mutated by tests by calling Object.defineProperty(config,
'websocketAllowedOrigins', { value: ioConfig }) (or the correct original value
variable used in each test), and apply this fix to every occurrence noted (the
afterEach blocks that currently restore 'io').

---

Nitpick comments:
In `@backend/__tests__/acceptance/auth.spec.js`:
- Around line 114-130: Remove the redundant re-assignment of the discovery mock
in the beforeEach block: delete the discovery.mockResolvedValue(discoveryConfig)
call (and its explanatory comment) inside beforeEach since
discovery.mockResolvedValue(discoveryConfig) is already set in beforeAll and
vi.clearAllMocks() does not clear the mockResolvedValue; keep the initial setup
in beforeAll and leave beforeEach only to call vi.clearAllMocks().

In `@backend/__tests__/acceptance/openapi.spec.js`:
- Line 58: The test creates a spy via vi.spyOn(SwaggerParser, 'dereference')
(dereferenceStub) but never restores it; add an afterEach hook that calls
vi.restoreAllMocks() to restore dereferenceStub and any other mocks between
tests to ensure isolation and avoid cross-test leakage.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6c16558d-b104-48cc-ad00-ccf6cb8da22a

📥 Commits

Reviewing files that changed from the base of the PR and between 694cf3f and f93c007.

⛔ Files ignored due to path filters (265)
  • .yarn/cache/@babel-code-frame-npm-7.27.1-4dbcabb137-5dd9a18baa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-compat-data-npm-7.28.0-04d8eecea9-c4e527302b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-core-npm-7.28.3-fb967e901c-e6b3eb830c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-compilation-targets-npm-7.27.2-111dda04b6-f338fa00dc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-globals-npm-7.28.0-8d79c12faf-5a0cd0c0e8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-module-imports-npm-7.27.1-3bf33978f4-e00aace096.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-module-transforms-npm-7.28.3-7b69ec189a-549be62515.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-plugin-utils-npm-7.27.1-4f91e7999b-94cf22c81a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helper-validator-option-npm-7.27.1-7c563f0423-6fec5f006e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-helpers-npm-7.28.3-8e4849da45-03a8f94135.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-async-generators-npm-7.8.4-d10cf993c9-d13efb2828.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-bigint-npm-7.8.3-b05d971e6c-686891b81a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-class-properties-npm-7.12.13-002ee9d930-95168fa186.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-class-static-block-npm-7.14.5-7bdd0ff1b3-4464bf9115.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-import-attributes-npm-7.26.0-7a281ed168-e594c185b1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-import-meta-npm-7.10.4-4a0a0158bc-0b08b5e4c3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-json-strings-npm-7.8.3-6dc7848179-e98f31b2ec.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-jsx-npm-7.27.1-2f6039b8f0-bc5afe6a45.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-logical-assignment-operators-npm-7.10.4-72ae00fdf6-2594cfbe29.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-nullish-coalescing-operator-npm-7.8.3-8a723173b5-2024fbb116.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-numeric-separator-npm-7.10.4-81444be605-c55a82b311.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-object-rest-spread-npm-7.8.3-60bd05b6ae-ee1eab52ea.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-optional-catch-binding-npm-7.8.3-ce337427d8-27e2493ab6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-optional-chaining-npm-7.8.3-f3f3c79579-46edddf2fa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-private-property-in-object-npm-7.14.5-ee837fdbb2-6982277256.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-top-level-await-npm-7.14.5-60a0a2e83b-14bf6e65d5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-plugin-syntax-typescript-npm-7.27.1-5d60015570-11589b4c89.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-template-npm-7.27.2-77e67eabbd-ed9e902265.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@babel-traverse-npm-7.28.3-7786c501c7-26e95b29a4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@bcoe-v8-coverage-npm-0.2.3-9e27b3c57e-6b80ae4cb3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@codemirror-lang-yaml-npm-6.1.2-9fd6e82b08-fc993c5e24.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@codemirror-language-npm-6.12.2-6ee31ffc4b-7a167eca99.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@codemirror-view-npm-6.40.0-6ba26ec2b7-2e73812f1d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@epic-web-invariant-npm-1.0.0-a4ac7c9c5e-72dbeb026e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@esbuild-darwin-arm64-npm-0.25.1-031a09ef40-10c0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@esbuild-darwin-x64-npm-0.25.1-4877d67bbb-10c0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@esbuild-linux-arm64-npm-0.25.1-ae0b90ca0a-10c0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@esbuild-linux-x64-npm-0.25.1-fca13db7a3-10c0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@eslint-community-eslint-utils-npm-4.7.0-47503bfa2a-c0f4f2bd73.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@eslint-community-eslint-utils-npm-4.9.1-30ad3d49de-dc4ab5e3e3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@isaacs-balanced-match-npm-4.0.1-8965afafe6-7da011805b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@isaacs-brace-expansion-npm-5.0.1-79f48d6db7-e5d67c7bbf.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@istanbuljs-load-nyc-config-npm-1.1.0-42d17c9cb1-dd2a8b0948.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-console-npm-30.1.2-59585f073d-108c8d8919.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-core-npm-30.1.3-f6321d6701-0f934a027b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-diff-sequences-npm-30.0.1-73f863a027-3a840404e6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-environment-npm-30.1.2-3db8ac4eca-41ac75f75d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-expect-npm-30.1.2-8acd0364e9-e441639d90.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-expect-utils-npm-30.1.2-3ab9909660-5b6c4d400a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-fake-timers-npm-30.1.2-adb77b828f-043ac3b5d6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-get-type-npm-30.1.0-1ad604ab7f-3e65fd5015.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-globals-npm-30.1.2-3e4ecdc1d2-f743e83d5b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-pattern-npm-30.0.1-2ce04a6497-32c5a7bfb6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-reporters-npm-30.1.3-f0fe21c846-2b027e7752.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-schemas-npm-30.0.5-e55a4c770e-449dcd7ec5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-snapshot-utils-npm-30.1.2-4434977d9a-bb5bbb3b3d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-source-map-npm-30.0.1-52afc7f781-e7bda2786f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-test-result-npm-30.1.3-455b6dab7b-610982f31d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-test-sequencer-npm-30.1.3-f1c176f09f-ed9b24e3b3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-transform-npm-30.1.2-14cfbd16d5-b427614659.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@jest-types-npm-30.0.5-0475c9b283-fd097a390e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@lezer-common-npm-1.5.1-b2a8c1074a-49baefdfc6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@pkgr-core-npm-0.2.9-c65fc09be3-ac8e4e8138.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@rollup-plugin-commonjs-npm-28.0.6-4944888a9e-67fa297384.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@rollup-plugin-json-npm-6.1.0-df78b06968-9400c431b5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@rollup-plugin-node-resolve-npm-16.0.1-2936474bab-54d3328232.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@rollup-pluginutils-npm-5.1.4-83ce21024f-6d58fbc6f1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@sinclair-typebox-npm-0.34.41-602ecca817-0fb61fc2f9.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@sinonjs-commons-npm-3.0.1-bffb9f5a53-1227a7b5bd.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@sinonjs-fake-timers-npm-13.0.5-b25ae4bd2b-a707476efd.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-babel__core-npm-7.20.5-4d95f75eab-bdee3bb699.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-babel__generator-npm-7.6.8-61be1197d9-f0ba105e7d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-babel__template-npm-7.4.4-f34eba762c-cc84f6c6ab.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-babel__traverse-npm-7.20.6-fac4243243-7ba7db61a5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-fs-extra-npm-8.1.5-77d3a95112-c9f7965bc4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-glob-npm-7.2.0-772334bf9a-a8eb5d5cb5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-istanbul-lib-coverage-npm-2.0.6-2ea31fda9c-3948088654.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-istanbul-lib-report-npm-3.0.3-a5c0ef4b88-247e477bbc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-istanbul-reports-npm-3.0.4-1afa69db29-1647fd402a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-minimatch-npm-5.1.2-aab9c394d3-83cf1c1174.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-resolve-npm-1.20.2-5fccb2ad46-c5b7e1770f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-stack-utils-npm-2.0.3-48a0a03262-1f4658385a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-yargs-npm-17.0.33-1d6cca6a2e-d16937d7ac.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@types-yargs-parser-npm-21.0.3-1d265246a1-e71c3bd9d0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-project-service-npm-8.42.0-113060b364-788b0bc526.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-project-service-npm-8.58.1-2598dcbd0c-c48541a135.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-scope-manager-npm-8.58.1-6d54fcb4b6-c7c67d249a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.42.0-2eb5fb2a85-03882eeee2.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-tsconfig-utils-npm-8.58.1-1b734c80ea-dcccf8c64e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-types-npm-8.58.1-d1e6eadeb2-c468e2e374.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-typescript-estree-npm-8.58.1-8a3dc63661-06ad23dc71.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-utils-npm-8.58.1-b5491cba76-99538feaaa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-visitor-keys-npm-8.42.0-5bbed61ac5-22c942f2a1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@typescript-eslint-visitor-keys-npm-8.58.1-153e78be2e-d2709bfb63.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@vitest-eslint-plugin-npm-1.3.4-711830bb79-26ee3fabfc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/@vitest-eslint-plugin-npm-1.6.15-78dde9faf1-267a5f3a75.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/abort-controller-npm-3.0.0-2f3a9a2bcb-90ccc50f01.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/ansi-escapes-npm-4.3.2-3ad173702f-da917be018.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/ansi-styles-npm-5.2.0-72fc7003e3-9c4ca80eb3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/anymatch-npm-3.1.3-bc81d103b1-57b06ae984.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/argparse-npm-1.0.10-528934e59d-b2972c5c23.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/array-union-npm-2.1.0-4e4852b221-429897e681.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-jest-npm-30.1.2-2d68b3440b-c0f25d6377.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-plugin-istanbul-npm-7.0.0-924905ff8c-79c37bd59e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-plugin-jest-hoist-npm-30.0.1-be1f25b566-49087f45c8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-preset-current-node-syntax-npm-1.2.0-a954a29b2b-94a4f81cdd.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/babel-preset-jest-npm-30.0.1-0b8ffd2c88-33da009496.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/balanced-match-npm-4.0.4-fd666b3c7f-07e86102a3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/brace-expansion-npm-5.0.5-b81f6c30d6-4d238e14ed.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/browserslist-npm-4.24.4-2fdeb5face-db7ebc1733.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/bser-npm-2.1.1-cc902055ce-24d8dfb7b6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/buffer-from-npm-1.1.2-03d2f20d7e-124fff9d66.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/camelcase-npm-5.3.1-5db8af62c5-92ff9b443b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/camelcase-npm-6.3.0-e5e42a0d15-0d70165821.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/caniuse-lite-npm-1.0.30001699-aed268ac86-e87b3a0602.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/ci-info-npm-4.3.0-2894137978-60d3dfe95d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/cjs-module-lexer-npm-2.1.0-c520790078-91cf28686d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/co-npm-4.6.0-03f2d1feb6-c0e85ea0ca.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/collect-v8-coverage-npm-1.0.2-bd20d0c572-ed7008e2e8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/colorette-npm-1.4.0-7e94b44dc3-4955c8f7da.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/commondir-npm-1.0.1-291b790340-33a124960e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/convert-source-map-npm-2.0.0-7ab664dc4e-8f2f7a27a1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/cross-env-npm-10.0.0-e9b756cae3-d16ffc3734.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/dedent-npm-1.6.0-2a2b4ba2b1-671b8f5e39.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/detect-newline-npm-3.1.0-6d33fa8d37-c38cfc8eeb.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/dir-glob-npm-3.0.1-1aea628b1b-dcac00920a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/electron-to-chromium-npm-1.5.97-a5d0e46ea1-79080e3fea.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/emittery-npm-0.13.1-cb6cd1bb03-1573d0ae29.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/error-ex-npm-1.3.2-5654f80c0f-ba827f8936.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/esbuild-npm-0.25.1-d9214fa98d-80fca30dd0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/escape-string-regexp-npm-2.0.0-aef69d2a25-2530479fe8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/eslint-visitor-keys-npm-5.0.1-30a44b062b-16190bdf2c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/esprima-npm-4.0.1-1084e98778-ad4bab9ead.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/event-target-shim-npm-5.0.1-cb48709025-0255d9f936.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/execa-npm-5.1.1-191347acf5-c8e615235e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/exit-x-npm-0.2.2-c46ac0577e-212a7a095c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/expect-npm-30.1.2-99d1371589-467c1b6954.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/fb-watchman-npm-2.0.2-bcb6f8f831-feae89ac14.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/find-up-npm-4.1.0-c3ccf8d855-0406ee89eb.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/flatted-npm-3.3.3-ca455563b2-e957a1c6b0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/fs-extra-npm-8.1.0-197473387f-259f7b814d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/gensync-npm-1.0.0-beta.2-224666d72f-782aba6cba.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/get-package-type-npm-0.1.0-6c70cdc8ab-e34cdf447f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/get-stream-npm-6.0.1-83e51a4642-49825d57d3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/glob-npm-11.0.2-cd5db3a299-49f91c64ca.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/globby-npm-10.0.1-35fa2ba87a-048f8e19a5.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/human-signals-npm-2.1.0-f75815481d-695edb3edf.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/import-local-npm-3.2.0-bf54ec7842-94cd6367a6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-e7fb686a73.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-generator-fn-npm-2.1.0-37895c2d2b-2957cab387.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-module-npm-1.0.0-79ba918283-795a3914bc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-plain-object-npm-3.0.1-15b47fb6eb-eac88599d3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-reference-npm-1.2.1-87ca1743c8-7dc819fc8d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/is-stream-npm-2.0.1-c802db55e7-7c28424131.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/istanbul-lib-instrument-npm-6.0.3-959dca7404-a1894e060d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jackspeak-npm-4.1.0-8f220eaf6d-08a6a24a36.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-changed-files-npm-30.0.5-7d8d9ad654-41ce090f32.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-circus-npm-30.1.3-ab9758c6bf-9bea7baf7d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-cli-npm-30.1.3-6ba2316843-e15e811b0a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-config-npm-30.1.3-8804ae4604-9e347a2223.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-date-mock-npm-1.0.10-ab130876a0-ff594e9fbf.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-diff-npm-30.1.2-5285cea394-5baba5c54d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-docblock-npm-30.0.1-86756f2942-f9bad2651d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-each-npm-30.1.0-6b3a23bc2b-2db0fe6df0.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-environment-node-npm-30.1.2-f48cd7c0ed-6298269ba9.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-haste-map-npm-30.1.0-8189548adb-a6001e350b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-leak-detector-npm-30.1.0-fc51367c07-a0b0c30988.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-matcher-utils-npm-30.1.2-5f3f132018-c4f81fc7d7.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-message-util-npm-30.1.0-d5a5fa5bef-3884f7e772.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-mock-npm-30.0.5-0573f7a688-207fd79297.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-npm-30.1.3-ba9bff049d-6f0c18d8c9.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-pnp-resolver-npm-1.2.3-70e06bf27c-86eec0c784.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-regex-util-npm-30.0.1-af482a9a29-f30c70524e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-resolve-dependencies-npm-30.1.3-f44a9a74dc-1fc144c310.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-resolve-npm-30.1.3-b81d4ca502-ba84ac234a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-runner-npm-30.1.3-69ac625b3e-867f878892.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-runtime-npm-30.1.3-2202cf4ce5-2b5fe84685.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-snapshot-npm-30.1.2-4e0b099b0d-deca264b65.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-util-npm-30.0.5-8940b46e20-d3808b5f77.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-validate-npm-30.1.0-021223f62b-6b8dd92e91.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-watcher-npm-30.1.3-20a9daaaf2-6783c17813.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jest-worker-npm-30.1.0-b4a01545e6-305a9c64d3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/js-yaml-npm-3.14.1-b968c6095e-6746baaaea.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-140932564c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/jsonfile-npm-4.0.0-10ce3aea15-7dc94b628d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/leven-npm-3.1.0-b7697736a3-cd778ba3fb.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/lines-and-columns-npm-1.2.4-d6c7cc5799-3da6ee62d4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/locate-path-npm-5.0.0-46580c43e4-33a1c5247e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/lru-cache-npm-11.1.0-3de771fc22-85c312f711.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/lru-cache-npm-5.1.1-f475882a51-89b2ef2ef4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/makeerror-npm-1.0.12-69abf085d7-b0e6e59978.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/merge-stream-npm-2.0.0-2ac83efea5-867fdbb30a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/mimic-fn-npm-2.1.0-4fbeb3abb4-b26f5479d7.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/minimatch-npm-10.0.3-23e96438f0-e43e4a905c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/minimatch-npm-10.2.5-f1c8297822-6bb058bd63.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/netmask-npm-2.0.2-2299510a4d-cafd28388e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/netmask-npm-2.1.1-eace0c3dfd-c78e31869b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/node-int64-npm-0.4.0-0dc04ec3b2-a6a4d8369e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/node-releases-npm-2.0.19-b123ed6240-52a0dbd25c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/normalize-path-npm-3.0.0-658ba7d77f-e008c8142b.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/npm-run-path-npm-4.0.1-7aebd8bab3-6f9353a952.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/onetime-npm-5.1.2-3ed148fa42-ffcef6fbb2.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/p-limit-npm-2.3.0-94a0310039-8da01ac53e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/p-locate-npm-4.1.0-eec6872537-1b476ad69a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/p-try-npm-2.2.0-e0390dbaf8-c36c199077.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/parse-json-npm-5.2.0-00a63b1199-77947f2253.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/path-scurry-npm-2.0.0-5a556e8161-3da4adedaa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/path-type-npm-4.0.0-10d47fc86a-666f6973f3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/picomatch-npm-2.3.1-c782cfd986-26c02b8d06.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pirates-npm-4.0.7-5e4ee2f078-a51f108dd8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pkg-dir-npm-4.2.0-2b5d0a8d32-c56bda7769.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pretty-format-npm-30.0.5-12c8203223-9f6cf1af5c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pure-rand-npm-7.0.1-c1074fa9ee-9cade41030.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/react-is-npm-18.3.1-370a81e1e9-f2f1e60010.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/resolve-cwd-npm-3.0.0-e6f4e296bf-e608a3ebd1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/resolve-from-npm-5.0.0-15c9db4d33-b21cb7f1fb.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/rimraf-npm-6.0.1-2d0b0aeb1b-b30b6b0727.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/rollup-plugin-copy-npm-3.5.0-a5e02864e9-163a27756f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/signal-exit-npm-3.0.7-bd270458a3-25d272fa73.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/slash-npm-3.0.0-b87de2279a-e18488c6a4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/socket.io-parser-npm-4.2.4-bf87f78bcd-9383b30358.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/source-map-npm-0.6.1-1a3621db16-ab55398007.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/source-map-support-npm-0.5.13-377dfd7321-137539f8c4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/sprintf-js-npm-1.0.3-73f0a322fa-ecadcfe4c7.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/stack-utils-npm-2.0.6-2be1099696-651c9f8766.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/string-length-npm-4.0.2-675173c7a2-1cd77409c3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/strip-bom-npm-4.0.0-97d367a64d-26abad1172.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/strip-final-newline-npm-2.0.0-340c4f7c66-bddf8ccd47.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/supports-color-npm-8.1.1-289e937149-ea1d3c275d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/synckit-npm-0.11.11-415ad819d7-f076149595.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/test-exclude-npm-6.0.0-3fb03d69df-019d33d81a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/tmpl-npm-1.0.5-d399ba37e2-f935537799.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/ts-api-utils-npm-2.5.0-6bde2b2eb9-767849383c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/type-detect-npm-4.0.8-8d8127b901-8fb9a51d3f.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/type-fest-npm-0.21.3-5ff2a9c6fd-902bd57bfa.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/undici-npm-7.24.6-57102c8005-0f5413ccb2.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/universalify-npm-0.1.2-9b22d31d2d-e70e0339f6.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/update-browserslist-db-npm-1.1.2-59b122fef6-9cb353998d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/v8-to-istanbul-npm-9.3.0-35fef658c9-968bcf1c7c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/vite-npm-7.1.11-fb19835f08-c4aa7f47b1.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/vue-router-npm-5.0.3-3b160d99bd-ccb465bf62.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/vuetify-npm-3.12.3-97035921e1-a65987e60a.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/walker-npm-1.0.8-b0a05b9478-a17e037bcc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/write-file-atomic-npm-5.0.1-52283db6ee-e8c850a8e3.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/yallist-npm-3.1.1-a568a556b4-c66a5c46bc.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/yaml-npm-2.8.2-6cbf7c73c4-703e4dc1e3.zip is excluded by !**/.yarn/**, !**/*.zip
  • backend/__tests__/__snapshots__/markdown.spec.cjs.snap is excluded by !**/*.snap
  • backend/__tests__/__snapshots__/markdown.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/__snapshots__/services.projects.spec.cjs.snap is excluded by !**/*.snap
  • backend/__tests__/__snapshots__/services.projects.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.cloudProviderCredentials.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.cloudprofiles.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.controllerregistrations.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.info.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.managedseeds.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.members.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.resourceQuotas.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.seeds.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.shoots.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.terminals.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.tickets.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/api.user.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/auth.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/config.spec.js.snap is excluded by !**/*.snap
  • backend/__tests__/acceptance/__snapshots__/io.spec.js.snap is excluded by !**/*.snap
📒 Files selected for processing (35)
  • .pnp.cjs
  • .yarnrc.yml
  • backend/__fixtures__/env.cjs
  • backend/__fixtures__/index.cjs
  • backend/__mocks__/@gardener-dashboard/kube-client.cjs
  • backend/__mocks__/@gardener-dashboard/kube-config.cjs
  • backend/__mocks__/@gardener-dashboard/logger.cjs
  • backend/__mocks__/@gardener-dashboard/markdown.cjs
  • backend/__mocks__/@gardener-dashboard/monitor.cjs
  • backend/__mocks__/p-limit.cjs
  • backend/__test_helpers__/p-event.cjs
  • backend/__tests__/acceptance/api.cloudProviderCredentials.spec.js
  • backend/__tests__/acceptance/api.cloudprofiles.spec.js
  • backend/__tests__/acceptance/api.controllerregistrations.spec.js
  • backend/__tests__/acceptance/api.info.spec.js
  • backend/__tests__/acceptance/api.managedseeds.spec.js
  • backend/__tests__/acceptance/api.members.spec.js
  • backend/__tests__/acceptance/api.projects.spec.js
  • backend/__tests__/acceptance/api.resourceQuotas.spec.js
  • backend/__tests__/acceptance/api.seeds.spec.js
  • backend/__tests__/acceptance/api.shoots.spec.js
  • backend/__tests__/acceptance/api.terminals.spec.js
  • backend/__tests__/acceptance/api.tickets.spec.js
  • backend/__tests__/acceptance/api.user.spec.js
  • backend/__tests__/acceptance/auth.spec.js
  • backend/__tests__/acceptance/config.spec.js
  • backend/__tests__/acceptance/healthz.spec.js
  • backend/__tests__/acceptance/io.cors.spec.js
  • backend/__tests__/acceptance/io.spec.js
  • backend/__tests__/acceptance/openapi.spec.js
  • backend/__tests__/acceptance/webhook.spec.js
  • backend/__tests__/cache.spec.js
  • backend/__tests__/cache.tickets.spec.js
  • backend/__tests__/config.spec.js
  • backend/__tests__/debug.spec.js
💤 Files with no reviewable changes (9)
  • backend/mocks/@gardener-dashboard/markdown.cjs
  • backend/fixtures/env.cjs
  • backend/test_helpers/p-event.cjs
  • backend/mocks/p-limit.cjs
  • backend/mocks/@gardener-dashboard/monitor.cjs
  • backend/mocks/@gardener-dashboard/kube-client.cjs
  • backend/mocks/@gardener-dashboard/logger.cjs
  • backend/mocks/@gardener-dashboard/kube-config.cjs
  • backend/fixtures/index.cjs

Comment thread backend/package.json
Comment thread backend/package.json Outdated
Comment thread docs/development/testing.md Outdated
Comment thread frontend/vitest.config.js Outdated
Comment thread diagram/backend-highlevel-dependency-diagram.html Outdated
Comment thread scripts/vitest-node.sh Outdated
@gardener-prow gardener-prow Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 15, 2026
grolu added 12 commits April 16, 2026 10:06
- Moved Tests to __tests__ folders
- Removed common js transpilation (rollup)
- Rewired scripts to execute vitest with test / coverage commands
…als instead of manually listing vitest globals
- Fixed charts coverage
- Removed obsolete snapshot
  - .vscode/settings.json — removed jestrunner.* settings, added vitest.nodeExecutable +
  vitest.configSearchPatternExclude
  - .vscode/extensions.json — replaced firsttris.vscode-jest-runner with vitest.explorer
  - frontend/vitest.config.js — new, standalone test config (extracted from vite.config.js, avoids vuetify
  plugin PnP issues)
  - frontend/vite.config.js — removed dead if (mode === 'test') block (now in dedicated vitest config)
  - scripts/vitest-node.sh — new, PnP wrapper for vitest.explorer (loads .pnp.cjs before Node)
  - scripts/test.cjs — deleted, jest-runner wrapper no longer needed
  - scripts/helper.cjs — deleted, only used by test.cjs

  Dependency fixes:
  - package.json (root) — added vitest + jsdom as devDependencies (needed by vitest.explorer for PnP resolution)
  - backend/package.json — added missing cross-env devDependency
  - packages/test-utils/package.json — removed unused eslint-plugin-jest

  Docs:
  - docs/development/testing.md — rewritten from Jest to Vitest

  Auto-generated:
  - .pnp.cjs, yarn.lock, .yarn/cache/* — dependency changes
  - diagram/*.html
@gardener-prow gardener-prow Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 16, 2026
Copy link
Copy Markdown
Member

@petersutter petersutter left a comment

Choose a reason for hiding this comment

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

/lgtm
/approve
🥳

@gardener-prow gardener-prow Bot added the lgtm Indicates that a PR is ready to be merged. label Apr 16, 2026
@gardener-prow
Copy link
Copy Markdown

gardener-prow Bot commented Apr 16, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: petersutter

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@gardener-prow gardener-prow Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 16, 2026
@gardener-prow
Copy link
Copy Markdown

gardener-prow Bot commented Apr 16, 2026

LGTM label has been added.

DetailsGit tree hash: d03f3d9f75a14595498f8eb79701ff32fd7a92ec

@gardener-prow gardener-prow Bot merged commit 3636d95 into master Apr 16, 2026
36 checks passed
@gardener-prow gardener-prow Bot deleted the enh/vitest branch April 16, 2026 09:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cla: yes Indicates the PR's author has signed the cla-assistant.io CLA. kind/enhancement Enhancement, improvement, extension lgtm Indicates that a PR is ready to be merged. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants