Conversation
The MCP server was last touched when only nine helpers existed; ~30 new pure-function modules have landed since (action_formatter, md_authoring, sel_to_pw, pom_codegen, pii_scanner, failure_cluster, a11y_diff, locator_strength's batch scorer). This wires the most useful 10 of them into ``build_default_tools()`` so MCP-aware clients can call them directly. New tools: - webrunner_format_actions - webrunner_parse_markdown - webrunner_translate_actions_to_playwright - webrunner_translate_python_to_playwright - webrunner_pom_from_html - webrunner_scan_pii - webrunner_redact_pii - webrunner_cluster_failures - webrunner_a11y_diff - webrunner_score_action_locators Bug: _tool_lint_action used dataclass-style attribute access (f.level, f.message) but ``lint_action`` actually returns ``List[Dict[str, Any]]`` keyed on rule / severity / message / location. Pass the list through verbatim so MCP clients see the same shape the Python API exposes. Test: TestNewTools covers each new tool end-to-end through the MCP server. TestDefaultTools.test_full_default_tool_surface freezes the 19-tool list so accidental removals fail loudly in review. README + EN/ZH Sphinx docs grouped the now-larger tool list by purpose (authoring / codegen / quality / security / reporting / infra) so operators can scan the surface at a glance. Tests: 1230 -> 1241.
|
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 37 |
| Duplication | 0 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
52 commits since PR #87 merged. The big-ticket item is bringing the MCP server up to date and the bugs that audit caught.
MCP server: 9 → 19 tools
The MCP server was last updated when only nine helpers existed. Around 30 new pure-function modules have landed since (action_formatter, md_authoring, sel_to_pw, pom_codegen, pii_scanner, failure_cluster, accessibility.a11y_diff, locator_strength's batch scorer, …). This PR wires the most useful 10 of them into
build_default_tools():webrunner_format_actions,webrunner_parse_markdown,webrunner_translate_actions_to_playwright,webrunner_translate_python_to_playwright,webrunner_score_action_locatorswebrunner_pom_from_htmlwebrunner_a11y_diff,webrunner_cluster_failureswebrunner_scan_pii,webrunner_redact_piiBug found by the MCP audit
_tool_lint_actionused dataclass-style attribute access (f.level,f.message,f.rule) butlint_actionactually returnsList[Dict[str, Any]]. Every MCPtools/callagainstwebrunner_lint_actionwas crashing with'dict' object has no attribute 'level'. Now passes the list through verbatim, matching the Python API's shape.Surface-freeze test
TestDefaultTools.test_full_default_tool_surfaceasserts the 19-tool set explicitly so accidental removals fail loudly in review.Earlier rounds rolled into this PR
examples/cookbook (counting_stars, google_search, form_submit, smart_wait_demo, fanout_demo, pii_redact_demo, quick_smoke).test/integration_test/— 30 tests across 10 files wiring 2+ modules with real I/O. Surfaced a Windows-only LSP CRLF framing bug inpython -m je_web_runner.action_lsp(fixed bysys.stdout.reconfigure(newline="")).test/e2e_test/plus.github/workflows/e2e_browser.ymlrunning daily againstselenium/hub:4.20.0.je_web_runner.api.{authoring, debugging, frontend, infra, mobile, networking, observability, quality, reliability, security, test_data}re-exporting the 80+ helpers.api_reference.rstwith mock imports for soft deps._safe_echo), nested-ternary collapse (S3358), and security annotations (S5042 / S4828 / S5332 / S5852 / S1313).workspace_lockdistribution walk cached;socket_serverquit tests went from 2.42s → 0.49s; suite −25%.Bug catalogue across this PR
webdriver_wrapper.execute_scriptswallowed return values — caught by JSON cookbook smoke. Fixed.Content-Lengthframing corrupted on Windows by stdout newline translation — caught by integration subprocess test. Fixed viasys.stdout.reconfigure(newline="")._fileobj2outputAttributeError +I/O operation on closed file— caught in CI rerun. Fixed by switching toproc.communicate(input=...)instead of manualstdin.close()._tool_lint_actiondict-vs-dataclass shape mismatch — caught while auditing for this PR. Fixed.Numbers
Test plan