前言¶
團隊換測試棧時,常見做法是對照官方文檔手工改定位器、等待和斷言,再逐條跑通 CI。Selenium 的 WebDriverWait、Playwright 的 auto-wait、Cypress 的鏈式 cy.should 並不一一對應,生命週期(driver / page / launch)也容易漏改。下面介紹 TestMu AI 在 LambdaTest/agent-skills 倉庫中提供的 test-framework-migration-skill:把「識別源框架與目標框架 → 查對照表 → 按映射改寫」寫成 Agent 可執行的固定流程,並附帶各遷移方向的 reference 文檔。
這是什麼¶
test-framework-migration-skill 面向 AI 編碼助手(如 Cursor、Claude Code、GitHub Copilot、Gemini CLI 等),在 Selenium、Playwright、Puppeteer、Cypress 四類 E2E 框架之間遷移、轉換或移植測試腳本。Skill 元數據標明維護方爲 TestMu AI,版本 1.0,許可證 MIT,分類爲 e2e-testing,涉及語言包括 Java、Python、JavaScript、TypeScript、C#。
倉庫路徑:
https://github.com/LambdaTest/agent-skills/tree/main/test-framework-migration-skill
Agent 加載該 Skill 後,會按內置步驟扮演「資深 QA 自動化架構師」,在生成遷移代碼前必須先閱讀對應 reference/<source>-to-<target>.md,再應用 API 映射、生命週期調整與模式轉換。
核心功能¶
支持的遷移方向¶
Skill 爲以下 10 組「源 → 目標」各提供獨立 reference 文件(雙向組合覆蓋四框架之間的主要切換):
| 源 → 目標 | Reference 文件 |
|---|---|
| Selenium → Playwright | reference/selenium-to-playwright.md |
| Playwright → Selenium | reference/playwright-to-selenium.md |
| Selenium → Puppeteer | reference/selenium-to-puppeteer.md |
| Puppeteer → Selenium | reference/puppeteer-to-selenium.md |
| Puppeteer → Playwright | reference/puppeteer-to-playwright.md |
| Playwright → Puppeteer | reference/playwright-to-puppeteer.md |
| Cypress → Playwright | reference/cypress-to-playwright.md |
| Playwright → Cypress | reference/playwright-to-cypress.md |
| Selenium → Cypress | reference/selenium-to-cypress.md |
| Cypress → Selenium | reference/cypress-to-selenium.md |
若用戶請求的框架對不在表中,Agent 應說明不支持,並建議最接近的已支持遷移(文檔示例:後續可爲 WebDriverIO 增加 reference)。
五步工作流¶
- 識別源框架:根據用戶描述或打開文件中的特徵(如
By.id、page.getByRole、cy.visit、puppeteer.launch)判斷 Selenium / Playwright / Puppeteer / Cypress;信息不足時向用戶確認。 - 識別目標框架:從「to Playwright / to Selenium」等表述解析目標;只提到源框架時詢問遷移目標。
- 識別語言:按源與目標組合提示語言變化(例如 Selenium Java/Python/C# 遷到 Playwright 通常需改寫爲 JS/TS);細節見
reference/overview.md的語言矩陣。 - 路由到 reference:在生成代碼前始終讀取上表中的匹配文件。
- 應用映射:按 reference 轉換定位器、等待、操作、斷言、setup/teardown;若用戶在雲上跑測,遷移後指向目標框架的雲文檔(TestMu)。
映射示例(來自 Skill 說明):By.id("x") 可轉爲 page.getByRole(...) 或 page.locator('#x')。
生成後的校驗¶
遷移代碼產出後,Skill 要求對照 reference 中的 Gotchas,並執行校驗清單:
- 定位器、操作、斷言均已按映射轉換,無殘留源框架 API。
- 生命週期與目標框架一致。
- 目標爲 Playwright:使用 auto-wait 斷言(如
expect(locator).toBeVisible()),避免裸waitForTimeout。 - 目標爲 Cypress:不對
cy命令混用 async/await,保持鏈式寫法。 - 目標爲 Selenium:使用顯式
WebDriverWait,不用Thread.sleep。
延伸閱讀與同級 Skill¶
| 需求 | 查閱位置 |
|---|---|
| 框架對比、何時遷移 | reference/overview.md |
| 完整遷移流程、調試表、CI/CD 檢查項 | reference/playbook.md |
| 各框架 POM、雲集成 | 同倉庫的 playwright-skill、selenium-skill、puppeteer-skill、cypress-skill 及各自 reference/cloud-integration.md |
| TestMu 雲能力(全框架) | shared/testmu-cloud-reference.md |
安裝與啓用¶
該 Skill 隨 agent-skills 倉庫分發。官方 README 要求:Node.js 與 npm(最新穩定版)、已安裝的 AI 編碼助手;若在 TestMu AI 雲上執行測試,還需 TestMu AI 賬號的 username 與 access key(環境變量 LT_USERNAME、LT_ACCESS_KEY)。完整步驟見 TestMu AI Agent Skills 文檔。
在已具備 Node.js 的機器上,可用 agentskillsforall 從 GitHub 安裝單個 Skill(與同倉庫中 selenium-skill、playwright-skill 的安裝方式一致):
npx agentskillsforall add https://github.com/LambdaTest/agent-skills.git --skill test-framework-migration-skill
瀏覽倉庫內全部 Skill:
npx agentskillsforall list https://github.com/LambdaTest/agent-skills.git
README 亦提供克隆倉庫後在本目錄執行 npx agentskillsforall add 的方式;Cursor 等助手在 Skill 安裝完成後,通過自然語言觸發即可,無需額外配置文件名(以各助手對 Agent Skills 的加載機制爲準)。
典型用法¶
Skill 的 description 聲明瞭常見觸發語:migrate、convert、port,以及 selenium to playwright、playwright to selenium、puppeteer to playwright、cypress to playwright、rewrite tests in、switch from [framework] to [framework] 等。在助手已啓用該 Skill 的前提下,可直接描述遷移意圖,並附上待改測試文件或片段。
示例(自然語言,與官方觸發場景一致):
把當前打開的 Selenium Java 用例遷移到 Playwright TypeScript,保留原有斷言語義。
Convert these Cypress tests to Playwright; files use cy.get and cy.visit.
信息不全時,Agent 會按 Skill 追問,例如:「當前測試在哪個框架(Selenium、Playwright、Puppeteer 或 Cypress)?」或「要遷移到 Playwright、Puppeteer、Cypress,還是換語言繼續用 Selenium?」
經過上面的步驟,Agent 會先選定 reference/selenium-to-playwright.md(或對應路徑),再按映射表改寫定位器與等待策略,並在結束時對照 Validation Workflow 自檢。
適用場景與注意¶
適合誰:維護多套 E2E 棧或計劃從 Selenium / Cypress 等遷到 Playwright(或反向)的團隊;希望減少「查 API 對照表 + 手工改生命週期」重複勞動的 QA 與開發。
語言與棧:元數據列出的五種語言與四框架組合在遷移時並不對稱——例如 Selenium(Java/Python/C#)遷 Playwright 時,Skill 明確要求向用戶說明 Playwright 側通常爲 JavaScript/TypeScript。具體矩陣以 reference/overview.md 爲準。
限制:當前僅覆蓋上述四框架與 10 條 reference 路徑;不能替代在目標框架上的全量回歸與 CI 調通。生成代碼後仍需在本地或 CI 執行測試。雲上執行需自行配置 TestMu 憑證與目標框架的雲集成文檔。
與純聊天改代碼的區別:該 Skill 強制「先讀 reference、再映射、再 Gotchas/校驗」,並把 playbook 與同級 framework skill 串起來,降低漏改等待策略或斷言風格的風險。
結尾¶
test-framework-migration-skill 把跨框架遷移拆成可重複的檢測、路由與映射步驟,並用成對的 reference 文檔約束輸出質量。若你正在 Selenium、Playwright、Puppeteer、Cypress 之間切換測試棧,可從官方目錄安裝並在對話中直接說明源與目標框架。
官方地址:https://github.com/LambdaTest/agent-skills/tree/main/test-framework-migration-skill