Skip to main content

@playrunner/playwright

Playwright Integration

Trigger Playwright test runs from workflow nodes with repository, script, artifact, and runner configuration built into the package.

View on npmnpm install @playrunner/playwright @playrunner/github
Trigger nodeGitHub dependencyRunner config
Node typeTrigger
Peer dependency@playrunner/github
Backend mount/api/playwright
Frontend

Runner configuration panel

Default-exports playwrightIntegration and also exports PlaywrightConfigPanel for repository selection, inline script editing, zip upload metadata, environment injection, and runner resources.

Dependency

GitHub-backed auth

Repository authentication uses GithubSettingsModal from @playrunner/github, so both packages must be installed.

Execution

Workflow runner infrastructure

Playwright does not currently declare an Orchestrator contribution. Execution remains on the explicit host-managed Playwright runner path.

Assets

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.