Skip to content

Releases: sagarpalsapure/orca-playwright-bridge

v1.5.2 — /orca skill-reference fix

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 05 Jul 12:07

Fixed

  • /orca command pointed at a skill that no longer exists. The command template told the agent to lean on the orca-browser skill — renamed to orca-automation in v1.5.0. Both references in commands/orca.md corrected so the shipped command resolves to the right skill.

Docs-only patch; no code/API changes. Published as orca-playwright-bridge@1.5.2.

v1.5.1 — Orca 1.4.123 re-verify

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 05 Jul 11:53

Re-verified the bridge against Orca 1.4.123 (docs were stamped 1.4.120).

Two upstream limitations Orca fixed

  • page.pdf() / Page.printToPDF (#7032) now works. Added orca.pdf(path?, opts?) to the raw-CDP driver (connectOrca()) + types + a capability test asserting real %PDF- bytes. Playwright's page.pdf() tunnels through the bridge too.
  • Profile storage isolation (#6923) now works. repro/profile-isolation.js (once a bug reproducer) now PASSES as a regression guard.

Still holds (re-probed on 1.4.123)

  • context.newCDPSession() blocked (#7033), page.fill() needs focus (#7035), page.reload() fixed (#7031).

New finding — window.open() popups are activation-gated on 1.4.123

The handler fires but no tab spawns without transient user activation / foreground focus (Orca-side behavior, not a bridge defect). waitForNewTab() now skips gracefully when Orca declines to open the popup; documented in multi-tab-and-popups.md.

Housekeeping

Re-stamped verified docs 1.4.120 → 1.4.123 (mobile/tracing/dialog docs left at 1.4.120 — not re-run this pass). Suite: 33 pass / 0 fail / 5 skip. Published as orca-playwright-bridge@1.5.1 on npm.

v1.2.3 — multi-session fix + attachOrcaTab()

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 03 Jul 10:58

Fixed

  • Multi-session cross-driving — two independent drivers could end up driving each other's tab, because default discovery fell back to "the first/active endpoint" (which flips whenever any session opens or focuses a tab).
    • discoverCdpUrl() now throws with the full tab list when >1 tab is open and no tab was specified, instead of silently picking the active one.
    • openOrcaTab() resolves its port by the created browserPageId rather than a racy port-set diff.

Added

  • attachOrcaTab(pageId) — re-attach Playwright to a tab you already own by its browserPageId, regardless of which tab is focused. The multi-session-safe reconnect; close() leaves the tab open.
  • findEndpointForPageId(pageId) — exported helper.

Tested against Orca 1.4.120 (regression test: attach lands on tab A even when tab B is active).

v1.2.2 — mockResponse()

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 03 Jul 10:26

Added

  • mockResponse(patterns, response) on the raw-CDP driver (connectOrca()) — fulfill matching real requests with a canned status/headers/body via CDP Fetch.fulfillRequest while letting the rest pass through. The reliable alternative to Playwright's route.continue(), which hangs on real requests through the bridge. Returns { counts: { mocked, passed }, stop() }.

Verified / not added

  • Probed Network.getResponseBody for HAR-with-bodies: unreliable through the proxy (No resource with given identifier found), so it's intentionally left out.

Tested 30/30 against Orca 1.4.120.

v1.2.1 — Orca 1.4.120 (page.reload fixed)

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 03 Jul 09:32

Verified against Orca v1.4.120.

Fixed upstream 🎉

  • page.reload() now works. Orca 1.4.120 fixed it — it previously closed the tab (stablyai/orca#7031). Verified: reload keeps the tab and re-executes the document. The connection's reload() helper stays as a fallback for Orca < 1.4.120. README, orca-browser skill, and /orca command updated.

Re-verified (still open)

Against 1.4.120, these still hold: profile isolation (#6923), page.pdf (#7032), newCDPSession (#7033), page.fill-focus (#7035). No new browser verbs since 1.4.117.

Tests: 29/29.

v1.2.0 — Orca 1.4.117 verbs

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 02 Jul 19:17

Verified against Orca v1.4.117 · playwright-core ^1.61.1.

Added — new orcaTabs() verbs from Orca 1.4.117

  • Dialog handlingacceptDialog(text?) / dismissDialog() for JS alert/confirm/prompt (previously an unavoidable blocker; dismiss no-ops safely when no dialog is open).
  • Web storagegetStorage(key) / setStorage(key, value) / clearWebStorage() (native; { session: true } for sessionStorage).
  • highlight(selector) — outline an element (demos/debugging).
  • download(selector, path) — download a file by selector.
  • exec(command) — escape hatch to run any raw agent-browser command.
  • (Clipboard verbs exist in 1.4.117 but are permission-gated, so not wrapped.)

Verified

Re-ran every documented limitation against Orca 1.4.117 — none fixed: profile isolation (#6923), page.reload (#7031), page.pdf (#7032), newCDPSession (#7033), page.fill-focus (#7035) all still hold.

Tests: 29/29. Types type-checked under --strict.

v1.1.1 — blunt install messaging

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 01 Jul 20:12

Docs patch. The README now states plainly that npm i orca-playwright-bridge installs the library only — the full setup (the orca-cdp CLI + the /orca Claude Code command) is npx orca-playwright-bridge setup. Republished so the npm page renders the updated README. No code changes since v1.1.0.

v1.1.0 — one-command install

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 01 Jul 19:54

Verified against Orca v1.4.114 · playwright-core ^1.61.1.

One-command install (new)

npx orca-playwright-bridge setup

Installs the package (+deps) into ~/.orca-playwright-bridge, symlinks the orca-cdp CLI + libs into ~/.local, and installs the /orca Claude Code command — the whole thing, from npm, in one command. The npm-free equivalent still works too:

curl -fsSL https://raw.githubusercontent.com/sagarpalsapure/orca-playwright-bridge/main/get.sh | bash

Changed

  • Commands simplified to a single /orca — removed /orca-pw and /orca-test; the detailed playbook + traps live in the orca-browser skill and README.

Everything else (raw-CDP power tools, waitForNewTab, iframe reads, blockRequests, recordScreencast, tab-focus, the plugin/skill) carries forward from 1.0.x. Tests: 27/27.

v1.0.7 — Claude Code plugin + skill

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 01 Jul 19:20

Verified against Orca v1.4.114 · playwright-core ^1.61.1.

Claude Code plugin + skill (new)

This release makes the repo an installable Claude Code plugin:

  • orca-browser skill — auto-invoked when a task needs to drive a page in the Orca app. It carries the capability map and the verified traps (click-then-fill, page.reload() closes the tab, popups → waitForNewTab, page.routeblockRequests, iframes read-only, no page.pdf, profile-isolation bug) so an agent uses the bridge correctly on the first try.
  • /orca-pw and /orca-test commands, rewritten for the current API.
  • Install: /plugin marketplace add sagarpalsapure/orca-playwright-bridge/plugin install orca-playwright-bridge.

Added (rolled up since 1.0.6)

  • waitForNewTab(action) — capture a page-spawned popup / target=_blank tab (no CDP endpoint) and drive it via the native orcaTabs() driver.
  • orcaTabs().byId(id).activate() — bring a tab to the foreground.
  • connectOrca().blockRequests(patterns) — block/intercept real requests via CDP Fetch (the working alternative to Playwright route.continue/abort, which hangs).
  • connectOrca().recordScreencast(opts) — record the page as a frame stream; save(dir) → numbered images.

Changed

  • openOrcaTab() now focuses the new tab by default (Orca opened it in the background). Opt out with { focus: false }.

Fixed

  • fullPageScreenshot() no longer returns 0 bytes on pages taller than Chrome's 16384px limit.
  • Child <iframe>s now surface to PlaywrightswapFrameIds now rewrites parentId/parentFrameId, so page.frames() includes iframes and frameLocator() reads work (incl. cross-origin). Interaction inside iframes still isn't supported (no child main-world context).

Tests: 27/27.

v1.0.6 — TypeScript types + raw-CDP power tools

Choose a tag to compare

@sagarpalsapure sagarpalsapure released this 01 Jul 18:11

Verified against Orca v1.4.114 · playwright-core ^1.61.1.

The release that carries everything built since 1.0.5 to npm.

Added

  • TypeScript typesindex.d.ts (main / ./bridge) + connect.d.ts (./connect). TS consumers get full types instead of any; type-checked under --strict in CI.
  • connectOrca() raw-CDP power tools — the proxy answers ~35 CDP domains on the page socket, so the raw driver now wraps: captureConsole(), recordNetwork() + .har() (HAR 1.2), throttle()/offline(), cookies()/setCookie()/clearCookies(), storage()/clearStorage(), emulate({ device, timezone, cpu, colorScheme }) (instant, no reload), fullPageScreenshot(), captureMHTML(), axTree(), domCounters(), metrics().
  • orcaTabs().evalAll(js) — evaluate in every open tab with genuine wall-clock concurrency.
  • Safe reload() on the Playwright connection (re-navigates the current URL; page.reload() closes the tab through Orca's proxy).
  • CI — GitHub Actions (Node 20/22) + a .d.ts type-check job.
  • examples/ — runnable multi-tab, login-form, device-screenshot scripts.

Changed

  • switchToOrcaTab() polls for the active tab instead of a fixed 700 ms sleep.
  • README no longer calls the synchronous orcaTabs() driver "concurrent"; points to evalAll() / per-tab bridges.

Notes

All documented limitations were re-verified against 1.4.114 (none fixed) and are tracked upstream: stablyai/orca #7031–#7035 and #6923.

Full test suite: 22/22.