@@ -5,6 +5,7 @@ const path = require('path')
55
66let getMarkup
77let resourceLoader
8+ let initCallback
89
910if ( process . env . E2E_FILE ) {
1011 const file = path . isAbsolute ( process . env . E2E_FILE )
@@ -18,6 +19,8 @@ if (process.env.E2E_FILE) {
1819 null ,
1920 fs . readFileSync ( path . join ( path . dirname ( file ) , resource . url . pathname ) , 'utf8' )
2021 )
22+
23+ initCallback = ( doc , resolve ) => doc . defaultView . addEventListener ( 'load' , ( ) => resolve ( doc ) , false )
2124} else if ( process . env . E2E_URL ) {
2225 getMarkup = ( ) => new Promise ( resolve => {
2326 http . get ( process . env . E2E_URL , ( res ) => {
@@ -30,6 +33,8 @@ if (process.env.E2E_FILE) {
3033 resourceLoader = ( resource , callback ) => {
3134 return resource . defaultFetch ( callback )
3235 }
36+
37+ initCallback = ( doc , resolve ) => doc . addEventListener ( 'fixture' , ( ) => resolve ( doc ) , false )
3338} else {
3439 it . only ( 'can run jsdom (at least one of "E2E_FILE" or "E2E_URL" environment variables must be provided)' , ( ) => {
3540 expect ( new Error ( 'This isn\'t the error you are looking for.' ) ) . toBeUndefined ( )
@@ -49,15 +54,5 @@ export default feature => new Promise(async resolve => {
4954 virtualConsole : jsdom . createVirtualConsole ( ) . sendTo ( console ) ,
5055 } )
5156
52- doc . defaultView . addEventListener ( 'load' , ( ) => {
53- let tries = 0
54- const check = ( ) => {
55- if ( ++ tries > 50 || doc . querySelector ( '[id^="feature"]' ) != null ) {
56- resolve ( doc )
57- } else {
58- setTimeout ( check , 10 )
59- }
60- }
61- check ( )
62- } , false )
57+ initCallback ( doc , resolve )
6358} )
0 commit comments