Puppeteer ConnectionTransport adapter for Adobe UXP CDP endpoints.
pnpm add @bubblydoo/uxp-puppeteer-transport puppeteer-core
import puppeteer from 'puppeteer-core';
import { createUxpPuppeteerTransport } from '@bubblydoo/uxp-puppeteer-transport';
const transport = await createUxpPuppeteerTransport(cdpUrl, executionContextId);
const browser = await puppeteer.connect({ transport, defaultViewport: null });
const [page] = await browser.pages();
const value = await page.evaluate(() => 1 + 1);
Puppeteer expects a browser-level CDP target (Target.*, Browser.*), but Photoshop exposes a page-level UXP endpoint. This transport bridges that mismatch by emulating browser-target behavior and forwarding compatible runtime commands.
Target.targetCreated / Target.attachedToTarget and related browser-level responses so puppeteer.connect() can succeed.Runtime.getProperties when awaitPromise is unreliable.sessionId so Puppeteer can route messages through a stable session.