mirror of
https://github.com/utopia-os/utopia-ui.git
synced 2025-12-12 15:25:59 +00:00
72 lines
2.3 KiB
JavaScript
72 lines
2.3 KiB
JavaScript
/**
|
|
* Cypress Plugin for Enhanced Parallel Test Reporting
|
|
* Handles mochawesome report generation for parallel test execution
|
|
*/
|
|
|
|
const path = require('path')
|
|
const fs = require('fs')
|
|
|
|
module.exports = (on, config) => {
|
|
// Ensure results directory exists
|
|
const resultsDir = path.join(config.projectRoot, 'results')
|
|
if (!fs.existsSync(resultsDir)) {
|
|
fs.mkdirSync(resultsDir, { recursive: true })
|
|
}
|
|
|
|
// Configure mochawesome for parallel execution - JSON only for merging
|
|
const splitIndex = process.env.SPLIT_INDEX || '0'
|
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-')
|
|
|
|
config.reporterOptions = {
|
|
...config.reporterOptions,
|
|
reportFilename: `split-${splitIndex}-${timestamp}-[name]`,
|
|
reportDir: resultsDir,
|
|
overwrite: false,
|
|
html: false, // No individual HTML files
|
|
json: true, // Only JSON for merging into one report
|
|
embeddedScreenshots: true,
|
|
useInlineDiffs: true
|
|
}
|
|
|
|
// Task for logging parallel execution info
|
|
on('task', {
|
|
log(message) {
|
|
console.log(`[Parallel ${splitIndex}] ${message}`)
|
|
return null
|
|
},
|
|
|
|
logReportInfo() {
|
|
console.log(`[Parallel ${splitIndex}] Report will be saved as: report-${splitIndex}-${timestamp}.json`)
|
|
return null
|
|
}
|
|
})
|
|
|
|
// Before run hook
|
|
on('before:run', (details) => {
|
|
console.log(`[Parallel ${splitIndex}] Starting test execution`)
|
|
console.log(`[Parallel ${splitIndex}] Browser: ${details.browser.name}`)
|
|
console.log(`[Parallel ${splitIndex}] Specs: ${details.specs.length}`)
|
|
return details
|
|
})
|
|
|
|
// After run hook
|
|
on('after:run', (results) => {
|
|
console.log(`[Parallel ${splitIndex}] Test execution completed`)
|
|
console.log(`[Parallel ${splitIndex}] Total tests: ${results.totalTests}`)
|
|
console.log(`[Parallel ${splitIndex}] Passed: ${results.totalPassed}`)
|
|
console.log(`[Parallel ${splitIndex}] Failed: ${results.totalFailed}`)
|
|
|
|
// Ensure the report file was created
|
|
const reportFile = path.join(resultsDir, `report-${splitIndex}-${timestamp}.json`)
|
|
if (fs.existsSync(reportFile)) {
|
|
console.log(`[Parallel ${splitIndex}] ✅ Report saved: ${reportFile}`)
|
|
} else {
|
|
console.log(`[Parallel ${splitIndex}] ❌ Report not found: ${reportFile}`)
|
|
}
|
|
|
|
return results
|
|
})
|
|
|
|
return config
|
|
}
|