Skip to content

Commit 45b2da0

Browse files
committed
Batch coverage report data sent to 'combineCoverage' using number of keys as the batching mechanism. This is to prevent very large objects being sent across processes all at once. Objects of sufficient size have been causing timeouts during this transition.
1 parent 32a2f8d commit 45b2da0

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

support.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,23 @@ dayjs.extend(duration)
1414
const sendCoverage = (coverage, pathname = '/') => {
1515
logMessage(`Saving code coverage for **${pathname}**`)
1616

17-
const totalCoverage = filterFilesFromCoverage(coverage)
17+
let totalCoverage = filterFilesFromCoverage(coverage)
1818

19-
// stringify coverage object for speed
20-
cy.task('combineCoverage', JSON.stringify(totalCoverage), {
21-
log: false
22-
})
19+
const keys = Object.keys(totalCoverage)
20+
const batchSize = 500;
21+
22+
for (let i = 0; i < keys.length; i += batchSize) {
23+
const batchKeys = keys.slice(i, i + batchSize)
24+
const batchCoverage = {}
25+
26+
batchKeys.forEach(key => {
27+
batchCoverage[key] = totalCoverage[key]
28+
})
29+
30+
cy.task('combineCoverage', JSON.stringify(batchCoverage), {
31+
log:false
32+
})
33+
}
2334
}
2435

2536
/**

0 commit comments

Comments
 (0)