diff --git a/src/Server.zig b/src/Server.zig index 2eb5eb36..1ac3084c 100644 --- a/src/Server.zig +++ b/src/Server.zig @@ -205,7 +205,6 @@ fn readLoop(self: *Server, socket: posix.socket_t, timeout_ms: u32) !void { } ms_remaining -= @intCast(elapsed); }, - .navigate => unreachable, // must have been handled by the session } } } diff --git a/src/browser/Page.zig b/src/browser/Page.zig index b5baafdb..f66394de 100644 --- a/src/browser/Page.zig +++ b/src/browser/Page.zig @@ -969,7 +969,7 @@ fn _wait(self: *Page, wait_ms: u32) !Session.WaitResult { }, .html, .complete => { if (self._queued_navigation != null) { - return .navigate; + return .done; } // The HTML page was parsed. We now either have JS scripts to diff --git a/src/browser/Session.zig b/src/browser/Session.zig index 53702830..cb26c7ce 100644 --- a/src/browser/Session.zig +++ b/src/browser/Session.zig @@ -135,14 +135,18 @@ pub const WaitResult = enum { done, no_page, cdp_socket, - navigate, }; pub fn wait(self: *Session, wait_ms: u32) WaitResult { while (true) { if (self.page) |*page| { switch (page.wait(wait_ms)) { - .navigate => self.processScheduledNavigation() catch return .done, + .done => { + if (page._queued_navigation == null) { + return .done; + } + self.processScheduledNavigation() catch return .done; + }, else => |result| return result, } } else {