11using System . Threading . Tasks ;
22using NUnit . Framework ;
3+ using PuppeteerSharp . Helpers ;
34using PuppeteerSharp . Nunit ;
45
56namespace PuppeteerSharp . Tests . BFCacheTests ;
@@ -23,4 +24,26 @@ public async Task CanNavigateToABFCachedPage()
2324 await Task . WhenAll ( Page . WaitForNavigationAsync ( ) , Page . GoBackAsync ( ) ) ;
2425 Assert . AreEqual ( "BFCachednext" , await Page . EvaluateExpressionAsync < string > ( "document.body.innerText" ) ) ;
2526 }
27+
28+ [ Test , Retry ( 2 ) , PuppeteerTest ( "bfcache.spec" , "BFCache" , "can navigate to a BFCached page containing an OOPIF and a worker" ) ]
29+ public async Task CanNavigateToABFCachedPageContainingAnOOPIFAndAWorker ( )
30+ {
31+ Page . DefaultTimeout = 30_000 ;
32+ var workerTcs = new TaskCompletionSource < WebWorker > ( ) ;
33+ Page . WorkerCreated += ( _ , e ) => workerTcs . TrySetResult ( e . Worker ) ;
34+ await Page . GoToAsync ( TestConstants . ServerUrl + "/cached/bfcache/worker-iframe-container.html" ) ;
35+ var worker1 = await workerTcs . Task . WithTimeout ( ) ;
36+ Assert . AreEqual ( 2 , await worker1 . EvaluateExpressionAsync < int > ( "1 + 1" ) ) ;
37+ await Task . WhenAll (
38+ Page . WaitForNavigationAsync ( ) ,
39+ Page . ClickAsync ( "a" ) ) ;
40+
41+ workerTcs = new TaskCompletionSource < WebWorker > ( ) ;
42+ await Task . WhenAll (
43+ Page . WaitForNavigationAsync ( ) ,
44+ Page . GoBackAsync ( ) ) . WithTimeout ( ) ;
45+
46+ var worker2 = await workerTcs . Task . WithTimeout ( ) ;
47+ Assert . AreEqual ( 2 , await worker2 . EvaluateExpressionAsync < int > ( "1 + 1" ) ) ;
48+ }
2649}
0 commit comments