OptionalAllowedDomains the browser may visit. When set, all others are blocked.
OptionalAPIKey-resolution seam for the controller and judge LLMs this engine instantiates itself — the
direct-LLM path, taken when the caller pins ControllerModel / JudgeModel. Asked for ONE
driver class; its answer is used when it has one, else the platform key — the same order as
GetAIAPIKey (a run's key, then the environment's), which for prompts is only the legacy
tier: MJ Credentials are not consulted here. A resolver rather than a key list, so the engine
can ask for the class it needs without holding the caller's credentials.
Not wired in MJ yet. ComputerUseAction does not set it, and MJComputerUseEngine's
default path runs the controller and judge through stored prompts via AIPromptRunner, which
does not consult it. Absent ⇒ platform keys, which is every run today that does not set it.
OptionalApplicationFree-form markdown about the application under test, rendered into the
controller prompt under "## Application Context" so the LLM doesn't
rediscover navigation landmarks every test. Typically sourced from
TestSuite.Configuration.applicationContext.
OptionalAppApp-specific readiness/busy signals the adaptive settle loop consults before perceiving. Merged with the engine's app-neutral defaults. Omit for zero-config heuristic settling.
OptionalAuthPer-domain authentication configuration
OptionalBlockedDomains explicitly blocked. Evaluated after AllowedDomains — blocked always wins.
OptionalBrowserBrowser-specific configuration (viewport, user agent, timeouts)
OptionalCheckpointsOrdered tour checkpoints. When set, the run passes iff every checkpoint latches met (sticky) and the final verdict is synthesized from the latch state rather than a single end-state judge. Empty → single-end-state judging over ValidationCriteria.
OptionalContextlocalStorage + IndexedDB captured once post-login and restored before the app boots, so it doesn't cold-boot its metadata cache. Restored best-effort. Omit to cold-boot.
OptionalControllerModel selection for the controller LLM
OptionalControllerOverride for the controller system prompt
OptionalElementExtract the page's interactive elements into a stable indexed list each step so the controller can act by index (ClickElement/TypeIntoElement) with locator-based auto-wait instead of estimating coordinates. Default off (coordinate/vision mode).
OptionalEphemeralThe browser context will be destroyed right after this run rather than recycled. Teardown then skips the between-test state scrub, which would otherwise re-navigate to the app origin — a wasted app boot. Leave false/unset for recycled shared contexts, where the scrub is required.
Natural-language goal for the agent to accomplish
Run browser in headless mode (default: true)
OptionalHintsPer-test UI hints injected after the goal in the controller prompt — e.g. "the filter panel opens via the funnel icon".
OptionalJudgeJudge evaluation frequency (default: EveryStep). Use EveryNSteps or OnStagnation to reduce LLM costs.
OptionalJudgeModel selection for the judge LLM
OptionalJudgeOverride for the judge prompt
OptionalLogReceives all engine log messages in addition to console output.
OptionalMaxMax browser actions executed per step before the batch stops (default 4). The engine also halts on a failed action, a mid-batch route change, or a page-changing action.
OptionalMaxMaximum agent time (ms) before the run expires with TimeBudgetExceeded,
excluding engine-side settle waiting so a slow app doesn't consume the
agent's reasoning budget. On expiry one forced final judge runs so the run
is still scored. Omit/0 to disable. Distinct from MaxSteps, which bounds
decision count.
Maximum controller loop steps before forced termination (default: 30)
OptionalPreludeScripted navigation run before the agentic loop, zero LLM. Omit for tests that begin at StartUrl, or whose subject IS navigation.
OptionalPreviousA memo from a prior failed attempt at this goal, injected into the controller prompt so a retry is non-blind. Typically the previous attempt's ComputerUseResult.FailureMemo.
OptionalReplayHow far a diverged replay step may be repaired before the run gives up.
llm (default) — deterministic role+name re-resolution, escalating an
ambiguous or failed match to ComputerUseEngine.healTargetViaLLM.deterministic — role+name re-resolution only; the model is never asked.off — no repair at all; the first failed guard diverges.off is the setting for a script treated as a contract: a step that no
longer matches is the finding, and healing it would hide the UI change the
test exists to catch. Pair it with AllowLLMFallback: false for a replay
that can only pass by executing exactly what was recorded.
Delay before each screenshot capture, giving the page time to render.
(default: 500, 0 disables). Only the floor fallback when no
AppProfile is supplied — otherwise the settle loop's MinWaitMs governs.
Recent screenshots included in controller context, as a ring buffer. Higher values give more context but increase token usage. (default: 20)
OptionalStartStarting URL to navigate to
OptionalToolsTools the LLM can invoke during execution
OptionalTraceWhen set, records a forensic browser trace (DOM + screenshots + network + console) and writes it here on completion, echoed on ComputerUseResult.TracePath. Retain-or-discard is the caller's policy. Unset skips tracing entirely.
OptionalValidationThe test's authored pass criteria, threaded into the judge, which returns a
per-criterion verdict; Done is derived as all-criteria-met. Empty →
scalar judging.
OptionalVariableValues substituted into the %placeholder% tokens a recorded trace stores
in typed text / navigate URLs, so a "create record named %recordName%"
trace runs with a fresh name each time. Ignored on the LLM tier.
Complete configuration for a Computer Use engine run.