diff --git a/lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json b/lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json
index d2130ce41..3f94a50ab 100644
--- a/lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json
+++ b/lib/PuppeteerSharp.Nunit/TestExpectations/TestExpectations.local.json
@@ -180,21 +180,6 @@
"FAIL"
]
},
- {
- "comment": "This is part of organizing the webdriver bidi implementation, We will remove it one by one",
- "testIdPattern": "[navigation.spec] navigation Page.reload*",
- "platforms": [
- "darwin",
- "linux",
- "win32"
- ],
- "parameters": [
- "webDriverBiDi"
- ],
- "expectations": [
- "FAIL"
- ]
- },
{
"comment": "This is part of organizing the webdriver bidi implementation, We will remove it one by one",
"testIdPattern": "[navigation.spec] *should work when reload causes history API in beforeunload*",
diff --git a/lib/PuppeteerSharp.Tests/NavigationTests/PageReloadTests.cs b/lib/PuppeteerSharp.Tests/NavigationTests/PageReloadTests.cs
index 9b612507f..3d07a35f9 100644
--- a/lib/PuppeteerSharp.Tests/NavigationTests/PageReloadTests.cs
+++ b/lib/PuppeteerSharp.Tests/NavigationTests/PageReloadTests.cs
@@ -6,10 +6,6 @@ namespace PuppeteerSharp.Tests.NavigationTests
{
public class PageReloadTests : PuppeteerPageBaseTest
{
- public PageReloadTests() : base()
- {
- }
-
[Test, Retry(2), PuppeteerTest("navigation.spec", "navigation Page.reload", "should work")]
public async Task ShouldWork()
{
diff --git a/lib/PuppeteerSharp/Bidi/BidiPage.cs b/lib/PuppeteerSharp/Bidi/BidiPage.cs
index 06ffe0512..5062e58f2 100644
--- a/lib/PuppeteerSharp/Bidi/BidiPage.cs
+++ b/lib/PuppeteerSharp/Bidi/BidiPage.cs
@@ -101,7 +101,27 @@ public override async Task BringToFrontAsync()
public override Task EmulateCPUThrottlingAsync(decimal? factor = null) => throw new NotImplementedException();
///
- public override Task ReloadAsync(NavigationOptions options) => throw new NotImplementedException();
+ public override async Task ReloadAsync(NavigationOptions options)
+ {
+ var waitForNavigationTask = WaitForNavigationAsync(options);
+ var navigationTask = BidiMainFrame.BrowsingContext.ReloadAsync();
+
+ try
+ {
+ await Task.WhenAll(waitForNavigationTask, navigationTask).ConfigureAwait(false);
+ }
+ catch (Exception ex)
+ {
+ if (ex.Message.Contains("no such history entry"))
+ {
+ return null;
+ }
+
+ throw new NavigationException(ex.Message, ex);
+ }
+
+ return waitForNavigationTask.Result;
+ }
///
public override Task WaitForRequestAsync(Func predicate, WaitForOptions options = null) => throw new NotImplementedException();
diff --git a/lib/PuppeteerSharp/Bidi/Core/BrowsingContext.cs b/lib/PuppeteerSharp/Bidi/Core/BrowsingContext.cs
index 3a605cd6c..ad43bb5cb 100644
--- a/lib/PuppeteerSharp/Bidi/Core/BrowsingContext.cs
+++ b/lib/PuppeteerSharp/Bidi/Core/BrowsingContext.cs
@@ -175,6 +175,9 @@ internal WindowRealm CreateWindowRealm(string sandbox = null)
internal async Task TraverseHistoryAsync(int delta)
=> await Session.Driver.BrowsingContext.TraverseHistoryAsync(new TraverseHistoryCommandParameters(Id, delta)).ConfigureAwait(false);
+ internal async Task ReloadAsync()
+ => await Session.Driver.BrowsingContext.ReloadAsync(new ReloadCommandParameters(Id)).ConfigureAwait(false);
+
protected virtual void OnBrowsingContextCreated(BidiBrowsingContextEventArgs e) => BrowsingContextCreated?.Invoke(this, e);
private void Initialize()