Integrations
Recorder
JS-injection recorder (no CDP, cross-browser): captures click / change
events and emits a WR_* action JSON draft. Sensitive fields
(type=password, names matching password / card / cvv / ssn / secret /
token / api_key / otp / passcode, 13–19-digit values) are masked by
default.
CI / integrations
GitHub Actions annotations —
emit_failure_annotations/emit_from_junit_xmlproduce::error file=…::lines.JIRA / TestRail —
jira_create_failure_issues/testrail_send_resultsfor post-run sync.Slack / generic webhook —
notify_run_summary.Selenium Grid 4 docker-compose —
docker/docker-compose.ymlships hub + Chrome + Firefox nodes.IDE configs —
docs/ide/vscode-settings.example.jsonanddocs/ide/jetbrains-jsonschemamapping.example.xmlwire the action JSON schema into VS Code / JetBrains.
AI assistance
WebRunner ships no built-in LLM client. set_llm_callable(fn)
registers any Callable[[str], str] and powers:
suggest_locator(html, description)— last-resort locator suggestion.llm_self_heal_locator(name, html_provider)— pluggable hook for the self-healing locator flow.generate_actions_from_prompt(request)— natural language → action JSON draft.explain_failure(test_name, error_repr, console=, network=, steps=)— produces a JSON RCA:{likely_cause, evidence, next_steps, confidence}.
MCP server
WebRunner ships a Model Context Protocol server so MCP-aware clients can drive it over JSON-RPC stdio:
python -m je_web_runner.mcp_server
Default tools registered (19 in total):
Action authoring & lint:
webrunner_lint_action,webrunner_score_action_locators,webrunner_locator_strength,webrunner_format_actions,webrunner_parse_markdown,webrunner_render_template,webrunner_translate_actions_to_playwright,webrunner_translate_python_to_playwrightCode generation:
webrunner_pom_from_htmlQuality & triage:
webrunner_a11y_diff,webrunner_cluster_failures,webrunner_compute_trendSecurity:
webrunner_scan_pii,webrunner_redact_piiReporting & contract:
webrunner_summary_markdown,webrunner_validate_responseSharding / infra:
webrunner_diff_shard,webrunner_render_k8s,webrunner_partition_shard
Custom tools register via McpServer.register(Tool(...)); the server
implements MCP 2024-11-05 (initialize / tools/list /
tools/call / resources/list / ping / shutdown).
Action JSON LSP
python -m je_web_runner.action_lsp
Standard LSP 3.17-shaped server over stdio. textDocument/completion
suggests every registered WR_* command; textDocument/didOpen /
didChange push publishDiagnostics based on
linter.action_linter.lint_action().