From 238ca1c97f9021f6151ee89c838c9f4d35cf8a20 Mon Sep 17 00:00:00 2001
From: Marco Pasqualetti <24919330+marcalexiei@users.noreply.github.com>
Date: Sun, 22 Feb 2026 16:02:46 +0100
Subject: [PATCH] test(backend): migrate to vitest (#95)
Use `vitest` for backend tests:
- `bench` script now uses [vitest's
`bench`](https://vitest.dev/api/#bench)
- e2e test fails with same error happening now with jest:`data-testid`
attribute not present.
vitest left, jest right
---
apps/backend/jest.bench.config.js | 8 -
apps/backend/jest.config.js | 7 -
apps/backend/jest.e2e.config.js | 7 -
apps/backend/jest.private-instance.config.js | 13 -
apps/backend/jest.public-instance.config.js | 10 -
apps/backend/package.json | 18 +-
.../renderWakatimeCard.test.js.snap | 10 +-
.../tests/__snapshots__/wakatime.test.js.snap | 4 +-
.../tests/{setup.jest.js => _setup.js} | 0
...nce.jest.js => _setup.private-instance.js} | 0
apps/backend/tests/api.test.js | 13 +-
apps/backend/tests/bench/api.bench.js | 22 +-
.../tests/bench/calculateRank.bench.js | 34 +-
apps/backend/tests/bench/gist.bench.js | 34 +-
apps/backend/tests/bench/pin.bench.js | 36 +-
apps/backend/tests/bench/utils.js | 184 --
apps/backend/tests/calculateRank.test.js | 7 +-
apps/backend/tests/card.test.js | 5 +-
apps/backend/tests/color.test.js | 2 +-
apps/backend/tests/e2e/e2e.test.js | 2 +-
apps/backend/tests/fetchGist.test.js | 5 +-
apps/backend/tests/fetchRepo.test.js | 5 +-
apps/backend/tests/fetchStats.test.js | 20 +-
apps/backend/tests/fetchTopLanguages.test.js | 7 +-
apps/backend/tests/fetchWakatime.test.js | 5 +-
apps/backend/tests/flexLayout.test.js | 2 +-
apps/backend/tests/fmt.test.js | 2 +-
apps/backend/tests/gist.test.js | 25 +-
apps/backend/tests/html.test.js | 2 +-
apps/backend/tests/i18n.test.js | 2 +-
apps/backend/tests/ops.test.js | 2 +-
apps/backend/tests/pat-info.test.js | 13 +-
apps/backend/tests/pin.test.js | 29 +-
.../tests/private-instance/api.test.js | 6 +-
.../tests/private-instance/gist.test.js | 6 +-
.../tests/private-instance/pin.test.js | 10 +-
.../tests/private-instance/top-langs.test.js | 6 +-
.../backend/tests/public-instance/api.test.js | 6 +-
.../tests/public-instance/gist.test.js | 6 +-
.../backend/tests/public-instance/pin.test.js | 10 +-
.../tests/public-instance/top-langs.test.js | 6 +-
apps/backend/tests/render.test.js | 5 +-
apps/backend/tests/renderGistCard.test.js | 5 +-
apps/backend/tests/renderRepoCard.test.js | 5 +-
apps/backend/tests/renderStatsCard.test.js | 5 +-
.../tests/renderTopLanguagesCard.test.js | 7 +-
apps/backend/tests/renderWakatimeCard.test.js | 4 +-
apps/backend/tests/retryer.test.js | 13 +-
apps/backend/tests/status.up.test.js | 6 +-
apps/backend/tests/top-langs.test.js | 29 +-
apps/backend/tests/utils.js | 41 +
apps/backend/tests/wakatime.test.js | 13 +-
apps/backend/tsconfig.json | 14 +
apps/backend/vitest.config.bench.ts | 9 +
apps/backend/vitest.config.e2e.ts | 8 +
apps/backend/vitest.config.ts | 32 +
knip.jsonc | 19 +-
pnpm-lock.yaml | 2547 ++---------------
pnpm-workspace.yaml | 1 +
tsconfig.json | 3 +
60 files changed, 649 insertions(+), 2708 deletions(-)
delete mode 100644 apps/backend/jest.bench.config.js
delete mode 100644 apps/backend/jest.config.js
delete mode 100644 apps/backend/jest.e2e.config.js
delete mode 100644 apps/backend/jest.private-instance.config.js
delete mode 100644 apps/backend/jest.public-instance.config.js
rename apps/backend/tests/{setup.jest.js => _setup.js} (100%)
rename apps/backend/tests/{setup.private-instance.jest.js => _setup.private-instance.js} (100%)
delete mode 100644 apps/backend/tests/bench/utils.js
create mode 100644 apps/backend/tests/utils.js
create mode 100644 apps/backend/tsconfig.json
create mode 100644 apps/backend/vitest.config.bench.ts
create mode 100644 apps/backend/vitest.config.e2e.ts
create mode 100644 apps/backend/vitest.config.ts
diff --git a/apps/backend/jest.bench.config.js b/apps/backend/jest.bench.config.js
deleted file mode 100644
index ad77a217..00000000
--- a/apps/backend/jest.bench.config.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export default {
- clearMocks: true,
- transform: {},
- testEnvironment: "jsdom",
- coverageProvider: "v8",
- testMatch: ["/tests/bench/*.bench.{ts,js}"],
- setupFiles: ["/tests/setup.jest.js"],
-};
diff --git a/apps/backend/jest.config.js b/apps/backend/jest.config.js
deleted file mode 100644
index 64980e06..00000000
--- a/apps/backend/jest.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export default {
- coverageProvider: "v8",
- projects: [
- "/jest.public-instance.config.js",
- "/jest.private-instance.config.js",
- ],
-};
diff --git a/apps/backend/jest.e2e.config.js b/apps/backend/jest.e2e.config.js
deleted file mode 100644
index 8ac68f9b..00000000
--- a/apps/backend/jest.e2e.config.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export default {
- clearMocks: true,
- transform: {},
- testEnvironment: "node",
- coverageProvider: "v8",
- testMatch: ["/tests/e2e/*.test.{ts,js}"],
-};
diff --git a/apps/backend/jest.private-instance.config.js b/apps/backend/jest.private-instance.config.js
deleted file mode 100644
index cd7e421a..00000000
--- a/apps/backend/jest.private-instance.config.js
+++ /dev/null
@@ -1,13 +0,0 @@
-export default {
- clearMocks: true,
- transform: {},
- testEnvironment: "jsdom",
- testMatch: [
- "/tests/*.test.{ts,js}",
- "/tests/private-instance/*.test.{ts,js}",
- ],
- setupFiles: [
- "/tests/setup.jest.js",
- "/tests/setup.private-instance.jest.js",
- ],
-};
diff --git a/apps/backend/jest.public-instance.config.js b/apps/backend/jest.public-instance.config.js
deleted file mode 100644
index 11bd6944..00000000
--- a/apps/backend/jest.public-instance.config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-export default {
- clearMocks: true,
- transform: {},
- testEnvironment: "jsdom",
- testMatch: [
- "/tests/*.test.{ts,js}",
- "/tests/public-instance/*.test.{ts,js}",
- ],
- setupFiles: ["/tests/setup.jest.js"],
-};
diff --git a/apps/backend/package.json b/apps/backend/package.json
index 0371e8f1..30f621a7 100644
--- a/apps/backend/package.json
+++ b/apps/backend/package.json
@@ -19,27 +19,25 @@
"url": "https://github.com/stats-organization/github-stats-extended.git"
},
"scripts": {
- "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage",
- "test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch",
- "test:update:snapshot": "node --experimental-vm-modules node_modules/jest/bin/jest.js -u",
- "test:e2e": "node --experimental-vm-modules node_modules/jest/bin/jest.js --config jest.e2e.config.js",
+ "test": "vitest",
+ "test:update:snapshot": "vitest -u",
+ "test:e2e": "vitest --config vitest.config.e2e.ts",
"theme-readme-gen": "node scripts/generate-theme-doc",
"generate-langs-json": "node scripts/generate-langs-json",
- "lint": "npx eslint --max-warnings 0 \"./src/**/*.js\" \"./scripts/**/*.js\" \"./tests/**/*.js\" \"./api-renamed/**/*.js\" \"./themes/**/*.js\"",
- "bench": "node --experimental-vm-modules node_modules/jest/bin/jest.js --config jest.bench.config.js"
+ "bench": "vitest bench --run --config vitest.config.bench.ts"
},
"author": "Anurag Hazra",
"license": "MIT",
"devDependencies": {
- "@jest/globals": "30.2.0",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.9.1",
"@uppercod/css-to-object": "^1.1.1",
+ "@vitest/coverage-v8": "catalog:default",
"axios-mock-adapter": "^2.1.0",
"express": "^5.2.1",
- "jest": "^30.2.0",
- "jest-environment-jsdom": "^30.2.0",
- "js-yaml": "^4.1.1"
+ "js-yaml": "^4.1.1",
+ "jsdom": "28.0.0",
+ "vitest": "catalog:default"
},
"dependencies": {
"axios": "^1.13.5",
diff --git a/apps/backend/tests/__snapshots__/renderWakatimeCard.test.js.snap b/apps/backend/tests/__snapshots__/renderWakatimeCard.test.js.snap
index 3162e24e..c60b504f 100644
--- a/apps/backend/tests/__snapshots__/renderWakatimeCard.test.js.snap
+++ b/apps/backend/tests/__snapshots__/renderWakatimeCard.test.js.snap
@@ -1,6 +1,6 @@
-// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`Test Render WakaTime Card should render correctly 1`] = `
+exports[`Test Render WakaTime Card > should render correctly 1`] = `
"