docs(acceptance): record B01 follow-up and B02 Windows verification
This commit is contained in:
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) })
|
||||
}
|
||||
Reference in new issue
Block a user