docs/plans/2026-04-11-slate-browser-transport-architecture-plan.md
Turn the browser/mobile proof work into a real architecture plan for the next testing system move.
This plan is grounded in:
agent-browser, and AppiumIt is not a generic framework brainstorm. It is the next durable architecture cut.
Best long-term architecture:
Strong take:
slate-browser foreveragent-browser can drive iOS Simulator Safari locally well enough for:
That means the architecture should reflect:
Long-term home:
packages/slate-proof-coreImmediate posture:
It owns:
automated-directautomated-proxymanual-device-blockingIt does not own:
Keep:
packages/slate-browserIt becomes explicitly multi-transport for browser surfaces only.
Owned transports:
playwright
agent-browser
appium
Future transport candidates:
agent-browser for iOS browser proofIt owns:
It does not own:
Create later:
packages/slate-deviceWhy separate:
agent-device is app/device-centric, not browser-centricslate-browser would rot the transport modelIt should consume the shared proof core once the first native editor lane is worth building.
Do not do these:
EditorDriver abstraction that pretends browser and native expose the
same action modelCurrent best order:
agent-browser iOS Simulator SafariWhy:
Current best order:
agent-deviceBut this starts later.
Goal:
Scope:
agent-browser iOSSuccess bar:
Goal:
Scope:
packages/slate-deviceSuccess bar:
slate-browserslate-deviceThat sequencing matters.
If we create slate-device before the browser-mobile adapters settle, we are
just moving confusion into more folders.
Architecture work does not count unless it preserves or improves the current proof story.
Minimum preserved proofs:
pnpm proof:agent-browser:ios:localpnpm proof:agent-browser:ios:placeholder-input:localpnpm proof:appium:android:localpnpm proof:appium:android:placeholder-input:localProceed with:
slate-browserslate-device until the first native lane is actually readyBluntly:
slate-browser grows broader firstslate-device appears later