/** * Single source of truth for step keys that require a real browser — i.e. a * WebDriver/Appium driver and a browser binary. A test that contains any of * these steps needs a driver spun up; one that contains none can run * driver-free (pure HTTP/CLI steps like `httpRequest`, `runShell`, `runCode`, * `checkLink`). * * This list was previously duplicated in three places (`driverActions` in * `core/resolveTests.ts` and `core/tests.ts`, and `BROWSER_STEP_KEYS` in * `runtime/inferRuntimeNeeds.ts`) which had already drifted. It lives in the * runtime layer because `core/*` imports from `runtime/*` (never the reverse), * so this is the only place all three consumers can share it without a cycle. * * `scroll`/`moveMouse` aren't wired v3 step keys today (absent from `step_v3` * and the `runStep` dispatch), so they match no real step — they're kept for * forward-compatibility and are inert. */ export declare const BROWSER_STEP_KEYS: readonly ["annotate", "click", "dragAndDrop", "find", "goTo", "loadCookie", "moveMouse", "record", "runBrowserScript", "saveCookie", "screenshot", "scroll", "stopRecord", "swipe", "type"]; /** * True when any action payload in the step names an app surface with the * object form (`surface: { app: … }`). Such a step drives a native app * driver, not a browser, so browser-need classification must exclude it even * though its step key (`click`/`swipe`/`find`/`type`/`screenshot`) is one of * the shared BROWSER_STEP_KEYS above. The bare-string surface form is * identity-only and resolves against the surface registries at runtime, so it * isn't treated as app-targeting here. * * This lives in the runtime layer beside BROWSER_STEP_KEYS so the runtime * inference (`inferRuntimeNeeds`) and core's per-context predicate * (`isBrowserRequired`, `isAppDriverRequired` in core/tests/appSurface.ts, * which re-exports this) share one definition — core imports from runtime, * never the reverse, so this is the only place both can agree without a cycle. */ export declare function stepTargetsAppSurface(step: any): boolean; /** * A step's startSurface descriptors as a flat list (multi-surface Phase 6): * the object form yields one, the parallel array form yields each item, and * a step without startSurface yields none. Kind is decided by each * descriptor's discriminating key (`app` | `browser` | `process`) — the * three schema branches are mutually exclusive by construction. */ export declare function startSurfaceDescriptors(step: any): any[]; /** * True when the step's startSurface opens at least one BROWSER surface. * Such a step needs a WebDriver session + browser binary even though * `startSurface` isn't one of the BROWSER_STEP_KEYS — it's the Phase 6 * sibling of the goTo opener. Used by driver/browser-need classification * (isDriverRequired / isBrowserRequired / inferRuntimeNeeds). */ export declare function stepOpensBrowserSurface(step: any): boolean; /** * True when the step's startSurface opens at least one APP surface. The app * preflight (per-context Appium server + native driver probe) keys off this * — a browser/process-only startSurface must not trigger it. */ export declare function stepOpensAppSurface(step: any): boolean; /** * True when the step's startSurface opens at least one background PROCESS * surface. Part of the non-browser-surface signal below (ADR 01081). */ export declare function stepOpensProcessSurface(step: any): boolean; /** * True when any action payload in the step names a background process with * the object form (`surface: { process: … }`). Such a step writes to the * process's stdin — it never needs a browser. The bare-string form stays * identity-only, same as stepTargetsAppSurface. */ export declare function stepTargetsProcessSurface(step: any): boolean; /** * The step keys whose actions act on a surface and route through the * active-surface resolver (ADR 01081): omitted `surface` targets the most * recently active surface of ANY kind. Deliberately narrower than * BROWSER_STEP_KEYS — `annotate`, cookies, `goTo`, `record`, etc. are * browser-only by design and always imply a browser. */ export declare const SURFACE_SENSITIVE_STEP_KEYS: readonly ["click", "find", "screenshot", "swipe", "type"]; /** * True when the step performs a surface-sensitive action WITHOUT an explicit * `surface` reference — the payload shapes without one include the string / * boolean / array shorthands (`find: "text"`, `screenshot: true`, * `type: ["hi"]`). Such a step routes to the active surface at runtime, so * browser-need classification must not unconditionally count it as a browser * step (see testHasNonBrowserSurfaceSignal). */ export declare function stepIsSurfacelessInteraction(step: any): boolean; /** * True when any step in the test opens or explicitly targets a NON-browser * surface (an app or a background process). In such a test, a surface-less * interaction step is routed to the active surface at runtime and must not * force browser provisioning; a test with no such signal keeps the browser * default (byte-compatible with pre-ADR-01081 classification). */ export declare function testHasNonBrowserSurfaceSignal(steps: any): boolean; //# sourceMappingURL=browserStepKeys.d.ts.map