Skip to content

Commit 315e2d8

Browse files
authored
chore: add test for apps/website (#156)
1 parent c60bc08 commit 315e2d8

14 files changed

Lines changed: 190 additions & 8 deletions

File tree

packages/global/snap-tests/new-monorepo/snap.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Creating monorepo project: my-project...
3838

3939
Next steps:
4040
cd my-project
41+
git init
4142
vite run ready
4243
vite run dev
4344

packages/global/snap-tests/new-singlerepo/snap.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ Creating singlerepo project: my-project...
55

66
Next steps:
77
cd my-project
8+
git init
89
vite run ready
910
vite run dev

packages/global/src/scaffold.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,8 @@ export async function scaffold(options: ScaffoldOptions = {}) {
243243
console.log(`✅ Successfully created ${projectType} project: ${projectName}`);
244244
console.log('\nNext steps:');
245245
console.log(` cd ${projectName}`);
246+
// TODO: need git init avoid oxlint scan node_modules
247+
console.log(' git init');
246248
console.log(' vite run ready');
247249
console.log(' vite run dev');
248250

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2+
import { setupCounter } from '../src/counter.ts';
3+
4+
describe('setupCounter', () => {
5+
let button: HTMLButtonElement;
6+
7+
beforeEach(() => {
8+
// Create a button element for testing
9+
button = document.createElement('button');
10+
button.id = 'counter';
11+
document.body.appendChild(button);
12+
});
13+
14+
afterEach(() => {
15+
// Clean up the DOM after each test
16+
document.body.removeChild(button);
17+
});
18+
19+
it('should initialize counter with 0', () => {
20+
setupCounter(button);
21+
expect(button.innerHTML).toBe('count is 0');
22+
});
23+
24+
it('should increment counter on click', () => {
25+
setupCounter(button);
26+
27+
// Initial state
28+
expect(button.innerHTML).toBe('count is 0');
29+
30+
// First click
31+
button.click();
32+
expect(button.innerHTML).toBe('count is 1');
33+
34+
// Second click
35+
button.click();
36+
expect(button.innerHTML).toBe('count is 2');
37+
});
38+
39+
it('should handle multiple clicks correctly', () => {
40+
setupCounter(button);
41+
42+
// Click 5 times
43+
for (let i = 0; i < 5; i++) {
44+
button.click();
45+
}
46+
47+
expect(button.innerHTML).toBe('count is 5');
48+
});
49+
});

packages/global/templates/monorepo-app/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66
"scripts": {
77
"dev": "vite dev",
88
"build": "vite build",
9-
"preview": "vite preview"
9+
"preview": "vite preview",
10+
"test": "vite test"
1011
},
1112
"devDependencies": {
13+
"happy-dom": "catalog:",
1214
"typescript": "catalog:",
13-
"vite": "catalog:"
15+
"vite": "catalog:",
16+
"vitest": "catalog:"
1417
}
1518
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { defineConfig } from 'vite';
2+
3+
export default defineConfig({
4+
test: {
5+
environment: 'happy-dom',
6+
},
7+
});
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2+
import { setupCounter } from '../src/counter.ts';
3+
4+
describe('setupCounter', () => {
5+
let button: HTMLButtonElement;
6+
7+
beforeEach(() => {
8+
// Create a button element for testing
9+
button = document.createElement('button');
10+
button.id = 'counter';
11+
document.body.appendChild(button);
12+
});
13+
14+
afterEach(() => {
15+
// Clean up the DOM after each test
16+
document.body.removeChild(button);
17+
});
18+
19+
it('should initialize counter with 0', () => {
20+
setupCounter(button);
21+
expect(button.innerHTML).toBe('count is 0');
22+
});
23+
24+
it('should increment counter on click', () => {
25+
setupCounter(button);
26+
27+
// Initial state
28+
expect(button.innerHTML).toBe('count is 0');
29+
30+
// First click
31+
button.click();
32+
expect(button.innerHTML).toBe('count is 1');
33+
34+
// Second click
35+
button.click();
36+
expect(button.innerHTML).toBe('count is 2');
37+
});
38+
39+
it('should handle multiple clicks correctly', () => {
40+
setupCounter(button);
41+
42+
// Click 5 times
43+
for (let i = 0; i < 5; i++) {
44+
button.click();
45+
}
46+
47+
expect(button.innerHTML).toBe('count is 5');
48+
});
49+
});

packages/global/templates/monorepo/apps/website/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66
"scripts": {
77
"dev": "vite dev",
88
"build": "vite build",
9-
"preview": "vite preview"
9+
"preview": "vite preview",
10+
"test": "vite test"
1011
},
1112
"devDependencies": {
13+
"happy-dom": "catalog:",
1214
"typescript": "catalog:",
13-
"vite": "catalog:"
15+
"vite": "catalog:",
16+
"vitest": "catalog:"
1417
}
1518
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { defineConfig } from 'vite';
2+
3+
export default defineConfig({
4+
test: {
5+
environment: 'happy-dom',
6+
},
7+
});

packages/global/templates/monorepo/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"ready": "vite run lint && vite run test && vite run prepublishOnly",
88
"dev": "vite run website#dev",
99
"lint": "vite lint --type-aware",
10-
"test": "vite test --run",
10+
"test": "vite test",
1111
"prepublishOnly": "vite run -r build"
1212
},
1313
"devDependencies": {

0 commit comments

Comments
 (0)