前言
在網頁提到 E2E 測試通常有 Cypress 與 Playwright 兩種選項,而兩種測試工具我都嘗試過。單論整體開發體驗來說我更喜歡 Playwright,不過還有更多可以考慮的要素在選擇合適的測試工具,紀錄我會在意的細節與選擇原因。
- Cypress:於 2017 年發佈。不僅侷限於是測試框架,還擴展成為一個平台,提供測試效能的完整概覽,並提供了一個一體化的監控儀表板(Cypress Cloud SasS)。
- Playwirght:於 2020 發佈。Playwright 由微軟支持,超越了 JavaScript 生態系統,支援更多程式語言。
我在意的 Cypress 與 Playwright 差異
- Cypress 平行化(Parallelization)執行測試功能被建立在他們的 Cypress Cloud SaaS 服務內,雖有些替代方案但都不是那麼完美,而 Playwirght 測試是由外部 Node.js 處理,與瀏覽器隔離天生就容易平行化執行測試。
- Cypress 對 Safari 測試還是持續在測試階段,相反 Playwright 天生支援任何瀏覽器。
- Cypress 通常是較慢的。
- Cypress 具備完善的生態系與社群,Playwright 較新較小但快速成長中。
背後細節
- Cypress 定位完全在自動化瀏覽器測試,而 Playwright 通常可用於 E2E 測試與爬蟲用途。
- Cypress 基於 Electron App 並注入瀏覽器執行循環中而 Playwright 基於 Chrome DevTools Protocol
- Cypress 只限於 JavaScript 生態,而 Playwright 支援多語言。
總結
-
不是很喜歡 Cypress 把一些進階功能放在付費牆後,但看得出來他們專注於解決網頁測試的問題,也在推出針對網頁測試的額外付費功能。
-
雖然 Playwright 社群相對較小但根據 JavaScript Survey 2024 統計有很大的潛力,並且大多文章普遍結論為推薦 Playwright,就缺陷來說語法感覺些許籠長社群較小之外,沒什麼好挑剔的。
我有較多經驗使用 Cypress 所以依此為出發點進行比較,除非想特別整合某些生態中的套件,否則我應該都會選擇 Playwright,基於它快速良好的開發體驗、開放性與社群成長趨勢。
延伸閱讀
- Cypress vs Playwright - reddit r/QualityAssurance
- Cypress vs Playwright: Which is best for E2E testing? - Everyday Frontend
- What a Google Search Can’t Tell You About These JS Testing Frameworks - tweak