說到網頁自動化測試,首先不得不提已有超過 15 年歷史的 Selenium,作為自動化測試的先驅,發展成熟,支援多種語言,也有眾多第三方工具可以使用,是自動化測試的首選。
再來則是 2017 年問世,廣為人知的 Cypress,也受到許多開發者的喜愛,當然還有各式各樣的自動化測試工具,例如:Puppeteer、NightWatch、TestNG、Cucumber...,那麼,為什麼是 Playwright 呢?
首先我們先對其中常見的三個 E2E 測試工具: Selenium、Cypress 以及 Playwright ,針對支援程度、效能、開發體驗等各方面進行比較:
項目 | Selenium | Cypress | Playwright |
---|---|---|---|
支援作業系統 | Windows / macOS / Linux | Windows / macOS / Linux | Windows / macOS / Linux |
程式語言 | Python / JavaScript / TypeScript / Java / C# | JavaScript / TypeScript | JavaScript / TypeScript / Python / Java / .NET |
支援瀏覽器 | IE / Edge / Chrome / Firefox / Safari | Chrome / Chromium / Edge / Firefox / WebKit | Chromium / Edge / Firefox / WebKit |
瀏覽器運作方式 | WebDriver 驅動,需額外配置 | 直接控制瀏覽器 | 原生 API 控制瀏覽器 |
驅動管理 | 每個瀏覽器需單獨配置 | 自動管理 | 自動管理 |
行動裝置測試 | 第三方套件 | 需使用 Ionic 套件 | 支援原生模擬 |
iFrame 處理 | 最成熟 | 不支援跨域 iFrame,需額外處理 | iFrame 支援完整 |
Tabs 處理 | 最成熟 | 單網域單標籤,不支援點擊連結後到另一個網域,必須移除 tatget 或攔截行為 | Tabs 支援完整 |
Parallel 平行測試 | 透過 TestNG / JUnit / Pytest | Cypress Cloud 支援 | 內建支援 |
Auto-waiting | 顯式或隱式等待 | 自動等待 | 自動等待 |
XPath / Selector | XPath 強大 | CSS Selector 主導 | 支援 CSS / XPath / text Selector |
UI Runner | Selenium IDE 有 | 有 | 有 |
Dashboard | 第三方工具 | Cypress Cloud | 無 |
Report | 第三方工具 | 內建報告 | 內建報告 |
Recorder | Selenium IDE 有 | 有 | 有 |
截圖 / 錄影 | 第三方工具 | 內建截圖 / 錄影 | 內建截圖 / 錄影 |
語法風格 | 傳統命令式 | 現代、流暢 | 現代、流暢 |
程式碼量 | 較多 | 較少 | 較少 |
學習曲線 | 高 | 中 | 中低 |
社群資源 | 非常豐富 | 豐富 | 成長中 |
中文資源 | 官方提供中文文件 | 中文教學文章多、有中文書籍 | 資源最少,多奇教育入門課程 |
付費版本 | 無 | Cypress Cloud | 無 |
💡 特色小整理
三把自動化測試武器,看起來每一把都功能強大,卻也脾性各異,該如何選擇,最終必須回歸團隊的核心需求,武器功能是否強大固然重要,但最最最重要的,還是合不合適,就如同奧利凡德為每位魔法師挑選的不是最強大的魔杖,而是「最契合」的那一支!
對於我們團隊來說,Playwright 以下幾個特點是它突破重圍的原因:
今天透過比較,在綜合考量瀏覽器支援度、穩定性、效能與開發體驗後,Playwright 相較於 Selenium 與 Cypress,擁有全面的優勢,因此,我們確定了 Playwright 是最適合團隊的測試工具。
接下來,在 Day 3 我們就要正式開疆闢地,建立測試專案與初始化設定,打造屬於我們的 Playwright 基地!