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.
 | 
			
		||||
    this.available = true
 | 
			
		||||
  }
 | 
			
		||||
@ -153,7 +155,28 @@ export class ElectronZoo {
 | 
			
		||||
      this.electron = await electron.launch(options)
 | 
			
		||||
 | 
			
		||||
      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()
 | 
			
		||||
      await this.context.tracing.start({ screenshots: true, snapshots: true })
 | 
			
		||||
 | 
			
		||||
      // 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
 | 
			
		||||
@ -175,6 +198,8 @@ export class ElectronZoo {
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    await this.context.tracing.startChunk()
 | 
			
		||||
 | 
			
		||||
    // THIS IS ABSOLUTELY NECESSARY TO CHANGE THE PROJECT DIRECTORY BETWEEN
 | 
			
		||||
    // TESTS BECAUSE OF THE ELECTRON INSTANCE REUSE.
 | 
			
		||||
    await this.electron?.evaluate(({ app }, projectDirName) => {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user