@@ -27,8 +27,7 @@ public async Task BackgroundPageTargetTypeShouldBeAvailable()
2727 TestConstants . LoggerFactory ) )
2828 using ( var page = await browserWithExtension . NewPageAsync ( ) )
2929 {
30- var targets = browserWithExtension . Targets ( ) ;
31- var backgroundPageTarget = targets . FirstOrDefault ( target => target . Type == TargetType . BackgroundPage ) ;
30+ var backgroundPageTarget = await WaitForBackgroundPageTargetAsync ( browserWithExtension ) ;
3231 Assert . NotNull ( backgroundPageTarget ) ;
3332 }
3433 }
@@ -40,8 +39,7 @@ public async Task TargetPageShouldReturnABackgroundPage()
4039 TestConstants . BrowserWithExtensionOptions ( ) ,
4140 TestConstants . LoggerFactory ) )
4241 {
43- var targets = browserWithExtension . Targets ( ) ;
44- var backgroundPageTarget = targets . FirstOrDefault ( target => target . Type == TargetType . BackgroundPage ) ;
42+ var backgroundPageTarget = await WaitForBackgroundPageTargetAsync ( browserWithExtension ) ;
4543 var page = await backgroundPageTarget . PageAsync ( ) ;
4644 Assert . Equal ( 6 , await page . EvaluateFunctionAsync ( "() => 2 * 3" ) ) ;
4745 }
@@ -55,7 +53,6 @@ public async Task ShouldHaveDefaultUrlWhenLaunchingBrowser()
5553 TestConstants . LoggerFactory ) )
5654 {
5755 var pages = ( await browser . PagesAsync ( ) ) . Select ( page => page . Url ) . ToArray ( ) ;
58-
5956 Assert . Equal ( new [ ] { "about:blank" } , pages ) ;
6057 }
6158 }
@@ -113,5 +110,27 @@ await page.EvaluateFunctionHandleAsync(@"() => {
113110 Assert . Equal ( new [ ] { TestConstants . EmptyPage , "https://google.com/" } , urls ) ;
114111 }
115112 }
113+
114+ private Task < Target > WaitForBackgroundPageTargetAsync ( Browser browser )
115+ {
116+ var target = browser . Targets ( ) . FirstOrDefault ( t => t . Type == TargetType . BackgroundPage ) ;
117+ if ( target != null )
118+ {
119+ return Task . FromResult ( target ) ;
120+ }
121+ var targetCreatedTcs = new TaskCompletionSource < Target > ( ) ;
122+ void targetCreated ( object sender , TargetChangedArgs e )
123+ {
124+ if ( e . Target . Type != TargetType . BackgroundPage )
125+ {
126+ return ;
127+ }
128+ targetCreatedTcs . TrySetResult ( e . Target ) ;
129+ browser . TargetCreated -= targetCreated ;
130+ }
131+ browser . TargetCreated += targetCreated ;
132+
133+ return targetCreatedTcs . Task ;
134+ }
116135 }
117136}
0 commit comments