Skip to content

Commit 644643d

Browse files
authored
Add missing set request interception tests (#1798)
1 parent 5c1eebe commit 644643d

File tree

5 files changed

+68
-0
lines changed

5 files changed

+68
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@font-face {
2+
font-family: 'one-style';
3+
src: url('./one-style.woff') format('woff');
4+
}
5+
6+
body {
7+
background-color: pink;
8+
font-family: 'one-style', sans-serif;
9+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<link rel='stylesheet' href='./one-style-font.css'>
2+
<div>hello, world!</div>

lib/PuppeteerSharp.Tests/RequestInterceptionTests/SetRequestInterceptionTests.cs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,5 +613,53 @@ public async Task ShouldWorkWithFileURLs()
613613
Assert.Contains("one-style.html", urls);
614614
Assert.Contains("one-style.css", urls);
615615
}
616+
617+
[PuppeteerTest("requestinterception.spec.ts", "Page.setRequestInterception", "should not cache if cache disabled")]
618+
[SkipBrowserFact(skipFirefox: true)]
619+
public async Task ShouldNotCacheIfCacheDisabled()
620+
{
621+
await Page.GoToAsync(TestConstants.ServerUrl + "/cached/one-style.html");
622+
await Page.SetRequestInterceptionAsync(true);
623+
await Page.SetCacheEnabledAsync(false);
624+
var urls = new List<string>();
625+
Page.Request += (_, e) => _ = e.Request.ContinueAsync();
626+
627+
var cached = new List<Request>();
628+
Page.RequestServedFromCache += (_, e) => cached.Add(e.Request);
629+
630+
await Page.ReloadAsync();
631+
Assert.Empty(cached);
632+
}
633+
634+
[PuppeteerTest("requestinterception.spec.ts", "Page.setRequestInterception", "should cache if cache enabled")]
635+
[SkipBrowserFact(skipFirefox: true)]
636+
public async Task ShouldNotCacheIfCacheEnabled()
637+
{
638+
await Page.GoToAsync(TestConstants.ServerUrl + "/cached/one-style.html");
639+
await Page.SetRequestInterceptionAsync(true);
640+
await Page.SetCacheEnabledAsync(true);
641+
var urls = new List<string>();
642+
Page.Request += (_, e) => _ = e.Request.ContinueAsync();
643+
644+
var cached = new List<Request>();
645+
Page.RequestServedFromCache += (_, e) => cached.Add(e.Request);
646+
647+
await Page.ReloadAsync();
648+
Assert.Single(cached);
649+
}
650+
651+
[PuppeteerTest("requestinterception.spec.ts", "Page.setRequestInterception", "should load fonts if cache enabled")]
652+
[SkipBrowserFact(skipFirefox: true)]
653+
public async Task ShouldLoadFontsIfCacheEnabled()
654+
{
655+
await Page.SetRequestInterceptionAsync(true);
656+
await Page.SetCacheEnabledAsync(true);
657+
var urls = new List<string>();
658+
Page.Request += (_, e) => _ = e.Request.ContinueAsync();
659+
660+
var waitTask = Page.WaitForResponseAsync(response => response.Url.EndsWith("/one-style.woff"));
661+
await Page.GoToAsync(TestConstants.ServerUrl + "/cached/one-style-font.html");
662+
await waitTask;
663+
}
616664
}
617665
}

lib/PuppeteerSharp/NetworkManager.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ internal NetworkManager(CDPSession client, bool ignoreHTTPSErrors, FrameManager
6262

6363
internal event EventHandler<RequestEventArgs> RequestFailed;
6464

65+
internal event EventHandler<RequestEventArgs> RequestServedFromCache;
66+
6567
internal FrameManager FrameManager { get; set; }
6668
#endregion
6769

@@ -376,6 +378,7 @@ private void OnRequestServedFromCache(RequestServedFromCacheResponse response)
376378
{
377379
request.FromMemoryCache = true;
378380
}
381+
RequestServedFromCache?.Invoke(this, new RequestEventArgs { Request = request });
379382
}
380383

381384
private void HandleRequestRedirect(Request request, ResponsePayload responseMessage)

lib/PuppeteerSharp/Page.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@ private Page(
202202
/// </summary>
203203
public event EventHandler<RequestEventArgs> RequestFailed;
204204

205+
/// <summary>
206+
/// Raised when a request ended up loading from cache.
207+
/// </summary>
208+
public event EventHandler<RequestEventArgs> RequestServedFromCache;
209+
205210
/// <summary>
206211
/// Raised when an uncaught exception happens within the page.
207212
/// </summary>
@@ -1855,6 +1860,7 @@ private async Task InitializeAsync(bool ignoreHTTPSErrors)
18551860
networkManager.RequestFailed += (_, e) => RequestFailed?.Invoke(this, e);
18561861
networkManager.Response += (_, e) => Response?.Invoke(this, e);
18571862
networkManager.RequestFinished += (_, e) => RequestFinished?.Invoke(this, e);
1863+
networkManager.RequestServedFromCache += (_, e) => RequestServedFromCache?.Invoke(this, e);
18581864

18591865
await Task.WhenAll(
18601866
Client.SendAsync("Target.setAutoAttach", new TargetSetAutoAttachRequest

0 commit comments

Comments
 (0)