@@ -11,7 +11,7 @@ const defaultConfig = {
1111  outputDir : 'output/coverage' , 
1212} ; 
1313
14- const  supportedHelpers  =  [ 'Puppeteer' ,  'Playwright' ] ; 
14+ const  supportedHelpers  =  [ 'Puppeteer' ,  'Playwright' ,   'WebDriver' ] ; 
1515
1616const  v8CoverageHelpers  =  { 
1717  Playwright : { 
@@ -61,6 +61,33 @@ const v8CoverageHelpers = {
6161      await  coverageReport . add ( coverageList ) ; 
6262    } , 
6363  } , 
64+   WebDriver : { 
65+     startCoverage : async  ( page )  =>  { 
66+       await  Promise . all ( [ 
67+         page . coverage . startJSCoverage ( { 
68+           resetOnNavigation : false , 
69+           includeRawScriptCoverage : true , 
70+         } ) , 
71+         page . coverage . startCSSCoverage ( { 
72+           resetOnNavigation : false , 
73+         } ) , 
74+       ] ) ; 
75+     } , 
76+     takeCoverage : async  ( page ,  coverageReport )  =>  { 
77+       const  [ jsCoverage ,  cssCoverage ]  =  await  Promise . all ( [ 
78+         page . coverage . stopJSCoverage ( ) , 
79+         page . coverage . stopCSSCoverage ( ) , 
80+       ] ) ; 
81+       // to raw V8 script coverage 
82+       const  coverageList  =  [ ...jsCoverage . map ( ( it )  =>  { 
83+         return  { 
84+           source : it . text , 
85+           ...it . rawScriptCoverage , 
86+         } ; 
87+       } ) ,  ...cssCoverage ] ; 
88+       await  coverageReport . add ( coverageList ) ; 
89+     } , 
90+   } , 
6491} ; 
6592
6693/** 
@@ -109,11 +136,17 @@ module.exports = function (config) {
109136  const  debug  =  debugModule ( `codeceptjs:plugin:${ helperName . toLowerCase ( ) }  ) ; 
110137
111138  const  helper  =  helpers [ helperName ] ; 
139+ 
140+   if  ( helperName  ===  'WebDriver'  &&  ! helper . config . devtoolsProtocol )  throw  Error ( 'Coverage is currently supporting the WebDriver running with Devtools protocol.' ) ; 
141+ 
112142  const  v8Helper  =  v8CoverageHelpers [ helperName ] ; 
113143
114144  const  coverageOptions  =  { 
115145    ...config , 
116146  } ; 
147+ 
148+   if  ( helperName  ===  'WebDriver' )  coverageOptions . coverageProvider  =  'v8' ; 
149+ 
117150  const  coverageReport  =  new  CoverageReport ( coverageOptions ) ; 
118151  coverageReport . cleanCache ( ) ; 
119152
0 commit comments