docs(acceptance): record B01 follow-up and B02 Windows verification

This commit is contained in:
xiaohan.yuan committed 2026-10-21 13:46:57 +08:00
1 parent 0bc9faa129
commit bac89daf87
37 files changed
+5332

No files matched your search

@@ -0,0 +1,44 @@
// Acceptance-only Electron runner for the unchanged supplied Chromium HTML fixture.
const fs = require('fs')
const path = require('path')
const assert = require('assert/strict')
const electron = require('electron')
const directory = path.resolve(process.argv.at(-1))
assert.ok(path.dirname(directory) === path.resolve('.tmp') && path.basename(directory).startsWith('task-popconfirm-browser-'))
if (!process.versions.electron) {
const env = { ...process.env }
delete env.ELECTRON_RUN_AS_NODE
delete env.ELECTRON_RENDERER_URL
const child = require('child_process').spawn(electron, [__filename, directory], { env, windowsHide: true, stdio: 'inherit' })
const timer = setTimeout(() => child.kill(), 60000)
child.once('exit', (code, signal) => {
clearTimeout(timer)
console.log(JSON.stringify({ directory, exitCode: code, signal }))
process.exitCode = code === 0 ? 0 : 1
})
} else {
const { app, BrowserWindow } = electron
const data = path.join(directory, 'electron-profile')
fs.mkdirSync(data, { recursive: true })
app.setPath('userData', data)
app.disableHardwareAcceleration()
app.whenReady().then(async () => {
const win = new BrowserWindow({ width: 1000, height: 700, show: false, webPreferences: { contextIsolation: true, nodeIntegration: false, backgroundThrottling: false } })
const errors = []
win.webContents.on('console-message', event => { if (event.level === 'error' || event.level >= 3) errors.push(event.message) })
await win.loadFile(path.join(directory, 'index.html'))
win.showInactive()
for (let i = 0; i < 300; i++) {
const result = await win.webContents.executeJavaScript('document.querySelector("#result")?.textContent')
if (result) {
const report = JSON.parse(result)
fs.writeFileSync(path.join(directory, 'electron-report.json'), JSON.stringify({ ...report, rendererErrors: errors, scope: 'Actual Electron Chromium component fixture; isolated callbacks, no IPC/model/session execution' }, null, 2))
console.log(JSON.stringify({ pass: report.pass, checks: report.results.length, error: report.error, rendererErrors: errors }))
app.exit(report.pass && errors.length === 0 ? 0 : 1)
return
}
await new Promise(resolve => setTimeout(resolve, 80))
}
throw Error('Fixture result timed out')
}).catch(error => { console.error(error); app.exit(1) })
}