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()