Add back old window detection heuristic
This commit is contained in:
@ -113,6 +113,8 @@ export class ElectronZoo {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
await this.context.tracing.stopChunk({ path: 'trace.zip' })
|
||||||
|
|
||||||
// Only after cleanup we're ready.
|
// Only after cleanup we're ready.
|
||||||
this.available = true
|
this.available = true
|
||||||
}
|
}
|
||||||
@ -153,7 +155,28 @@ export class ElectronZoo {
|
|||||||
this.electron = await electron.launch(options)
|
this.electron = await electron.launch(options)
|
||||||
|
|
||||||
this.page = await this.electron.firstWindow()
|
this.page = await this.electron.firstWindow()
|
||||||
|
// Mac takes quite a long time to create the first window in CI.
|
||||||
|
// Turns out we can't trust firstWindow() either. So loop.
|
||||||
|
let timeoutId: ReturnType<typeof setTimeout>
|
||||||
|
const tryToGetWindowPage = () =>
|
||||||
|
new Promise((resolve) => {
|
||||||
|
const fn = () => {
|
||||||
|
this.page = this.electron.windows()[0]
|
||||||
|
timeoutId = setTimeout(() => {
|
||||||
|
if (this.page) {
|
||||||
|
clearTimeout(timeoutId)
|
||||||
|
return resolve(undefined)
|
||||||
|
}
|
||||||
|
fn()
|
||||||
|
}, 0)
|
||||||
|
}
|
||||||
|
fn()
|
||||||
|
})
|
||||||
|
|
||||||
|
await tryToGetWindowPage()
|
||||||
|
|
||||||
this.context = this.electron.context()
|
this.context = this.electron.context()
|
||||||
|
await this.context.tracing.start({ screenshots: true, snapshots: true })
|
||||||
|
|
||||||
// We need to patch this because addInitScript will bind too late in our
|
// We need to patch this because addInitScript will bind too late in our
|
||||||
// electron tests, never running. We need to call reload() after each call
|
// electron tests, never running. We need to call reload() after each call
|
||||||
@ -175,6 +198,8 @@ export class ElectronZoo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await this.context.tracing.startChunk()
|
||||||
|
|
||||||
// THIS IS ABSOLUTELY NECESSARY TO CHANGE THE PROJECT DIRECTORY BETWEEN
|
// THIS IS ABSOLUTELY NECESSARY TO CHANGE THE PROJECT DIRECTORY BETWEEN
|
||||||
// TESTS BECAUSE OF THE ELECTRON INSTANCE REUSE.
|
// TESTS BECAUSE OF THE ELECTRON INSTANCE REUSE.
|
||||||
await this.electron?.evaluate(({ app }, projectDirName) => {
|
await this.electron?.evaluate(({ app }, projectDirName) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user