@@ -24,22 +24,19 @@ const logMessage = (s) => {
24
24
* Sends collected code coverage object to the backend code
25
25
* via "cy.task".
26
26
*/
27
- const sendCoverage = ( coverage , url = '/' ) => {
28
- logMessage ( `Saving code coverage for **${ url } **` )
27
+ const sendCoverage = ( coverage , comment = '/' ) => {
28
+ logMessage ( `Saving code coverage for **${ comment } **` )
29
29
30
30
const totalCoverage = filterFilesFromCoverage ( coverage )
31
31
32
32
// stringify coverage object for speed
33
- cy . task ( 'combineCoverage' , JSON . stringify ( totalCoverage ) , {
34
- log : false
35
- } ) . then ( updatedCoverage => {
36
- console . warn ( {
37
- url,
38
- coverage,
39
- totalCoverage,
40
- updatedCoverage : JSON . parse ( String ( updatedCoverage ) ) ,
33
+ return cy
34
+ . task ( 'combineCoverage' , JSON . stringify ( totalCoverage ) , {
35
+ log : false
41
36
} )
42
- } )
37
+ // .then((result) => {
38
+ // return JSON.parse(String(result))
39
+ // })
43
40
}
44
41
45
42
const registerHooks = ( ) => {
@@ -49,14 +46,13 @@ const registerHooks = () => {
49
46
let hostObjects = [ ]
50
47
51
48
before ( ( ) => {
52
- // each object will have the coverage and url pathname
53
- // to let the user know the coverage has been collected
49
+ // each object will have the url pathname
50
+ // to let the user know the coverage will be collected
54
51
hostObjects = [ ]
55
52
// we need to reset the coverage when running
56
53
// in the interactive mode, otherwise the counters will
57
54
// keep increasing every time we rerun the tests
58
55
const logInstance = logMessage ( 'Initialize' )
59
-
60
56
cy . task (
61
57
'resetCoverage' ,
62
58
{
@@ -110,7 +106,7 @@ const registerHooks = () => {
110
106
// collect and merge frontend coverage
111
107
cy . task ( 'takePreciseCoverage' , null , {
112
108
timeout : dayjs . duration ( 3 , 'minutes' ) . asMilliseconds ( ) ,
113
- log : true
109
+ log : false
114
110
} ) . then ( ( clientCoverage ) => {
115
111
cy . location ( { log : false } ) . then ( ( loc ) => {
116
112
if ( clientCoverage ) {
@@ -127,7 +123,7 @@ const registerHooks = () => {
127
123
} )
128
124
} )
129
125
130
- after ( function collectBackendCoverage ( ) {
126
+ after ( async function collectBackendCoverage ( ) {
131
127
// I wish I could fail the tests if there is no code coverage information
132
128
// but throwing an error here does not fail the test run due to
133
129
// https://github.com/cypress-io/cypress/issues/2296
@@ -162,36 +158,44 @@ const registerHooks = () => {
162
158
} )
163
159
] . filter ( Boolean )
164
160
165
- finalUrls . forEach ( ( url ) => {
166
- return cy
167
- . request ( {
168
- url,
161
+ await Cypress . Promise . mapSeries ( finalUrls , ( url ) => {
162
+ return new Cypress . Promise ( ( resolve , reject ) => {
163
+ cy . request ( {
164
+ url : String ( url ) ,
169
165
log : true ,
170
166
failOnStatusCode : false
171
167
} )
172
- . then ( ( r ) => {
173
- return Cypress . _ . get ( r , 'body.coverage' , null )
174
- } )
175
- . then ( ( coverage ) => {
176
- if ( ! coverage ) {
177
- // we did not get code coverage - this is the
178
- // original failed request
168
+ . then ( ( r ) => {
169
+ return Cypress . _ . get ( r , 'body.coverage' , null )
170
+ } )
171
+ . then ( ( coverage ) => {
172
+ if ( coverage ) {
173
+ sendCoverage ( coverage , `server - ${ url } ` ) . then ( ( ) => {
174
+ resolve ( )
175
+ } )
176
+ return
177
+ }
178
+
179
+ // we did not get code coverage
179
180
const expectBackendCoverageOnly = Cypress . _ . get (
180
181
Cypress . env ( 'codeCoverage' ) ,
181
182
'expectBackendCoverageOnly' ,
182
183
false
183
184
)
184
185
if ( expectBackendCoverageOnly ) {
185
- throw new Error (
186
- `Expected to collect backend code coverage from ${ url } `
186
+ reject (
187
+ new Error (
188
+ `Expected to collect backend code coverage from ${ url } `
189
+ )
187
190
)
191
+ return
188
192
} else {
193
+ resolve ( )
189
194
// we did not really expect to collect the backend code coverage
190
195
return
191
196
}
192
- }
193
- sendCoverage ( coverage , `server - ${ url } ` )
194
- } )
197
+ } )
198
+ } )
195
199
} )
196
200
}
197
201
} )
0 commit comments