Skip to content

Commit 1ca3e70

Browse files
Meir017kblok
authored andcommitted
Page.goto with 204 (#450)
1 parent 21daa2d commit 1ca3e70

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<script>
2+
window.addEventListener('DOMContentLoaded', () => {
3+
history.pushState({}, '', '#1');
4+
});
5+
</script>

lib/PuppeteerSharp.Tests/PageTests/GotoTests.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,37 @@ public async Task ShouldNavigateToEmptyPageWithDOMContentLoaded()
3434
Assert.Null(response.SecurityDetails);
3535
}
3636

37+
[Fact]
38+
public async Task ShouldFailWhenServerReturns204()
39+
{
40+
Server.SetRoute("/empty.html", context =>
41+
{
42+
context.Response.StatusCode = 204;
43+
return Task.CompletedTask;
44+
});
45+
var exception = await Assert.ThrowsAnyAsync<PuppeteerException>(
46+
() => Page.GoToAsync(TestConstants.EmptyPage));
47+
Assert.Contains("net::ERR_ABORTED", exception.Message);
48+
}
49+
50+
[Fact]
51+
public async Task ShouldReturnResponseWhenPageChangesItsURLAfterLoad()
52+
{
53+
var response = await Page.GoToAsync(TestConstants.ServerUrl + "/historyapi.html");
54+
Assert.Equal(HttpStatusCode.OK, response.Status);
55+
}
56+
57+
[Fact]
58+
public async Task ShouldWorkWithSubframesReturn204()
59+
{
60+
Server.SetRoute("/frames/frame.html", context =>
61+
{
62+
context.Response.StatusCode = 204;
63+
return Task.CompletedTask;
64+
});
65+
await Page.GoToAsync(TestConstants.ServerUrl + "/frames/one-frame.html");
66+
}
67+
3768
[Theory]
3869
[InlineData(WaitUntilNavigation.Networkidle0)]
3970
[InlineData(WaitUntilNavigation.Networkidle2)]

lib/PuppeteerSharp/Frame.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class Frame
4747
internal string Id { get; set; }
4848
internal string LoaderId { get; set; }
4949
internal List<string> LifecycleEvents { get; }
50+
internal string NavigationURL { get; private set; }
5051

5152
internal Frame(CDPSession client, Page page, Frame parentFrame, string frameId)
5253
{
@@ -580,6 +581,7 @@ internal void OnLifecycleEvent(string loaderId, string name)
580581
internal void Navigated(FramePayload framePayload)
581582
{
582583
Name = framePayload.Name ?? string.Empty;
584+
NavigationURL = framePayload.Url;
583585
Url = framePayload.Url;
584586
}
585587

lib/PuppeteerSharp/Page.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ await Task.WhenAll(
708708
throw new NavigationException(exception.InnerException.Message, exception.InnerException);
709709
}
710710

711-
requests.TryGetValue(MainFrame.Url, out var request);
711+
requests.TryGetValue(MainFrame.NavigationURL, out var request);
712712

713713
return request?.Response;
714714
}

0 commit comments

Comments
 (0)