工具

可靠度

  • adaptive_retry.run_with_retry — 依 classifier 結果決定是否重試

  • linter.locator_strength.score_locator — locator 0–100 分強度評估

  • smart_wait.wait_for_fetch_idle / wait_for_spa_route_stable — 比 time.sleep 智慧的 SPA 等待

  • throttler.throttle("svc") — 跨 shard 的檔案信號量

Browser pool / BiDi bridge

  • browser_pool.BrowserPool — 暖機 N 個 browser instance、checkout/ checkin、健康檢查與最大次數淘汰

  • bidi_backend.BidiBridge — 跨 Selenium 4 BiDi 與 Playwright 的 事件訂閱統一介面,可 register_translator 擴充

HAR replay server

har_replay.load_har("recorded.har") 載入後給 HarReplayServer(entries).start() 啟用本機 HTTP server,URL pattern 支援字面 / glob / re: regex、重複條目自動輪播。

Test impact analysis

impact_analysis.build_index("./actions") 走訪 action JSON 建立 locator / URL / template / command 反查表; affected_action_files(index, locators=["primary_cta"]) 回傳所有 參考此 locator 的測試檔,搭配 sharding.diff_shard 做精準測試選擇。

Bootstrapper / driver pinner

  • bootstrapper.init_workspace — 一鍵 scaffold 起手式 (sample actions / ledger / pre-commit / GitHub Actions)

  • driver_pin.install_for_browser — 讀 .webrunner/drivers.json 下載並快取 driver,避開 webdriver-manager 的 GitHub API 限流

Selenium → Playwright 翻譯

  • sel_to_pw.translate_python_source — 常見 Selenium 寫法靜態翻譯成 Playwright 等價(find_element(By.ID, "x")page.locator("#x")

  • sel_to_pw.translate_action_listWR_* action JSON 轉 WR_pw_*、自動丟掉 WR_implicitly_wait

Action formatter / Markdown 撰寫

  • action_formatter.format_actions — canonical 縮排與鍵順序,搭配 既有 LSP 一起用

  • md_authoring.parse_markdown — 用 Markdown bullet 寫測試流程,再 轉成 WR_* action JSON

Page Object codegen

pom_codegen.discover_elements_from_html 走過 HTML 抓 data-testid / id / form fields,render_pom_module 產生 Python POM 模組。

Coverage map

  • coverage_map.build_coverage_map — 從 action JSON 抽出 WR_to_url 的 path 建立 route → files 反查表,coverage.uncovered 找出未覆蓋 的 route

WR_sleep

Executor 內建的同步 sleep 命令,給 action JSON 用:

[
  ["WR_to_url", {"url": "https://example.com"}],
  ["WR_sleep", {"seconds": 2.5}],
  ["WR_get_screenshot_as_png"]
]

負數 / 非數字會丟 ValueError,typo 不會被默默忽略。