Skip to content

Commit 61c33b8

Browse files
committed
chore: bootstrap vitest
Vitest configuration added. CI test workflow added. Existing UTM tests were rewrited from node:test assertions to vitest assertions.
1 parent 3c23d1a commit 61c33b8

5 files changed

Lines changed: 644 additions & 15 deletions

File tree

‎.github/workflows/test.yml‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: Unit tests
2+
3+
on: [pull_request]
4+
5+
jobs:
6+
test:
7+
name: Vitest
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v4
11+
12+
- name: Set up Node.js
13+
uses: actions/setup-node@v4
14+
with:
15+
node-version-file: '.nvmrc'
16+
17+
- name: Enable corepack for yarn version management
18+
run: corepack enable
19+
20+
- run: yarn install
21+
22+
- run: yarn test

‎package.json‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
"lint:css": "stylelint \"src/**/*{.css,.vue}\" --fix",
1111
"lint:js": "eslint src/ --fix",
1212
"lint:errors": "eslint src/ --ext .js --ext .ts --ext .vue --quiet",
13+
"test": "vitest run",
1314
"serve:prod": "http-server ./dist --push-state -c-0",
1415
"storybook": "vue-cli-service storybook:serve -p 6006 -c config/storybook -s ./public",
1516
"storybook:build": "vue-cli-service storybook:build -c config/storybook",
1617
"get-schema": "get-graphql-schema http://api-staging.hawk.so/graphql > schema.graphql",
17-
"test": "node --experimental-strip-types --test \"src/**/*.test.ts\"",
1818
"cy:run": "cypress run",
1919
"e2e:ci": "start-server-and-test serve 8080 cy:run"
2020
},
@@ -54,6 +54,7 @@
5454
"eslint-config-codex": "^2.0.3",
5555
"eslint-plugin-jsdoc": "^61.1.12",
5656
"eslint-plugin-vue": "^10.5.1",
57+
"jsdom": "^30.0.1",
5758
"postcss": "^8.5.6",
5859
"postcss-apply": "^0.12.0",
5960
"postcss-color-mod-function": "^4.1.1",
@@ -67,6 +68,7 @@
6768
"typescript-eslint": "^8.46.3",
6869
"vite": "^7.1.9",
6970
"vite-plugin-svg-icons": "^2.0.1",
71+
"vitest": "^5.0.0",
7072
"vue-eslint-parser": "^10.2.0"
7173
},
7274
"dependenciesMeta": {

‎src/components/utils/utm/utm.test.ts‎

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import assert from 'node:assert/strict';
2-
import { beforeEach, describe, it } from 'node:test';
1+
import { beforeEach, describe, expect, it, vi } from 'vitest';
32
import {
43
captureUtmFromQuery,
54
getStoredUtm,
@@ -35,7 +34,7 @@ function createMemoryStorage(): Storage {
3534

3635
describe('UTM session storage', () => {
3736
beforeEach(() => {
38-
globalThis.sessionStorage = createMemoryStorage();
37+
vi.stubGlobal('sessionStorage', createMemoryStorage());
3938
});
4039

4140
describe('getUtmFromQuery', () => {
@@ -51,7 +50,7 @@ describe('UTM session storage', () => {
5150
const result = getUtmFromQuery(query);
5251

5352
// Assert
54-
assert.deepEqual(result, {
53+
expect(result).toEqual({
5554
source: 'google',
5655
medium: 'cpc',
5756
});
@@ -68,7 +67,7 @@ describe('UTM session storage', () => {
6867
const result = getUtmFromQuery(query);
6968

7069
// Assert
71-
assert.equal(result, undefined);
70+
expect(result).toBeUndefined();
7271
});
7372
});
7473

@@ -84,7 +83,7 @@ describe('UTM session storage', () => {
8483
captureUtmFromQuery(query);
8584

8685
// Assert
87-
assert.deepEqual(JSON.parse(sessionStorage.getItem(UTM_STORAGE_KEY) ?? ''), {
86+
expect(JSON.parse(sessionStorage.getItem(UTM_STORAGE_KEY) ?? '')).toEqual({
8887
source: 'google',
8988
campaign: 'spring',
9089
});
@@ -102,7 +101,7 @@ describe('UTM session storage', () => {
102101
});
103102

104103
// Assert
105-
assert.deepEqual(getStoredUtm(), {
104+
expect(getStoredUtm()).toEqual({
106105
source: 'google',
107106
});
108107
});
@@ -121,7 +120,7 @@ describe('UTM session storage', () => {
121120
});
122121

123122
// Assert
124-
assert.deepEqual(getStoredUtm(), {
123+
expect(getStoredUtm()).toEqual({
125124
source: 'google',
126125
medium: 'cpc',
127126
campaign: 'later',
@@ -141,7 +140,7 @@ describe('UTM session storage', () => {
141140
saveDemoUtm();
142141

143142
// Assert
144-
assert.deepEqual(getStoredUtm(), {
143+
expect(getStoredUtm()).toEqual({
145144
source: 'demo',
146145
medium: 'cpc',
147146
});
@@ -160,7 +159,7 @@ describe('UTM session storage', () => {
160159
const result = getStoredUtm();
161160

162161
// Assert
163-
assert.deepEqual(result, {
162+
expect(result).toEqual({
164163
source: 'google',
165164
medium: 'cpc',
166165
});
@@ -172,7 +171,7 @@ describe('UTM session storage', () => {
172171
const result = getStoredUtm();
173172

174173
// Assert
175-
assert.equal(result, undefined);
174+
expect(result).toBeUndefined();
176175
});
177176

178177
it('should return undefined for invalid stored JSON', () => {
@@ -183,7 +182,7 @@ describe('UTM session storage', () => {
183182
const result = getStoredUtm();
184183

185184
// Assert
186-
assert.equal(result, undefined);
185+
expect(result).toBeUndefined();
187186
});
188187
});
189188
});

‎vitest.config.ts‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { defineConfig } from 'vitest/config'
2+
import path from 'path'
3+
4+
export default defineConfig({
5+
test: {
6+
include: ['src/**/*.test.ts'],
7+
environment: 'jsdom'
8+
},
9+
resolve: {
10+
alias: {
11+
'@': path.resolve(__dirname, 'src')
12+
}
13+
}
14+
})

0 commit comments

Comments
 (0)