本篇將分享如何在 VSCode 開發中,結合 MCP Servers 與 Playwright,製作現代化自動化測試的流程。
MCP
MCP 全名為 Model Context Protocol,中文為「模型上下文協定」,是一種開放協定,2024 年 11 月由開發模型 Claude 的美國新創公司 Anthropic 推出,提供了一種標準化的方式,讓 AI 向外部工具請求使用服務和數據。並且透過提供 AI 上下文指示,讓 AI 決定使用哪些工具、按什麼順序以及如何將工作流程連結在一起以完成任務。
換句話說,MCP 不只能當作轉接頭,也像是提供 AI 一本使用說明書,幫助 AI 理解企業數據和應用情境,例如內部數據的結構與存取方式、重要的業務邏輯與規則,以及專業術語等。
以銀行客服系統導入 AI 為例,當客戶詢問:「能否提前還清貸款?」MCP 能提示 AI 該銀行的房貸規則在哪裡查詢、違約金計算方式,和哪些客戶符合提前還款條件等。
- 典型應用:AI Copilot、Code Search、Test Runner、Remote Workspace 等
- 讓 VSCode extension 能像微服務一樣,與外部系統互動
MCP Server 架構圖:
MCP 主機(MCP Host)
Claude、ChatGPT…等需要透過 MCP 存取外部工具的 AI 模型,它們會請求 MCP 來幫助執行各種操作。這些 AI 模型就像筆電本身,需要透過轉接頭來連接外部裝置。
例如:Claude、ChatGPT、Gemini、Llama…等 AI 模型。
MCP 客戶端(MCP Client)
AI 存取 MCP 的程式碼,它讓 AI 可以透過 MCP 來請求特定的工具或數據來源。這就像筆電的 USB 連接埠,負責發送請求給轉接頭,讓筆電知道該怎麼存取外部設備。
例如:Anthropic 官方 MCP SDK、OpenAI MCP client library、Python/TypeScript MCP client 實作…等。
MCP 伺服端(MCP Server)
Slack、Gmail、Google 日曆、Mac 檔案系統等,提供 AI 所需的功能與數據,可以是遠端應用程式或本地數據來源。MCP Server 就像滑鼠、鍵盤、硬碟等各種 USB 設備,透過轉接頭連接到筆電。
以 VSCode 為例,MCP Servers 作為 VSCode 與外部工具或數據源之間的媒介,像是使用者可以從 Google Drive 調取數據檔案,也可以從 GitHub 創建任務分支和查詢程式碼。
例如:Google Drive MCP Server、GitHub MCP Server、VSCode MCP Server、Notion MCP Server、Jira MCP Server…等。
VSCode MCP Server 是什麼?
VSCode 官方也提出了自己的 MCP Servers,目標是讓 extension 能以更彈性的方式與外部服務溝通,突破過去 LSP(Language Server Protocol)或 Debug Adapter Protocol 的限制。
MCP Server 特色:
- 支援多種 context(如 AI、語意分析、測試、執行環境等)
- 可同時處理多種資料流與事件,適合大型、複雜的 extension
- 典型應用:AI Copilot、Code Search、Test Runner、Remote Workspace 等
- 讓 VSCode extension 能像微服務一樣,與外部系統互動
Playwright 是什麼?
Playwright 是由 Microsoft 推出的現代化瀏覽器自動化測試框架,支援 Chromium、Firefox、WebKit 三大主流瀏覽器,並可用 TypeScript、JavaScript、Python、C# 等語言撰寫測試腳本。Playwright 具備跨平台、API 直覺、可錄製操作、支援多分頁與多瀏覽器等特性,適合用於前端、Web App、SPA、Webview 等多種場景的自動化測試。
主要特色:
Playwright 讓開發者能快速撰寫、執行、維護自動化測試腳本,是現代前端開發與測試的主流選擇之一。
Playwright 與其他自動化操作工具的差異
工具 | 支援瀏覽器 | 語言支援 | API/功能特色 | CI/CD 整合 | 其他特色 |
---|---|---|---|---|---|
Playwright | Chromium、Firefox、WebKit(含 Safari) | JavaScript、TypeScript、Python、C# | API 現代化且直覺,原生多分頁/多瀏覽器、網路攔截、等待同步、錄製腳本 | 易於整合 | 進階功能多 |
Selenium | 幾乎所有主流瀏覽器 | Java、Python、C#、JS 等 | API 較繁瑣、較舊,等待/同步需手動處理 | 易於整合 | 穩定性高、跨平台 |
Cypress | Chromium、Firefox | JavaScript、TypeScript | API 現代化且直覺,原生等待/同步、無多分頁/多瀏覽器 | 易於整合 | 內建測試儀表板 |
重點差異說明:
- Playwright 支援三大主流瀏覽器(含 Safari/WebKit),API 現代化,原生支援多分頁、網路攔截、等待同步,適合複雜互動測試。
- Selenium 歷史悠久,支援最多語言與瀏覽器,但 API 較繁瑣,等待/同步需手動處理,適合跨平台、穩定性要求高的場景。
- Cypress 以前端 E2E 測試為主,API 直覺,原生等待,但僅支援部分瀏覽器,不支援多分頁,適合前端 SPA/React/Vue 等專案。
Playwright 在現代前端、Web App、VSCode extension 測試場景下,通常能提供更高效、易用的自動化體驗。
Playwright 導入方式
安裝 Playwright 套件
|
|
這會安裝 Playwright 及所需瀏覽器。
建立測試目錄與設定檔
建立 tests/
目錄,並新增 playwright.config.ts
:
playwright.config.ts
|
|
撰寫第一個測試腳本
例如建立一支跑自動跑登入流程的腳本:
tests/login.spec.ts
|
|
執行測試
|
|
Playwright 會自動啟動瀏覽器並執行所有或指定的測試腳本。
進階設定與 CI 整合
- 可在
playwright.config.ts
設定多瀏覽器測試、環境變數、報告格式等 - 可在 GitHub Actions、GitLab CI 等自動化流程中執行 Playwright 測試
Playwright 在 VSCode Extension/MCP Server 專案的應用
- 驗證 extension Webview UI/互動
- 測試 MCP Server API 回應與錯誤處理
- 整合 CI/CD,確保 extension 發布品質
Playwright 讓開發者能快速撰寫、執行、維護自動化測試腳本,是現代前端開發與測試的主流選擇之一。
Playwright 的設定值與常用元件介紹
playwright.config 常用設定值
|
|
更多請參考官方文件
常用元件與方法
類型 | 名稱/方法 | 說明 |
---|---|---|
測試物件 | test | 定義測試案例 |
頁面物件 | page | 操作瀏覽器分頁 |
斷言 | expect | 驗證結果 |
定位器 | locator | 精準選取元素 |
填值 | fill | 填入表單欄位 |
點擊 | click | 點擊按鈕或元素 |
取得文字 | textContent | 取得元素文字內容 |
等待 | waitForSelector | 等待元素出現 |
螢幕截圖 | screenshot | 擷取頁面或元素畫面 |
輸入鍵盤 | keyboard | 鍵盤事件 |
輸入滑鼠 | mouse | 滑鼠事件 |
請求物件 | request | API 請求測試 |
瀏覽器物件 | browser | 控制瀏覽器(多分頁、多瀏覽器) |
配置 | defineConfig | Playwright 設定檔 |
錯誤截圖 | trace | 錯誤追蹤與錄影 |
|
|
更多元件與 API 可參考 Playwright 官方文件
實戰一:自動化測試 API healthz check
- 建立 MCP Server 專案(Node.js/TypeScript)
- 在 extension 內啟動 MCP Server,並與前端溝通
- 撰寫 Playwright 測試腳本,模擬 VSCode extension 與 MCP Server 的互動
|
|
|
|
實戰二:Playwright 自動化流程範例
以下以我自己的專案的登入流程自動化測試為例 透過打開我的網站登入頁,並輸入帳號與密碼後進行登入,登入後檢查頁面上是否存在「Dashboard」字樣(因我的網站登入後會導向到 Dashboard 頁面)。
tests/login.spec.ts
|
|
封裝成一個 helper 好了:
login-helper.ts
|
|
延伸製作一個 登入並切換語系
的自動化測試腳本:
|
|
實戰三:Playwright 串聯 Vitest UI 跑單元測試
串聯一下之前在闡述單元測試、元件測試,並學習在自己的 Vue3 專案中加入 Vitest!,自己撰寫的 Utils tools function 的單元測試好了,讓自己後續可以直接打打字,讓 Agent 幫我跑這些單元測試(工程師沒有最懶,只有更懶)。
test-tools-unit.spec.ts
|
|
* 流程非常的彈性可控,且可以依照自己的需求去撰寫測試腳本,達到自動化測試的目的,以上就舉幾個較為單純的腳本內容,可以依各自業務需求去撰寫自己需要的腳本。
* 若你的 VSCode 有開啟chat.mcp.enabled
,則可直接透過 VSCode Chat 的 Agent 模式進行即時的測試腳本撰寫與調試,加速完成你的測試項目腳本,甚至直接透過 Chat 來執行你的測試項目。
* 可以在開發時,多在 DOM 上埋入 id、class
,這樣當執行自動化驗證的操作時,可以更輕鬆的獲取到你所需要的元素,確保自動化測試流程的穩定與品質。
開發心得與建議
- MCP Server 架構彈性高,適合 AI/自動化/大型 extension。
- 建議在開發前端代碼時,在 DOM 上多埋入 id、class,方便 Playwright 定位元素,確保自動化測試流程的穩定與品質。
- 建議可以透過 VSCode Chat 的 Agent 模式進行即時的測試腳本撰寫與調試,記得 vscode 的settings 要開啟 chat.mcp.enabled。
- Playwright 腳本可直接整合 CI,快速驗證功能。
- 建議在使用 VSCode 時,安裝 Playwright 的官方 extension,方便在 VSCode 內撰寫、執行測試腳本。
- 建議將 MCP Server、Playwright 測試與 extension 專案分層管理,方便維護。
- Playwright 支援多瀏覽器測試,建議在 CI 中同時驗證 Chrome/Firefox/WebKit。
結語
VSCode MCP Servers 與 Playwright 的結合,讓 extension 開發與測試更現代化、流程自動化。推薦給有志於 VSCode 生態圈、AI 工具、測試自動化的開發者!
如有相關問題,歡迎留言討論或參考官方文件。