From 93ff42b161235ebc91f236256cfd4290084a2e8f Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Thu, 25 Jun 2026 18:53:44 +0800 Subject: [PATCH] debug: limit macrotask runner to when we have a page This is the only main change in this branch compared to main that could explain the Debug check failed: isolate()->CurrentLocalHeap()->IsRunning() failure being reported. --- src/browser/Runner.zig | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/browser/Runner.zig b/src/browser/Runner.zig index 12eb505db..34f840682 100644 --- a/src/browser/Runner.zig +++ b/src/browser/Runner.zig @@ -215,7 +215,9 @@ fn _tick(self: *Runner, comptime is_cdp: bool, timeout_ms: u32, conditions: []Wa return .{ .ok = 0 }; } - try browser.runMacrotasks(); + if (hasRunnablePage(session)) { + try browser.runMacrotasks(); + } const http_active = http_client.http_active; const http_next_tick = http_client.next_tick_count; @@ -431,6 +433,17 @@ fn firstConditionError(conditions: []const WaitCondition) !void { } } +fn hasRunnablePage(session: *Session) bool { + for (session.pages.items) |page| { + const target = page.replacement orelse page; + switch (target.frame._parse_state) { + .html, .complete => return true, + else => {}, + } + } + return false; +} + const testing = @import("../testing.zig"); test "Runner: waitForSelector timeout" { const page = try testing.pageTest("runner/runner1.html", .{});