@playrunner/playwright
Playwright Integration
Trigger Playwright test runs from workflow nodes with repository, script, artifact, and runner configuration built into the package.
npm install @playrunner/playwright @playrunner/githubRunner configuration panel
Default-exports playwrightIntegration and also exports
PlaywrightConfigPanel for repository selection, inline script editing, zip
upload metadata, environment injection, and runner resources.
GitHub-backed auth
Repository authentication uses GithubSettingsModal from
@playrunner/github, so both packages must be installed.
Workflow runner infrastructure
Playwright does not currently declare an Orchestrator contribution. Execution remains on the explicit host-managed Playwright runner path.
Package-owned icon
The Playwright SVG lives inside the package and is resolved by the frontend entrypoint.
Exports
import playwrightIntegration, {
PlaywrightConfigPanel,
} from '@playrunner/playwright';
import playwrightApiContribution, {
playwrightRouter,
} from '@playrunner/playwright/api';
The same contribution objects remain available as named exports. The default exports are the build-composition contract.
Frontend
The frontend entrypoint default-exports playwrightIntegration, which keeps the
existing integration id as playwright so saved workflows continue to resolve
their test runner nodes.
Playwright owns the configuration UI, including repository selection, inline script editing, zip upload metadata, environment variable injection, and runner resource settings.
When GitHub is connected, the panel uses the authenticated
GET /api/github/repositories and GET /api/github/branches routes. It uses
credentialStatus.configured to decide when discovery can start; it does not
read an access token from integration data.
Playwright keeps its input panel enabled, so it can receive inbound workflow context from nodes such as Environment even though its selector category is Trigger.
GitHub Dependency
Playwright repository authentication still uses GitHub. It imports
GithubSettingsModal from @playrunner/github and declares
@playrunner/github as a peer dependency. The consuming frontend must select
both packages as direct production dependencies. The build composer discovers
their package-owned metadata and generates static imports; neither package
requires a central registration entry.
During workspace development, both dependencies must resolve locally. Pointing
only @playrunner/github at packages/github leaves the published Playwright
configuration panel in the frontend bundle, so changes to repository discovery
will not appear.
API
The API entrypoint default-exports playwrightApiContribution, containing the
empty playwrightRouter and its /api/playwright mount path. The package
manifest declares the playwright ID plus its . frontend and ./api surfaces,
and both entrypoints default-export their contribution. Frontend and API builds
discover those surfaces from installed direct production dependencies and
generate static imports.
GitHub repository and branch discovery belongs to the GitHub package API at
/api/github; the Playwright API router remains empty.
Orchestrator
The Playwright package does not currently declare an ./orchestrator surface.
Its runner preparation and execution are explicit host-managed paths in
apps/runners/orchestrator. Installing the package therefore contributes its
frontend and API surfaces, while executable Playwright support still depends on
the host runtime already bundled into the Orchestrator image.
Assets
The Playwright SVG lives inside the package at packages/playwright/assets/playwright.svg. The frontend entrypoint resolves it with new URL(..., import.meta.url), so the app does not need a duplicate public asset.