Skip to content

Commit 3d73fd8

Browse files
authored
chore|fix(deps|unit) vitest v4 update
update dependencies and unit tests for v4 of vitest fixes #80 fixes #79 fixes #78 fixes #77 fixes #76 fixes #75 * lint
1 parent 4cfc89d commit 3d73fd8

File tree

10 files changed

+222
-230
lines changed

10 files changed

+222
-230
lines changed

bun.lock

Lines changed: 69 additions & 157 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 6 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,32 +57,32 @@
5757
"dependencies": {
5858
"@html-eslint/eslint-plugin": "^0.47.0",
5959
"@html-eslint/parser": "^0.47.0",
60-
"@playwright/test": "^1.56.0",
61-
"@stylistic/eslint-plugin": "^5.4.0",
62-
"@tailwindcss/postcss": "^4.1.14",
60+
"@playwright/test": "^1.56.1",
61+
"@stylistic/eslint-plugin": "^5.5.0",
62+
"@tailwindcss/postcss": "^4.1.16",
6363
"@testing-library/dom": "^10.4.1",
6464
"@testing-library/jest-dom": "^6.9.1",
6565
"@testing-library/user-event": "^14.6.1",
66-
"@vitest/coverage-v8": "3.2.4",
67-
"bun": "^1.3.0",
66+
"@vitest/coverage-v8": "4.0.4",
67+
"bun": "^1.3.1",
6868
"cssnano": "^7.1.1",
6969
"cssnano-preset-advanced": "^7.0.9",
70-
"eslint": "^9.37.0",
70+
"eslint": "^9.38.0",
7171
"express": "^5.1.0",
7272
"express-session": "^1.18.2",
7373
"express-ws": "^5.0.2",
74-
"jsdom": "^27.0.0",
75-
"playwright": "^1.56.0",
74+
"jsdom": "^27.0.1",
75+
"playwright": "^1.56.1",
7676
"postcss": "^8.5.6",
7777
"prettier": "^3.6.2",
7878
"serve": "^14.2.5",
79-
"tailwindcss": "^4.1.14",
79+
"tailwindcss": "^4.1.16",
8080
"terser": "^5.44.0",
81-
"vite": "^7.1.11",
81+
"vite": "^7.1.12",
8282
"vite-plugin-pwa": "^1.1.0",
8383
"vite-plugin-sitemap": "^0.8.2",
84-
"vite-plugin-static-copy": "^3.1.3",
85-
"vitest": "^3.2.4"
84+
"vite-plugin-static-copy": "^3.1.4",
85+
"vitest": "^4.0.4"
8686
},
8787
"overrides": {
8888
"magic-string": "^0.30.17"

tests/unit/client/worker.test.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable prefer-arrow-callback */
12
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
23

34
// Mock WebSocket and self since we're testing a Web Worker
@@ -23,13 +24,17 @@ describe('WebSocket Worker', () => {
2324
readyState: 1, // WebSocket.OPEN
2425
};
2526

26-
global.WebSocket.mockImplementation(() => mockWebSocket);
27+
global.WebSocket.mockImplementation(function () {
28+
return mockWebSocket;
29+
});
2730

2831
// Mock FileReader
29-
global.FileReader.mockImplementation(() => ({
30-
addEventListener: vi.fn(),
31-
readAsArrayBuffer: vi.fn(),
32-
}));
32+
global.FileReader.mockImplementation(function () {
33+
return {
34+
addEventListener: vi.fn(),
35+
readAsArrayBuffer: vi.fn(),
36+
};
37+
});
3338

3439
// Import and execute the worker code
3540
// Since worker.js uses self.onmessage, we need to simulate loading it
@@ -309,7 +314,7 @@ describe('WebSocket Worker', () => {
309314
});
310315

311316
it('should handle WebSocket creation exception', () => {
312-
WebSocket.mockImplementation(() => {
317+
WebSocket.mockImplementation(function () {
313318
throw new Error('WebSocket not supported');
314319
});
315320

@@ -589,7 +594,9 @@ describe('WebSocket Worker', () => {
589594
addEventListener: vi.fn(),
590595
readAsArrayBuffer: vi.fn(),
591596
};
592-
global.FileReader.mockImplementation(() => mockFileReader);
597+
global.FileReader.mockImplementation(function () {
598+
return mockFileReader;
599+
});
593600

594601
const binaryData = new ArrayBuffer(100);
595602
const messageEvent = { data: binaryData };

tests/unit/file.test.js

Lines changed: 63 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable prefer-arrow-callback */
12
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
23

34
const canvasDataURL =
@@ -67,10 +68,16 @@ const mockDocument = {
6768
dispatchEvent: vi.fn(),
6869
};
6970

70-
const mockURL = {
71-
createObjectURL: vi.fn(() => 'blob:mock-url'),
72-
revokeObjectURL: vi.fn(),
73-
};
71+
const mockURL = vi.fn(function (url, _base) {
72+
this.href = url;
73+
this.protocol = '';
74+
this.hostname = '';
75+
this.port = '';
76+
this.pathname = '';
77+
return this;
78+
});
79+
mockURL.createObjectURL = vi.fn(() => 'blob:mock-url');
80+
mockURL.revokeObjectURL = vi.fn();
7481

7582
const mockFileReader = class {
7683
constructor() {
@@ -92,11 +99,17 @@ describe('File Module', () => {
9299
global.URL = mockURL;
93100
global.window = { URL: mockURL };
94101
global.FileReader = mockFileReader;
95-
global.Blob = vi.fn();
102+
global.Blob = vi.fn(function (parts, options) {
103+
this.parts = parts;
104+
this.options = options;
105+
return this;
106+
});
96107
global.btoa = vi.fn(str => Buffer.from(str, 'binary').toString('base64'));
97108
global.atob = vi.fn(str => Buffer.from(str, 'base64').toString('binary'));
98109
global.navigator = { userAgent: 'Chrome/90.0' };
99-
global.MouseEvent = vi.fn(() => ({ bubbles: true, cancelable: true }));
110+
global.MouseEvent = vi.fn(function () {
111+
return { bubbles: true, cancelable: true };
112+
});
100113

101114
// Import the module fresh for each test
102115
const fileModule = await import('../../src/js/client/file.js');
@@ -191,17 +204,21 @@ describe('File Module', () => {
191204
size: 100,
192205
};
193206

194-
const mockFileReader = new FileReader();
195-
global.FileReader = vi.fn(() => mockFileReader);
207+
const mockFileReaderInstance = new FileReader();
208+
global.FileReader = vi.fn(function () {
209+
return mockFileReaderInstance;
210+
});
196211

197212
const callback = vi.fn();
198213
Load.file(mockFile, callback);
199214

200-
expect(mockFileReader.addEventListener).toHaveBeenCalledWith(
215+
expect(mockFileReaderInstance.addEventListener).toHaveBeenCalledWith(
201216
'load',
202217
expect.any(Function),
203218
);
204-
expect(mockFileReader.readAsArrayBuffer).toHaveBeenCalledWith(mockFile);
219+
expect(mockFileReaderInstance.readAsArrayBuffer).toHaveBeenCalledWith(
220+
mockFile,
221+
);
205222
});
206223

207224
it('should handle BIN file loading setup', () => {
@@ -413,7 +430,9 @@ describe('File Module', () => {
413430
describe('Date Handling', () => {
414431
it('should format dates correctly in SAUCE records', () => {
415432
const mockDate = new Date('2023-03-15');
416-
vi.spyOn(global, 'Date').mockImplementation(() => mockDate);
433+
vi.spyOn(global, 'Date').mockImplementation(function () {
434+
return mockDate;
435+
});
417436

418437
Save.ans();
419438

@@ -602,7 +621,9 @@ describe('File Module', () => {
602621
};
603622

604623
// Mock FileReader constructor to return our instance
605-
global.FileReader = vi.fn(() => mockReaderInstance);
624+
global.FileReader = vi.fn(function () {
625+
return mockReaderInstance;
626+
});
606627

607628
Load.file(mockFile, callback);
608629

@@ -626,7 +647,9 @@ describe('File Module', () => {
626647
readAsArrayBuffer: vi.fn(),
627648
};
628649

629-
global.FileReader = vi.fn(() => mockReaderInstance);
650+
global.FileReader = vi.fn(function () {
651+
return mockReaderInstance;
652+
});
630653

631654
Load.file(mockFile, callback);
632655

@@ -650,7 +673,9 @@ describe('File Module', () => {
650673
readAsArrayBuffer: vi.fn(),
651674
};
652675

653-
global.FileReader = vi.fn(() => mockReaderInstance);
676+
global.FileReader = vi.fn(function () {
677+
return mockReaderInstance;
678+
});
654679

655680
Load.file(mockFile, callback);
656681

@@ -674,7 +699,9 @@ describe('File Module', () => {
674699
readAsArrayBuffer: vi.fn(),
675700
};
676701

677-
global.FileReader = vi.fn(() => mockReaderInstance);
702+
global.FileReader = vi.fn(function () {
703+
return mockReaderInstance;
704+
});
678705

679706
Load.file(mockFile, callback);
680707

@@ -708,7 +735,9 @@ describe('File Module', () => {
708735
readAsArrayBuffer: vi.fn(),
709736
};
710737

711-
global.FileReader = vi.fn(() => mockReaderInstance);
738+
global.FileReader = vi.fn(function () {
739+
return mockReaderInstance;
740+
});
712741

713742
expect(() => Load.file(mockFile, callback)).not.toThrow();
714743
expect(mockReaderInstance.readAsArrayBuffer).toHaveBeenCalledWith(
@@ -739,7 +768,9 @@ describe('File Module', () => {
739768
readAsArrayBuffer: vi.fn(),
740769
};
741770

742-
global.FileReader = vi.fn(() => mockReaderInstance);
771+
global.FileReader = vi.fn(function () {
772+
return mockReaderInstance;
773+
});
743774

744775
Load.file(mockFile, callback);
745776

@@ -783,7 +814,9 @@ describe('File Module', () => {
783814
readAsArrayBuffer: vi.fn(),
784815
};
785816

786-
global.FileReader = vi.fn(() => mockReaderInstance);
817+
global.FileReader = vi.fn(function () {
818+
return mockReaderInstance;
819+
});
787820

788821
Load.file(mockFile, callback);
789822

@@ -1002,7 +1035,9 @@ describe('File Module', () => {
10021035
readAsArrayBuffer: vi.fn(),
10031036
};
10041037

1005-
global.FileReader = vi.fn(() => mockReaderInstance);
1038+
global.FileReader = vi.fn(function () {
1039+
return mockReaderInstance;
1040+
});
10061041

10071042
Load.file(mockFile, callback);
10081043

@@ -1026,7 +1061,9 @@ describe('File Module', () => {
10261061
readAsArrayBuffer: vi.fn(),
10271062
};
10281063

1029-
global.FileReader = vi.fn(() => mockReaderInstance);
1064+
global.FileReader = vi.fn(function () {
1065+
return mockReaderInstance;
1066+
});
10301067

10311068
Load.file(mockFile, callback);
10321069

@@ -1050,7 +1087,9 @@ describe('File Module', () => {
10501087
readAsArrayBuffer: vi.fn(),
10511088
};
10521089

1053-
global.FileReader = vi.fn(() => mockReaderInstance);
1090+
global.FileReader = vi.fn(function () {
1091+
return mockReaderInstance;
1092+
});
10541093

10551094
Load.file(mockFile, callback);
10561095

@@ -1081,7 +1120,9 @@ describe('File Module', () => {
10811120
readAsArrayBuffer: vi.fn(),
10821121
};
10831122

1084-
global.FileReader = vi.fn(() => mockReaderInstance);
1123+
global.FileReader = vi.fn(function () {
1124+
return mockReaderInstance;
1125+
});
10851126

10861127
expect(() => Load.file(file, callback)).not.toThrow();
10871128
expect(mockReaderInstance.readAsArrayBuffer).toHaveBeenCalledWith(file);

tests/unit/font.test.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable prefer-arrow-callback */
12
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
23
import {
34
loadFontFromXBData,
@@ -57,13 +58,15 @@ describe('Font Module - Basic Tests', () => {
5758
};
5859

5960
// Reset global Image mock
60-
global.Image = vi.fn(() => ({
61-
addEventListener: vi.fn(),
62-
removeEventListener: vi.fn(),
63-
src: '',
64-
width: 128,
65-
height: 256,
66-
}));
61+
global.Image = vi.fn(function () {
62+
return {
63+
addEventListener: vi.fn(),
64+
removeEventListener: vi.fn(),
65+
src: '',
66+
width: 128,
67+
height: 256,
68+
};
69+
});
6770
});
6871

6972
afterEach(() => {
@@ -110,7 +113,9 @@ describe('Font Module - Basic Tests', () => {
110113
height: 256,
111114
};
112115

113-
global.Image = vi.fn(() => mockImage);
116+
global.Image = vi.fn(function () {
117+
return mockImage;
118+
});
114119
});
115120

116121
it('should setup image loading correctly', async () => {
@@ -276,7 +281,9 @@ describe('Font Module - Basic Tests', () => {
276281
width: 128,
277282
height: 256,
278283
};
279-
global.Image = vi.fn(() => mockImage);
284+
global.Image = vi.fn(function () {
285+
return mockImage;
286+
});
280287

281288
// Test with letter spacing enabled
282289
loadFontFromImage('TestFont', true, mockPalette);

0 commit comments

Comments
 (0)