fix(ci): stabilize Electron smoke flakiness at its sources
Windows CI / verify (push) Failing after 4m52s
Windows CI / verify (push) Failing after 4m52s
The workspace cutter drop check waited a fixed 250ms before asserting the populated cutter controls, but the drop triggers asynchronous IPC and media probing, so loaded runners regularly lost that race and failed with a misleading error. The check now polls the exact same UI conditions with a bounded deadline before asserting. All window screenshots in the cutter and workspace smokes carry an explicit generous timeout because large two-times-DPR captures exceeded the Playwright default under load. The focused Electron smoke and the cutter media matrix additionally retry exactly once in both CI workflows, mirroring the established packaging retries for transient runner turbulence, and the CI contract now enforces those retries instead of the former single-line steps.
This commit is contained in:
@@ -591,9 +591,7 @@ for (const relativePath of ['.github/workflows/windows-ci.yml', '.gitea/workflow
|
||||
'npm run test:cutter-matrix-contract',
|
||||
'npm run test:live-integration-contract',
|
||||
'npm run test:unit',
|
||||
'npm run test:e2e:focused',
|
||||
'npm run build',
|
||||
'node scripts/smoke-test-cutter-media-matrix.js',
|
||||
'npm run test:managed-tools-live',
|
||||
'npm run test:packaged-launch',
|
||||
'npm run test:installer'
|
||||
@@ -621,7 +619,7 @@ for (const relativePath of ['.github/workflows/windows-ci.yml', '.gitea/workflow
|
||||
const verifyLiveContractIndex = stepIndexByRun(verifyJob, 'npm run test:live-integration-contract');
|
||||
check(verifyBuildIndex >= 0 && verifyBuildIndex < verifyLiveContractIndex, `${relativePath} verify must build before the live integration contract`);
|
||||
check(verifyBuildIndex < stepIndexByRun(verifyJob, 'npm run test:managed-tools-live'), `${relativePath} runs the live managed-tools check before build`);
|
||||
for (const command of ['npm run pack', 'npm run dist:ci']) {
|
||||
for (const command of ['npm run pack', 'npm run dist:ci', 'npm run test:e2e:focused', 'node scripts/smoke-test-cutter-media-matrix.js']) {
|
||||
check(hasSingleConditionalRetry(verifyJob?.steps.map((step) => step.raw).join('\n') || '', command), `${relativePath} does not retry transient ${command} failures exactly once`);
|
||||
}
|
||||
check(hasSingleConditionalRetry(verifyJob?.steps.map((step) => step.raw).join('\n') || '', 'npx install-electron --no'), `${relativePath} does not retry Electron binary provisioning exactly once`);
|
||||
|
||||
Reference in New Issue
Block a user