Skip to content

Planning: playwright-rs-cli crate #77

Description

@padamson

Planning issue for a future `playwright-rs-cli` crate. Not scheduled for any specific release; this is a design / scoping placeholder.

Why a CLI

The Playwright JS CLI handles codegen, the recorder, the trace viewer, and the inspector. Reimplementing those wholesale in Rust is a months-long product, not a feature. The interesting question is what unique value a Rust CLI offers — the candidates are:

  • Interactive REPL on top of `playwright-rs::Debugger` + `pick_locator`. A short-feedback-loop tool for exploring a page from a terminal: arm the debugger, click an element, get the resolved locator pasted back as Rust code, step through actions. The closest JS equivalent is the Inspector's interactive panel, but a TUI version that emits Rust snippets has a clear audience.
  • Trace-file consumer. Open a Playwright trace zip from disk, navigate the action graph, dump action metadata as JSON or rendered text. Closest analogue: the JS `npx playwright show-trace`, but headless and scriptable.
  • `screencast` recorder/viewer. Once `Page::screencast` lands (#TODO once filed), a CLI wrapper that streams frames to disk or to a TUI preview is the kind of thing other bindings don't have.

Crate-layout questions to answer before implementing

  • Workspace member or separate repo?
  • Independent versioning from `playwright-rs` (definitely yes, but how locked is the dependency? `playwright-rs = "0.13"` or git-pinned?)
  • Binary distribution: cargo install only, or also pre-built binaries via release.yml?
  • Feature-flag the optional surfaces (e.g. `tui`, `screencast`)?

Out of scope for now

Recreating playwright-cli's recorder mode (it's a JS-side instrumentation that injects scripts into the page). The Rust binding has `pick_locator` for the same use case at a smaller scope.

Next step

When we're ready to start, this issue gets promoted to a milestone with an explicit scope and a target release.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions