Skip to content

Commit 920d79b

Browse files
authored
add more tests (#19)
1 parent 755d1c3 commit 920d79b

File tree

1 file changed

+134
-1
lines changed

1 file changed

+134
-1
lines changed

src/lib/test/kitchen-sink.test.ts

Lines changed: 134 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { test, expect } from '@playwright/test'
2-
import { calculate_coverage } from '../index.js'
2+
import { calculate_coverage, type Coverage } from '../index.js'
3+
import { generate_coverage } from './generate-coverage.js'
34

45
test('project wallace Container component', async () => {
56
const coverage = [
@@ -35,3 +36,135 @@ test('project wallace Container component', async () => {
3536
expect.soft(chunk3?.end_line).toEqual(44)
3637
expect.soft(chunk3?.total_lines).toEqual(4)
3738
})
39+
40+
test.describe('comment coverage', () => {
41+
let html = `
42+
<!doctype html>
43+
<html>
44+
<head>
45+
<title>test document</title>
46+
<link rel="stylesheet" href="http://localhost/style.css">
47+
</head>
48+
<body>
49+
<h1>Hello world</h1>
50+
</body>
51+
</html>
52+
`
53+
54+
test('leading line comment is marked as uncovered', async () => {
55+
let css = `
56+
/* start comment */
57+
h1 { color: blue; }
58+
`
59+
let coverage = (await generate_coverage(html, { link_css: css })) as Coverage[]
60+
let result = await calculate_coverage(coverage)
61+
let sheet = result.coverage_per_stylesheet.at(0)!
62+
expect(sheet.line_coverage).toEqual(new Uint8Array([0, 1, 1, 1]))
63+
})
64+
65+
test('leading block comment is marked as uncovered', async () => {
66+
let css = `
67+
/*
68+
start comment
69+
*/
70+
h1 { color: blue; }
71+
`
72+
let coverage = (await generate_coverage(html, { link_css: css })) as Coverage[]
73+
let result = await calculate_coverage(coverage)
74+
let sheet = result.coverage_per_stylesheet.at(0)!
75+
expect(sheet.line_coverage).toEqual(new Uint8Array([0, 0, 0, 1, 1, 1]))
76+
})
77+
78+
test('trailing line comment is marked as uncovered', async () => {
79+
let css = `
80+
h1 { color: blue; }
81+
/* start comment */
82+
`
83+
let coverage = (await generate_coverage(html, { link_css: css })) as Coverage[]
84+
let result = await calculate_coverage(coverage)
85+
let sheet = result.coverage_per_stylesheet.at(0)!
86+
expect(sheet.line_coverage).toEqual(new Uint8Array([1, 1, 1, 0]))
87+
})
88+
89+
test('trailing block comment is marked as uncovered', async () => {
90+
let css = `
91+
h1 { color: blue; }
92+
/*
93+
start comment
94+
*/
95+
`
96+
let coverage = (await generate_coverage(html, { link_css: css })) as Coverage[]
97+
let result = await calculate_coverage(coverage)
98+
let sheet = result.coverage_per_stylesheet.at(0)!
99+
expect(sheet.line_coverage).toEqual(new Uint8Array([1, 1, 1, 0, 0, 0]))
100+
})
101+
})
102+
103+
test.describe('@rules', () => {
104+
let html = `
105+
<!doctype html>
106+
<html>
107+
<head>
108+
<title>test document</title>
109+
<link rel="stylesheet" href="http://localhost/style.css">
110+
</head>
111+
<body>
112+
<h1>Hello world</h1>
113+
<p>Text</p>
114+
</body>
115+
</html>
116+
`
117+
118+
test('@media at the start', async () => {
119+
let css = `
120+
@media (min-width: 100px) {
121+
body {
122+
color: green;
123+
}
124+
}
125+
126+
a { color: orangered; }
127+
`
128+
let coverage = (await generate_coverage(html, { link_css: css })) as Coverage[]
129+
let result = await calculate_coverage(coverage)
130+
let sheet = result.coverage_per_stylesheet.at(0)!
131+
// TODO: fix this, it's wildy incorrect
132+
expect(sheet.line_coverage).toEqual(new Uint8Array([1, 0, 1, 1, 1, 1, 0, 0, 0]))
133+
})
134+
135+
test('@media in middle', async () => {
136+
let css = `
137+
a { color: red; }
138+
139+
@media (min-width: 100px) {
140+
body {
141+
color: green;
142+
}
143+
}
144+
145+
a { color: orangered; }
146+
`
147+
let coverage = (await generate_coverage(html, { link_css: css })) as Coverage[]
148+
let result = await calculate_coverage(coverage)
149+
let sheet = result.coverage_per_stylesheet.at(0)!
150+
// TODO: fix this, it's wildy incorrect
151+
expect(sheet.line_coverage).toEqual(new Uint8Array([0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0]))
152+
})
153+
154+
test('@media at the end', async () => {
155+
let css = `
156+
a { color: orangered; }
157+
158+
@media (min-width: 100px) {
159+
body {
160+
color: green;
161+
}
162+
}
163+
`
164+
let coverage = (await generate_coverage(html, { link_css: css })) as Coverage[]
165+
let result = await calculate_coverage(coverage)
166+
let sheet = result.coverage_per_stylesheet.at(0)!
167+
// TODO: fix this, it's wildy incorrect
168+
expect(sheet.line_coverage).toEqual(new Uint8Array([0, 0, 0, 1, 1, 0, 1, 1, 1]))
169+
})
170+
})

0 commit comments

Comments
 (0)