fix: polyfill global CSSStyleSheet for mermaid rendering#20
Conversation
|
Warning Review limit reached
More reviews will be available in 27 minutes and 7 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Why
CI has been flaky on
test/mermaid-elk.test.tswithReferenceError: CSSStyleSheet is not defined— five render tests fail together, but only sometimes (green most local runs, red on CI). It's a race, not a logic bug, and it surfaces now because we don't pin dependencies: a freshnpm installon the runner shifts timing just enough to trip it.Root cause
@acemir/cssom(jsdom's CSS engine, pulled in transitively byisomorphic-mermaid) reads a bare globalCSSStyleSheetwhile rendering.isomorphic-mermaidswapswindowfor svgdom's, which never defines that global, so depending on platform and timing the identifier is simply missing →ReferenceError. macOS almost always wins the race; the Linux runners almost always lose it.Fix
Define
CSSStyleSheetonce, up front inloadMermaid(), before any diagram renders — using the real class from the same cssom jsdom uses, with a stub fallback if that transitive package ever moves. This is the same shape as the existingwindow.*shims a few lines below (Error,Math, …) that already paper over the svgdom environment.Notes