天天看點

Cypress web自動化29-失敗截圖以及用例錄制mp4視訊

前言

做 web 自動化的時候,我們希望用例失敗了能截圖,這是之前用 selenium 寫 ui 自動化用例的時候經常遇到的問題。

cypress 可以說是業界良心了,不僅幫我們失敗的時候自動截圖儲存下來,還把每個用例都錄制成了mp4的小視訊,友善追蹤問題的時候回放視訊

screenshots 失敗截圖

Cypress自帶截屏功能,無論你是在使用cypress open的互動模式下運作,還是在使用cypress run的運作模式下運作(可能是在CI中)。

  • 要手動截屏,你可以使用cy.screenshot()指令。
  • 在互動模式之外的運作過程中發生失敗時,Cypress将自動捕捉螢幕截圖。
  • 可以通過Cypress.Screenshot.defaults()将screenshotOnRunFailure設定為false來關閉此行為。
  • 截圖存儲在screenshotsFolder中,預設設定為cypress/screenshots。
  • 在cypress run之前,Cypress将清空任何現有的截圖。
  • 如果你不想在運作前清空你的截圖檔案夾,你可以設定trashAssetsBeforeRuns為false。

當我們用指令行執行完用例後

cypress run

運作結果

 (Video)

  -  Started processing:  Compressing to 32 CRF
  -  Finished processing: D:\Cypress\cypress\videos\xx.js.mp4                            (0 seconds)


====================================================================================================

  (Run Finished)


       Spec                                              Tests  Passing  Failing  Pending  Skipped
  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ ×  baidu.js                                 00:46        1        -        1        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ √  blog.js                                  00:07        1        1        -        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ √  debug.js                                 00:02        1        1        -        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ ×  hook_demo.js                             00:18        6        2        4        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ √  login_fixture.js                         00:03        1        1        -        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ ×  login_web.js                             00:06        1        -        1        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ √  parametrize.js                           00:47        3        3        -        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ ×  web_a.js                                 00:11        1        -        1        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ ×  web_home.js                              00:09        2        -        1        -        1 │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ √  web_white_list.js                          2ms        -        -        -        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ √  xuexi.js                                 142ms        1        1        -        -        - │
  ├────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ √  xx.js                                      2ms        -        -        -        -        - │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘
    ×  5 of 12 failed (42%)                     02:35       18        9        8        -        1      

從上面的結果可以看出哪些用例失敗了,比如我想看

login_web.js

這條為什麼失敗

在 /cypress/screenshots 目錄下可以看到每個js名稱命名的檔案夾,下面找到對應的失敗截圖

Cypress web自動化29-失敗截圖以及用例錄制mp4視訊

從上面截圖就能快速定位到問題,通路登入頁面的時候,定位

#count

元素失敗了

videos 視訊錄制

在運作用例的時候,已經對每個用例錄制了對應的視訊 /cypress/videos 目錄下就能找到以腳本命名的.mp4 視訊,這點簡直不要太贊!

Cypress web自動化29-失敗截圖以及用例錄制mp4視訊

接下來看下效果

Cypress web自動化29-失敗截圖以及用例錄制mp4視訊

很容易看出是因為沒打開登入首頁,因為其他用例登入後有 cookies 了,就直接進入到已登入後的頁面了

視訊功能

可以通過将video設定為false來關閉錄制視訊功能。

視訊存儲在videosFolder中,預設設定為cypress/videos。

當cypress run完成後,Cypress将自動壓縮視訊以節省檔案大小。預設情況下,會壓縮成32 CRF,但是這是可配置的videoCompression屬性。

繼續閱讀