@@ -3,11 +3,6 @@ import { generate_coverage } from './test/generate-coverage.js'
33import { calculate_coverage } from './index.js'
44import type { Coverage } from './parse-coverage.js'
55import { format } from '@projectwallace/format-css'
6- import { DOMParser } from 'linkedom'
7-
8- function html_parser ( html : string ) {
9- return new DOMParser ( ) . parseFromString ( html , 'text/html' )
10- }
116
127test . describe ( 'from <style> tag' , ( ) => {
138 let coverage : Coverage [ ]
@@ -32,8 +27,8 @@ test.describe('from <style> tag', () => {
3227 coverage = ( await generate_coverage ( html ) ) as Coverage [ ]
3328 } )
3429
35- test ( 'counts totals' , ( ) => {
36- let result = calculate_coverage ( coverage , html_parser )
30+ test ( 'counts totals' , async ( ) => {
31+ let result = await calculate_coverage ( coverage )
3732 expect . soft ( result . total_files_found ) . toBe ( 1 )
3833 expect . soft ( result . total_bytes ) . toBe ( 80 )
3934 expect . soft ( result . used_bytes ) . toBe ( 42 )
@@ -45,8 +40,8 @@ test.describe('from <style> tag', () => {
4540 expect . soft ( result . total_stylesheets ) . toBe ( 1 )
4641 } )
4742
48- test ( 'calculates stats per stylesheet' , ( ) => {
49- let result = calculate_coverage ( coverage , html_parser )
43+ test ( 'calculates stats per stylesheet' , async ( ) => {
44+ let result = await calculate_coverage ( coverage )
5045 let sheet = result . coverage_per_stylesheet . at ( 0 ) !
5146 expect . soft ( sheet . url ) . toBe ( 'http://localhost/test.html' )
5247 expect . soft ( sheet . ranges ) . toEqual ( [
@@ -89,8 +84,8 @@ test.describe('from <link rel="stylesheet">', () => {
8984 coverage = ( await generate_coverage ( html , { link_css : css } ) ) as Coverage [ ]
9085 } )
9186
92- test ( 'counts totals' , ( ) => {
93- let result = calculate_coverage ( coverage , html_parser )
87+ test ( 'counts totals' , async ( ) => {
88+ let result = await calculate_coverage ( coverage )
9489 expect . soft ( result . total_files_found ) . toBe ( 1 )
9590 expect . soft ( result . total_bytes ) . toBe ( 174 )
9691 expect . soft ( result . used_bytes ) . toBe ( 91 )
@@ -102,8 +97,8 @@ test.describe('from <link rel="stylesheet">', () => {
10297 expect . soft ( result . total_stylesheets ) . toBe ( 1 )
10398 } )
10499
105- test ( 'calculates stats per stylesheet' , ( ) => {
106- let result = calculate_coverage ( coverage , html_parser )
100+ test ( 'calculates stats per stylesheet' , async ( ) => {
101+ let result = await calculate_coverage ( coverage )
107102 let sheet = result . coverage_per_stylesheet . at ( 0 ) !
108103 expect . soft ( sheet . url ) . toBe ( 'http://localhost/style.css' )
109104 expect . soft ( sheet . ranges ) . toEqual ( [
@@ -148,17 +143,17 @@ test.describe('from coverage data downloaded directly from the browser as JSON',
148143 } ,
149144 ]
150145
151- test ( 'counts totals' , ( ) => {
152- let result = calculate_coverage ( coverage , html_parser )
146+ test ( 'counts totals' , async ( ) => {
147+ let result = await calculate_coverage ( coverage )
153148 expect . soft ( result . covered_lines ) . toBe ( 9 )
154149 expect . soft ( result . uncovered_lines ) . toBe ( 5 )
155150 expect . soft ( result . total_lines ) . toBe ( 14 )
156151 expect . soft ( result . line_coverage_ratio ) . toBe ( 9 / 14 )
157152 expect . soft ( result . total_stylesheets ) . toBe ( 1 )
158153 } )
159154
160- test ( 'extracts and formats css' , ( ) => {
161- let result = calculate_coverage ( coverage , html_parser )
155+ test ( 'extracts and formats css' , async ( ) => {
156+ let result = await calculate_coverage ( coverage )
162157 expect ( result . coverage_per_stylesheet . at ( 0 ) ?. text ) . toEqual (
163158 format ( `h1 {
164159 color: blue;
@@ -178,8 +173,8 @@ test.describe('from coverage data downloaded directly from the browser as JSON',
178173 )
179174 } )
180175
181- test ( 'calculates line coverage' , ( ) => {
182- let result = calculate_coverage ( coverage , html_parser )
176+ test ( 'calculates line coverage' , async ( ) => {
177+ let result = await calculate_coverage ( coverage )
183178 expect ( result . coverage_per_stylesheet . at ( 0 ) ?. line_coverage ) . toEqual (
184179 new Uint8Array ( [
185180 // h1 {}
@@ -198,8 +193,8 @@ test.describe('from coverage data downloaded directly from the browser as JSON',
198193 )
199194 } )
200195
201- test ( 'calculates chunks' , ( ) => {
202- let result = calculate_coverage ( coverage , html_parser )
196+ test ( 'calculates chunks' , async ( ) => {
197+ let result = await calculate_coverage ( coverage )
203198 expect ( result . coverage_per_stylesheet . at ( 0 ) ?. chunks ) . toEqual ( [
204199 { start_line : 1 , is_covered : true , end_line : 4 , total_lines : 4 } ,
205200 { start_line : 5 , is_covered : false , end_line : 8 , total_lines : 4 } ,
@@ -209,22 +204,19 @@ test.describe('from coverage data downloaded directly from the browser as JSON',
209204 ] )
210205 } )
211206
212- test ( 'calculates chunks for fully covered file' , ( ) => {
213- let result = calculate_coverage (
214- [
215- {
216- url : 'https://example.com' ,
217- ranges : [
218- {
219- start : 0 ,
220- end : 19 ,
221- } ,
222- ] ,
223- text : 'h1 { color: blue; }' ,
224- } ,
225- ] ,
226- html_parser ,
227- )
207+ test ( 'calculates chunks for fully covered file' , async ( ) => {
208+ let result = await calculate_coverage ( [
209+ {
210+ url : 'https://example.com' ,
211+ ranges : [
212+ {
213+ start : 0 ,
214+ end : 19 ,
215+ } ,
216+ ] ,
217+ text : 'h1 { color: blue; }' ,
218+ } ,
219+ ] )
228220 expect ( result . coverage_per_stylesheet . at ( 0 ) ?. text ) . toEqual ( 'h1 {\n\tcolor: blue;\n}' )
229221 expect ( result . coverage_per_stylesheet . at ( 0 ) ?. chunks ) . toEqual ( [
230222 {
@@ -236,17 +228,14 @@ test.describe('from coverage data downloaded directly from the browser as JSON',
236228 ] )
237229 } )
238230
239- test ( 'calculates chunks for fully uncovered file' , ( ) => {
240- let result = calculate_coverage (
241- [
242- {
243- url : 'https://example.com' ,
244- ranges : [ ] ,
245- text : 'h1 { color: blue; }' ,
246- } ,
247- ] ,
248- html_parser ,
249- )
231+ test ( 'calculates chunks for fully uncovered file' , async ( ) => {
232+ let result = await calculate_coverage ( [
233+ {
234+ url : 'https://example.com' ,
235+ ranges : [ ] ,
236+ text : 'h1 { color: blue; }' ,
237+ } ,
238+ ] )
250239 expect ( result . coverage_per_stylesheet . at ( 0 ) ?. chunks ) . toEqual ( [
251240 {
252241 start_line : 1 ,
@@ -258,8 +247,8 @@ test.describe('from coverage data downloaded directly from the browser as JSON',
258247 } )
259248} )
260249
261- test ( 'handles empty input' , ( ) => {
262- let result = calculate_coverage ( [ ] , html_parser )
250+ test ( 'handles empty input' , async ( ) => {
251+ let result = await calculate_coverage ( [ ] )
263252 expect ( result . total_files_found ) . toBe ( 0 )
264253 expect ( result . total_bytes ) . toBe ( 0 )
265254 expect ( result . used_bytes ) . toBe ( 0 )
@@ -271,31 +260,3 @@ test('handles empty input', () => {
271260 expect ( result . total_stylesheets ) . toBe ( 0 )
272261 expect ( result . coverage_per_stylesheet ) . toEqual ( [ ] )
273262} )
274-
275- test . describe ( 'garbage input' , ( ) => {
276- test ( 'garbage Array' , ( ) => {
277- expect ( ( ) =>
278- calculate_coverage (
279- [
280- {
281- test : 1 ,
282- garbage : true ,
283- } ,
284- ] as unknown as Coverage [ ] ,
285- html_parser ,
286- ) ,
287- ) . toThrow ( 'No valid coverage data found' )
288- } )
289-
290- test ( 'garbage Object' , ( ) => {
291- expect ( ( ) =>
292- calculate_coverage (
293- {
294- test : 1 ,
295- garbage : true ,
296- } as unknown as Coverage [ ] ,
297- html_parser ,
298- ) ,
299- ) . toThrow ( 'No valid coverage data found' )
300- } )
301- } )
0 commit comments