// Reproduce an unavailable-browser failure without requiring a browser/server. const assert=require('node:assert/strict'); const fs=require('node:fs'); const path=require('node:path'); const {spawnSync}=require('node:child_process'); const folder=path.resolve(__dirname,'../test-results/launch-failure-case'); fs.mkdirSync(folder,{recursive:true}); const result=path.join(folder,'ui-validation.json'); fs.writeFileSync(result,JSON.stringify({status:'passed',previous_run:true})); const run=spawnSync(process.execPath,[path.join(__dirname,'viewer.cjs')],{ env:{...process.env,PLAYWRIGHT_CHANNEL:'intentionally-invalid-channel',VIEWER_RESULTS_DIR:folder}, encoding:'utf8',timeout:20000 }); if(run.error)throw run.error; assert.equal(run.status,1,run.stderr||run.stdout); const report=JSON.parse(fs.readFileSync(result,'utf8')); assert.equal(report.status,'failed'); assert.match(report.error,/intentionally-invalid-channel/); assert.equal(report.previous_run,undefined); console.log('PASS: browser launch failure returns 1 and overwrites stale success JSON.');