工具
可靠度
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_list—WR_*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 不會被默默忽略。