Conversation
…owser Lightpanda is a thin CDPBrowser subclass that self-launches `lightpanda serve` with telemetry disabled. The spawn/free-port/wait/kill lifecycle moves from Obscura into CDPBrowser so both helpers share it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An eighth duplicated *Config typedef makes TypeScript report the conflicts as one file-level error that @ts-ignore cannot suppress. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Install steps per engine and platform, one config to switch engines, and latest-release download links instead of a hardcoded version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been 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.
What
Adds an experimental
Lightpandahelper that drives Lightpanda 1.0.0 over raw CDP, built onCDPBrowserthe same wayObscurais.The helper resolves the binary (
binaryPath→LIGHTPANDA_PATH→lightpandaonPATH), startslightpanda serveon a free port withLIGHTPANDA_DISABLE_TELEMETRY=true, and kills it when the run ends. Settingendpointonly attaches.How
CDPBrowsernow owns the server lifecycle. The spawn / free-port / wait-for-/json/version/ SIGTERM→SIGKILL code moved out ofObscura.jsunchanged and is driven by a small descriptor passed to_manageServer(config, { name, envVar, args, env, releases }).ObscuraandLightpandaare now presets plus a descriptor. All new paths are gated on that descriptor, so plainCDPBrowserandKitesurfbehave as before.input: 'synthetic',capabilities: { layout: 'real', screenshot: false }. Layout is pinned because the runtime probe (getComputedStyle(document.documentElement)) throws on Lightpanda'sabout:blankand would fail_before. Lightpanda paints nothing but does compute visibility-related styles and element boxes, soseeElementand thewaitForVisiblefamily work.Bunoshfile.js:docsHelperMarkdownassumeddoc[0]was the class. For a subclass with only a constructor, documentation.js sorts theconfigtypedef first, which collapsedObscura.mdto 31 lines. It now picks the class by kind.Results
Shared web API suite (
test/helper/webapi.js), run locally:Acceptance: 13 scenarios tagged
@Lightpandapass through the CLI. Unit suite: 834 passing.Documented skips for Lightpanda, each with the reason inline:
scroll:block: no scrollable viewport, positions stay 0#clickXY: nothing is painted, so coordinates are not hit-testednavigator.clipboardis unavailablecapabilities.screenshot === falseCoverage
CDPBrowseris abstract and is tested through its subclasses: the Obscura and Lightpanda workflows both run the shared web API suite and the acceptance scenarios, which exercise the relocated server lifecycle on every PR.Lightpanda has no native Windows binary (WSL2 only), and its Linux binaries need glibc.
Docs
docs/alternative-browsers.mdgains a "Try Lightpanda with your Playwright suite" walkthrough: install the binary, switch engines with one env var in the existing config, run, which Playwright features to tag out, and a CI snippet. The walkthrough was run as written against the test app.CI
New
lightpanda.ymlworkflow, mirroringobscura.yml: Lightpanda pinned to 1.0.0 and verified by SHA-256, runs the helper spec and the acceptance scenarios.🤖 Generated with Claude Code