Skip to content

Commit b2a663c

Browse files
committed
cypress: Rework code to save coverage for each page in a test
See cypress-io/code-coverage#70
1 parent 72a5399 commit b2a663c

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

cypress/support/index.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,16 +109,24 @@ Cypress.on('window:before:load', win => {
109109

110110
// Ensure code coverage data do not get lost each time a new
111111
// page is loaded during a single test execution
112-
let coverage = {};
113-
114-
Cypress.on('window:before:unload', e => {
115-
coverage = Object.assign(coverage, e.currentTarget.__coverage__);
116-
});
117-
118-
beforeEach(function() {
119-
coverage = {};
112+
let windowCoverageObjects;
113+
114+
beforeEach(() => {
115+
windowCoverageObjects = [];
116+
// save reference to coverage for each app window loaded in the test
117+
cy.on('window:load', (win) => {
118+
// if application code has been instrumented, the app iframe "window" has an object
119+
const applicationSourceCoverage = win.__coverage__;
120+
if (applicationSourceCoverage) {
121+
windowCoverageObjects.push(applicationSourceCoverage);
122+
}
123+
});
120124
});
121125

122-
afterEach(function() {
123-
cy.task('combineCoverage', coverage);
126+
afterEach(() => {
127+
// save coverage after the test
128+
// because now the window coverage objects have been updated
129+
windowCoverageObjects.forEach((coverage) => {
130+
cy.task('combineCoverage', coverage);
131+
});
124132
});

0 commit comments

Comments
 (0)