@@ -87,6 +87,39 @@ await Task.WhenAll(
8787 }
8888 }
8989
90+ [ PuppeteerTest ( "launcher.spec.ts" , "Puppeteer.connect" , "should support targetFilter option" ) ]
91+ [ Fact ( Timeout = TestConstants . DefaultTestTimeout ) ]
92+ public async Task ShouldSupportTargetFilter ( )
93+ {
94+ await using ( var originalBrowser = await Puppeteer . LaunchAsync ( TestConstants . DefaultBrowserOptions ( ) ) )
95+ {
96+ var page1 = await originalBrowser . NewPageAsync ( ) ;
97+ await page1 . GoToAsync ( TestConstants . EmptyPage ) ;
98+
99+ var page2 = await originalBrowser . NewPageAsync ( ) ;
100+ await page2 . GoToAsync ( TestConstants . EmptyPage + "?should-be-ignored" ) ;
101+
102+ var browser = await Puppeteer . ConnectAsync ( new ConnectOptions {
103+ BrowserWSEndpoint = originalBrowser . WebSocketEndpoint ,
104+ TargetFilter = ( TargetInfo targetInfo ) => ! targetInfo . Url . Contains ( "should-be-ignored" ) ,
105+ } ) ;
106+
107+ var pages = await browser . PagesAsync ( ) ;
108+
109+ await page2 . CloseAsync ( ) ;
110+ await page1 . CloseAsync ( ) ;
111+ await browser . CloseAsync ( ) ;
112+
113+ Assert . Equal (
114+ new string [ ]
115+ {
116+ "about:blank" ,
117+ TestConstants . EmptyPage
118+ } ,
119+ pages . Select ( ( Page p ) => p . Url ) . OrderBy ( t => t ) ) ;
120+ }
121+ }
122+
90123 [ PuppeteerTest ( "launcher.spec.ts" , "Puppeteer.connect" , "should be able to reconnect to a disconnected browser" ) ]
91124 [ SkipBrowserFact ( skipFirefox : true ) ]
92125 public async Task ShouldBeAbleToReconnectToADisconnectedBrowser ( )
@@ -140,6 +173,30 @@ async void TargetCreated(object sender, TargetChangedArgs e)
140173 Assert . Equal ( 42 , await page2 . EvaluateExpressionAsync < int > ( "7 * 6" ) ) ;
141174 await browserOne . CloseAsync ( ) ;
142175 }
176+
177+ [ PuppeteerTest ( "launcher.spec.ts" , "Puppeteer.connect" , "should be able to reconnect" ) ]
178+ [ SkipBrowserFact ( skipFirefox : true ) ]
179+ public async Task ShouldBeAbleToReconnect ( )
180+ {
181+ var browserOne = await Puppeteer . LaunchAsync ( new LaunchOptions ( ) ) ;
182+ var browserWSEndpoint = browserOne . WebSocketEndpoint ;
183+ var page1 = await browserOne . NewPageAsync ( ) ;
184+ await page1 . GoToAsync ( TestConstants . EmptyPage ) ;
185+ browserOne . Disconnect ( ) ;
186+
187+ var browserTwo = await Puppeteer . ConnectAsync ( new ConnectOptions
188+ {
189+ BrowserWSEndpoint = browserWSEndpoint
190+ } ) ;
191+
192+ var pages = await browserTwo . PagesAsync ( ) ;
193+ var pageTwo = pages . First ( page => page . Url == TestConstants . EmptyPage ) ;
194+ await pageTwo . ReloadAsync ( ) ;
195+ var bodyHandle = await pageTwo . WaitForSelectorAsync ( "body" , new WaitForSelectorOptions { Timeout = 10000 } ) ;
196+ await bodyHandle . DisposeAsync ( ) ;
197+ await browserTwo . CloseAsync ( ) ;
198+ }
199+
143200 [ Fact ( Timeout = TestConstants . DefaultTestTimeout ) ]
144201 public async Task ShouldSupportCustomWebSocket ( )
145202 {
0 commit comments