From a23012cb035563125f91f644bfce5a4a17f3af49 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Wed, 9 Sep 2026 22:04:48 +0200 Subject: [PATCH] js: wire onload/onerror on elements; RunPending sees timer-injected scripts Two independent gaps in dynamic script loading, both found tracing react.dev's own ChunkLoadError via direct instrumentation: 1. onload/onerror did not exist as properties on any element. webpack/Turbopack's classic chunk-loading helper sets both directly on a dynamically-created ` + root, err := dom.Parse(src) + if err != nil { + t.Fatal(err) + } + var logs []string + sess := Begin(root, Options{PageURL: "https://demo.test/", Timeout: 3 * time.Second, + Log: func(l string) { logs = append(logs, l) }}) + defer sess.Close() + sess.RunInitial() + sess.RunPending() + mustHaveJS(t, logs, "ok-ran", "ok-onload", "bad-onerror") + joined := strings.Join(logs, "\n") + if strings.Contains(joined, "should not fire") { + t.Fatalf("a handler fired for the wrong outcome: %v", logs) + } +} + +// TestSessionRunPendingReportsPendingScriptAppendedDuringDrainTimers covers a +// narrower case than TestSessionRunPending above: a