閱讀原文html
項目 | Web | Star |
---|---|---|
puppeteer | Chromium (~170Mb Mac, ~282Mb Linux, ~280Mb Win) | 31906 |
nightmare | Electron | 15502 |
nightwatch | WebDriver | 8135 |
protractor | selenium | 7532 |
casperjs | PhantomJS | 7180 |
cypress | Electron | 5303 |
Zombie | 不須要 | 4880 |
testcafe | 不須要 | 4645 |
CodeceptJS | webdriverio | 1665 |
端到端測試通常都須要一個Web容器,來運行前端應用。例如Chromium, Electron, PhantomJS, WebDriver等等。前端
從體積角度考慮,這些Web容器體積通常都很大
。node
從速度的角度考慮:PhantomJS, WebDriver < Electon, Chromium
。python
並且每一個工具的側重點也不一樣,建議按照須要去選擇。git
Cypress基本上擁有了上面的特色以外,還有如下特色。github
時光穿梭
測試運行時,Cypress會自動截圖,你能夠輕易的查看每一個時間的截圖Debug友好
不須要再去猜想爲何測試有失敗了,Cypress提供Chrome DevTools, 因此Debug是很是方便的。實時刷新
Cypress檢測測試用例改變後,會自動刷新自動等待
不須要在使用wait相似的方法等待某個DOM出現,Cypress會自動幫你作這些Spies, stubs, and clocks
Verify and control the behavior of functions, server responses, or timers. The same functionality you love from unit testing is right at your fingertips.網絡流量控制
在不涉及服務器的狀況下輕鬆控制,存根和測試邊緣案例。不管你喜歡,你均可以存儲網絡流量。一致的結果
咱們的架構不使用Selenium或WebDriver。向快速,一致和可靠的無剝落測試問好。截圖和視頻
查看失敗時自動截取的截圖,或無條件運行時整個測試套件的視頻。注意這個方法須要下載壓縮過Electron, 因此可能會花費幾分鐘時間,請耐心等待。web
npm i cypress -D
你能夠把Cypress想一想成一個瀏覽器,能夠單獨把它下載下來,安裝到電腦上,當作一個客戶端軟件來用。npm
打開以後就是這個樣子,能夠手動去打開項目,運行測試用例。瀏覽器
Cypress初始化,會在項目根目錄自動生成cypress文件夾,而且裏面有些測試用例模板,能夠很方便的學習。服務器
初始化的方法有兩種。
node_modules/.bin/cypress open
去初始化// hacker-news.js describe('Hacker News登陸測試', () => { it('登陸頁面', () => { cy.visit('https://news.ycombinator.com/login?goto=news') cy.get('input[name="acct"]').eq(0).type('test') cy.get('input[name="pw"]').eq(0).type('123456') cy.get('input[value="login"]').click() cy.contains('Bad login') }) })
打開Cypress客戶端,選擇要測試項目的根目錄,點擊hacker-news.js後,測試用例就會自動運行
運行結束後,左側欄目鼠標移動上去,右側欄都會顯示出該步驟的截圖,因此叫作時光穿梭功能。
從截圖也能夠看出來,Cypress的步驟描述很詳細。