Skip to content

Commit 062756d

Browse files
authored
Improve WhatForRequest event detach (#1067)
1 parent a3e4a89 commit 062756d

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

lib/PuppeteerSharp.Tests/PageTests/WaitForRequestTests.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using System;
2-
using System.Net;
32
using System.Threading.Tasks;
43
using Xunit;
54
using Xunit.Abstractions;
5+
using PuppeteerSharp.Helpers;
66

77
namespace PuppeteerSharp.Tests.PageTests
88
{
@@ -71,6 +71,27 @@ public async Task ShouldRespectDefaultTimeout()
7171
Assert.Contains("Timeout Exceeded: 1ms", exception.Message);
7272
}
7373

74+
[Fact]
75+
public async Task ShouldProperyStopListeningNewRequests()
76+
{
77+
var tcs = new TaskCompletionSource<bool>();
78+
await Page.GoToAsync(TestConstants.EmptyPage);
79+
Page.DefaultTimeout = 1;
80+
var exception = await Assert.ThrowsAnyAsync<TimeoutException>(async () =>
81+
await Page.WaitForRequestAsync(request =>
82+
{
83+
if (request.Url.Contains("/digits/1.png"))
84+
{
85+
tcs.TrySetResult(true);
86+
}
87+
88+
return true;
89+
}));
90+
91+
await Page.EvaluateFunctionAsync(@"() => fetch('/digits/1.png')");
92+
await Assert.ThrowsAnyAsync<TimeoutException>(() => tcs.Task.WithTimeout(1));
93+
}
94+
7495
[Fact]
7596
public async Task ShouldWorkWithNoTimeout()
7697
{

lib/PuppeteerSharp/Page.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1438,7 +1438,11 @@ void requestEventListener(object sender, RequestEventArgs e)
14381438

14391439
_networkManager.Request += requestEventListener;
14401440

1441-
return await requestTcs.Task.WithTimeout(timeout).ConfigureAwait(false);
1441+
return await requestTcs.Task.WithTimeout(timeout, t =>
1442+
{
1443+
_networkManager.Request -= requestEventListener;
1444+
return new TimeoutException($"Timeout Exceeded: {t.TotalMilliseconds}ms exceeded");
1445+
}).ConfigureAwait(false);
14421446
}
14431447

14441448
/// <summary>

0 commit comments

Comments
 (0)