webdriverio / webdriverio/devtools

Epic: Cross-language capture architecture

Open
#278 0 comments 0 reactions 1 assignee View on GitHub

@vishnuv688 is already working on this.

Since Aug 12, 2026.

capture-architecture
Dominant language
TypeScript
Stars
10
Forks
2
Avg merge
1d 29m
Merged PRs (30d)
23

Description

Stop paying for capture logic once per language. The Python adapter currently re-implements roughly 1,206 lines that are not language-specific (frames 193, screencast 213, snapshot 197, capturer 152, types 115, plus utils, sources, constants and log capture), against roughly 1,595 lines that genuinely are (instrumentation 386, bidi 412, lifecycle 363, transport 188, pytest plugin 124, backend resolution 122). A Java adapter would repeat the same split.

The damage so far has been behavioural rather than textual: force-anchor drain, recovery drain and document-start preload were all fixed in the JavaScript adapters and never propagated to Python. Shared code cannot prevent a fix from failing to propagate; a shared executable spec can.

Four levers under evaluation in #298: move post-processing behind the wire, push more work into the shared page script, generate contract types rather than mirroring them, and add a cross-adapter conformance suite. #299, #300 and #301 all wait on that decision.

#288 is the first consumer of whatever #298 decides, and now sits under #330 (trace mode for the Python adapter) rather than the adapter epic. Scoping #330 turned up a constraint #301 has to account for: trace mode deliberately runs no backend, so 'identical artifacts from the same stream' cannot mean routing every adapter through the live one. Recorded on #301.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.