test-framework-migration-skill:在 Selenium、Playwright、Puppeteer、Cypress 之間遷移 E2E 測試

前言

團隊換測試棧時,常見做法是對照官方文檔手工改定位器、等待和斷言,再逐條跑通 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)。

五步工作流

  1. 識別源框架:根據用戶描述或打開文件中的特徵(如 By.id、page.getByRole、cy.visit、puppeteer.launch)判斷 Selenium / Playwright / Puppeteer / Cypress;信息不足時向用戶確認。
  2. 識別目標框架:從「to Playwright / to Selenium」等表述解析目標;只提到源框架時詢問遷移目標。
  3. 識別語言:按源與目標組合提示語言變化(例如 Selenium Java/Python/C# 遷到 Playwright 通常需改寫爲 JS/TS);細節見 reference/overview.md 的語言矩陣。
  4. 路由到 reference:在生成代碼前始終讀取上表中的匹配文件。
  5. 應用映射:按 reference 轉換定位器、等待、操作、斷言、setup/teardown;若用戶在雲上跑測,遷移後指向目標框架的雲文檔(TestMu)。

映射示例(來自 Skill 說明):By.id("x") 可轉爲 page.getByRole(...) 或 page.locator('#x')。

生成後的校驗

遷移代碼產出後,Skill 要求對照 reference 中的 Gotchas,並執行校驗清單:

  1. 定位器、操作、斷言均已按映射轉換,無殘留源框架 API。
  2. 生命週期與目標框架一致。
  3. 目標爲 Playwright:使用 auto-wait 斷言(如 expect(locator).toBeVisible()),避免裸 waitForTimeout。
  4. 目標爲 Cypress:不對 cy 命令混用 async/await,保持鏈式寫法。
  5. 目標爲 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜