Repository navigation
test(browser) Isolate checks from third-party requests - #287
Merged
Merged
Conversation
why: External README badges can hold the load event after the Ruby
legacy URL has reached its destination article. The shared
assertion affects multiple port integrations.
what:
- Check the destination URL, parsed article heading and title
- Hold badge responses in a regression without raising timeouts
- Add the focused --guide-redirect browser mode
Isolated samples with staged Ruby guides compared main 9a01505
with the Perl integration ca13fe5: cold GET 7.13s versus 7.34s,
final server RSS 2675 versus 2716 MiB, and warm redirects 0.30s
versus 0.34s. This sample showed little integration growth; it did
not establish the cause of the separate hosted ECONNRESET.
On this main-based branch, held badge responses reproduce the old
load timeout. Document readiness completes within the existing
deadline. Appearance checks retain their image-completion contract.
19 of 20 tasks
Contributor
Author
|
Independent reproduction from Clojure docs head The Clojure publication audit timed out after 20 seconds at Local Chromium observations with the existing page and checker:
This isolates an external image dependency after the redirect has succeeded. Badge rendering remains a separate product decision. The badge-to-text staging workaround has been removed from #276; that PR will rebase onto this fix after it lands. |
This was referenced Nov 8, 2026
why: Remote README badges can keep document load pending across browser checks. Context routing alone misses redirects and can be bypassed by later request decorators. what: - Create shared check contexts with an owned origin-restricted proxy - Fulfil foreign images locally and constrain existing decorators - Preserve load and visible-readiness assertions for legacy guides - Exercise redirects, popups, WebSockets and failed stream cleanup - Close owned contexts when policy registration fails
This was referenced Nov 8, 2026
why: The shared context factory needs each caller's site URL. Undefined base variables stopped the sidebar audit and two standalone checks. what: - Preserve the sidebar, clipboard and Ruby/Lua URL bindings - Reject undefined names in browser-check preflight - Exercise sidebar context admission and add a focused browser mode
tony
temporarily deployed
to
docs-preview-cleanup
November 9, 2026 13:38 — with
GitHub Actions
Inactive
tony
added a commit
that referenced
this pull request
Nov 9, 2026
…ts (#291) why: Six ports had docs branches ready but no published site, and three shared fixes were waiting behind them. Releasing them together gives one docs commit to trust for deployment and one set of caller pins to move, instead of six separate waves. what: - Add OCaml (#264), Haskell (#265), Erlang (#266, #278, #279, #280, #284, #292), Common Lisp (#268), Perl (#274) and Clojure (#276): native API pages, tested guides, navigation, landing and switcher entries, and cross-reference data for each - Keep browser checks from loading third-party resources, and pass the check origin to the three scripts that named an undefined base (#287) - Render guide badges at build time instead of hotlinking shields (#288) - Size the reference sidebar and member bars from the viewport, so the Chrome iOS keyboard no longer shrinks them (#290) - Make the OCaml model producer verify its native build inputs in their checkout and reject stale ones, with controls run in CI - Offer one switcher page per port, and title Perl's workspace guide "Workspace guide" - Regenerate the registry, mention index and cross-reference counts for the combined port set Base main 2593131, head dabe59b. Port heads: #264 7d4f88f and 73fb1ad, #265 dc024e3, #268 947da1f, #274 818fa2e, #276 a134503, #287 a437e97, #292 e7740d9.
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The Ruby legacy guide can reach its article while third-party README badges keep the browser's
loadevent pending. The shared browser factories now own an origin-restricted forwarding proxy per context. Direct foreign images receive local fixtures; other foreign connections are blocked, including redirects and requests dispatched through Playwright decorators. Same-origin scripts, styles and development WebSockets continue to work. Context shutdown also closes the proxy and its connections.The regression retains
loadsemantics and checks the destination URL, heading, title, production readiness state and visible guide text. Image appearance in these tests uses fixtures; production behavior when a real remote badge fails is tracked separately in #289. This change touches only browser-check scripts and adds no dependency or timeout allowance. The helper is scoped to the local HTTP development/preview servers; broader HTTPS, IPv6 and arbitrary proxy use are unqualified.This shared assertion affects both the Perl and Clojure integrations (#274, #276). The change is isolated from the Perl integration for independent review and merge.
Measurements
Recorded isolated samples with the same staged Ruby guides, detailed in the shared-loop investigation:
The separate hosted
ECONNRESETcause remains unverified. No timeout or retry allowance changes.Test plan
loadassertion on this main-based branch.The existing required-appearance suite passed in 38.84 seconds. The final cross-engine fixture completed in 11.78 seconds; the final fresh-server Ruby check completed in 30.10 seconds. Targeted script lint, syntax and whitespace checks passed in 0.97 seconds. Workspace lint passed in 2.20 seconds and type checks in 49.28 seconds. The local inner loop hit its existing two-second deadline and terminated after 2.78 seconds. That failed timing result remains recorded; full shared CI is pending.
The first full audit exposed an undefined origin variable in the sidebar demo. The correction also fixes the same migration error in the Ruby/Lua and clipboard entrypoints. A browser/node scope preflight now rejects undefined names across the check scripts. The earlier source review missed these bindings; that failure remains recorded.
Correction validation: the new sidebar-admission regression fails on the original code in 0.90s and passes with the network fixture in 3.03s. The scope audit passes in 0.16s. The actual sidebar checker passes 18 mode, viewport and theme combinations in 96.98s including startup and teardown; its captured appearance/fetch diagnostics are retained. A focused
--sidebar-demomode runs that existing checker. Independent scoped review finds no blocking source issue.Combined release PR #291 contains corrected head
a437e971a32fdb36662e921af74ca1ff9d81f393and the Perl integration. It is the owner-selected full-site gate. The redundant standalone follow-up run was cancelled after checking that ancestry; it is not counted as passing. The maintainer owns readiness, merge and deployment.