diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..bc3777c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,16 @@
+.PHONY: clean/test
+clean/test:
+ sudo rm -rf coverage build .svelte-kit test-results results-e2e.xml
+
+.PHONY: clean/node
+clean/node:
+ rm -rf node_modules
+ rm package-lock.json
+
+.PHONY: ci
+ci:
+ make clean/node
+ make clean/test
+ npm ci
+ npm run build:check
+ npm run test
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 8b8f186..9fe6fe4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,8 +24,6 @@
"@testing-library/svelte": "^5.2.9",
"@types/node": "^24.10.3",
"@types/qrcode": "^1.5.6",
- "@vitest/browser": "^4.0.16",
- "@vitest/browser-playwright": "^4.0.16",
"@vitest/coverage-v8": "^4.0.16",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
@@ -41,8 +39,7 @@
"typescript": "^5.9.2",
"typescript-eslint": "^8.50.0",
"vite": "^7.3.0",
- "vitest": "^4.0.16",
- "vitest-browser-svelte": "^2.0.1"
+ "vitest": "^4.0.16"
}
},
"node_modules/@acemir/cssom": {
@@ -2408,55 +2405,6 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@vitest/browser": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.0.16.tgz",
- "integrity": "sha512-t4toy8X/YTnjYEPoY0pbDBg3EvDPg1elCDrfc+VupPHwoN/5/FNQ8Z+xBYIaEnOE2vVEyKwqYBzZ9h9rJtZVcg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@vitest/mocker": "4.0.16",
- "@vitest/utils": "4.0.16",
- "magic-string": "^0.30.21",
- "pixelmatch": "7.1.0",
- "pngjs": "^7.0.0",
- "sirv": "^3.0.2",
- "tinyrainbow": "^3.0.3",
- "ws": "^8.18.3"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "vitest": "4.0.16"
- }
- },
- "node_modules/@vitest/browser-playwright": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.0.16.tgz",
- "integrity": "sha512-I2Fy/ANdphi1yI46d15o0M1M4M0UJrUiVKkH5oKeRZZCdPg0fw/cfTKZzv9Ge9eobtJYp4BGblMzXdXH0vcl5g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@vitest/browser": "4.0.16",
- "@vitest/mocker": "4.0.16",
- "tinyrainbow": "^3.0.3"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "playwright": "*",
- "vitest": "4.0.16"
- },
- "peerDependenciesMeta": {
- "playwright": {
- "optional": false
- }
- }
- },
"node_modules/@vitest/coverage-v8": {
"version": "4.0.16",
"resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.16.tgz",
@@ -4384,6 +4332,7 @@
"integrity": "sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==",
"dev": true,
"license": "ISC",
+ "optional": true,
"dependencies": {
"pngjs": "^7.0.0"
},
@@ -4430,6 +4379,7 @@
"integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==",
"dev": true,
"license": "MIT",
+ "optional": true,
"engines": {
"node": ">=14.19.0"
}
@@ -5948,20 +5898,6 @@
}
}
},
- "node_modules/vitest-browser-svelte": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/vitest-browser-svelte/-/vitest-browser-svelte-2.0.1.tgz",
- "integrity": "sha512-z7GFio7vxaOolY+xwPUMEKuwL4KcPzB8+bepA9F0Phqag/TJ4j7IAGSwm4Y/FBh7KznsP+7aEIllMay0qDpFXw==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "svelte": "^3 || ^4 || ^5 || ^5.0.0-next.0",
- "vitest": "^4.0.0"
- }
- },
"node_modules/w3c-xmlserializer": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
diff --git a/package.json b/package.json
index 4601c89..a0bba9a 100644
--- a/package.json
+++ b/package.json
@@ -30,8 +30,6 @@
"@testing-library/svelte": "^5.2.9",
"@types/node": "^24.10.3",
"@types/qrcode": "^1.5.6",
- "@vitest/browser": "^4.0.16",
- "@vitest/browser-playwright": "^4.0.16",
"@vitest/coverage-v8": "^4.0.16",
"eslint": "^9.39.2",
"eslint-config-prettier": "^10.1.8",
@@ -47,8 +45,7 @@
"typescript": "^5.9.2",
"typescript-eslint": "^8.50.0",
"vite": "^7.3.0",
- "vitest": "^4.0.16",
- "vitest-browser-svelte": "^2.0.1"
+ "vitest": "^4.0.16"
},
"dependencies": {
"otplib": "^12.0.1",
diff --git a/tsconfig.json b/tsconfig.json
index 6fc639f..b92ccc5 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -10,7 +10,7 @@
"sourceMap": true,
"strict": true,
"moduleResolution": "bundler",
- "types": ["@testing-library/jest-dom"]
+ "types": ["@testing-library/jest-dom", "vitest/globals"]
}
// Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
// except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
diff --git a/vite.config.ts b/vite.config.ts
index 4f5fe00..0508620 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -5,6 +5,7 @@ import { svelteTesting } from '@testing-library/svelte/vite'
export default defineConfig({
plugins: [sveltekit(), svelteTesting()],
test: {
+ globals: true,
coverage: {
provider: 'v8',
include: ['src/**/*.{svelte,ts}', '!src/**/*.d.ts'],
diff --git a/vitest-setup-client.ts b/vitest-setup-client.ts
deleted file mode 100644
index 570b9f0..0000000
--- a/vitest-setup-client.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-///
-///
diff --git a/vitest-setup.js b/vitest-setup.js
index a9d0dd3..c44951a 100644
--- a/vitest-setup.js
+++ b/vitest-setup.js
@@ -1 +1 @@
-import '@testing-library/jest-dom/vitest'
+import '@testing-library/jest-dom'