iT邦幫忙

2022 iThome 鐵人賽

DAY 18
2
Modern Web

今天我想來在 Angular 應用程式上加上測試保護系列 第 18

Day 18 - 端對端測試 - Cypress 的安裝與使用

  • 分享至 

  • xImage
  •  

前言

上一篇簡單介紹了端對端測試,這一篇開始會從安裝 Cypress 開始陸續在 Angular 專案中加入端對端程式。

Cypress 的安裝

要在專案中使用 Cypress 框架,可以利用 NPM 命令來進行安裝。

npm install -D cypress

而在 Angular 專案中,則可以利用 Angular Schematics 來直接安裝與設定好整個專案,因此我們可以執行下面命令:

ng add @cypress/schematic

如下圖所示,在安裝過程中會詢問是否把 Cypress 做為 ng e2e 命令的預設測試框架。

https://ithelp.ithome.com.tw/upload/images/20221003/20109645ZHVLrHuBLT.png

而當我們設定為 e2e 的預設測試框架時,Angular Schematics 會一併在 angular.json 檔案內加入 cypress-runcypress-opene2e 區塊。

"cypress-run": {
  "builder": "@cypress/schematic:cypress",
  "options": {
    "devServerTarget": "ironman-2022-angular-test-example:serve"
  },
  "configurations": {
    "production": {
      "devServerTarget": "ironman-2022-angular-test-example:serve:production"
    }
  }
},
"cypress-open": {
  "builder": "@cypress/schematic:cypress",
  "options": {
    "watch": true,
    "headless": false
  }
},
"e2e": {
  "builder": "@cypress/schematic:cypress",
  "options": {
    "devServerTarget": "ironman-2022-angular-test-example:serve",
    "watch": true,
    "headless": false
  },
  "configurations": {
    "production": {
      "devServerTarget": "ironman-2022-angular-test-example:serve:production"
    }
  }
}

如此一來,我們在執行 ng e2e 命令時, 就可以在開啟 cypress 執行測試之前,也如同使用 ng serve 一樣把此專案的一併啟動。

https://ithelp.ithome.com.tw/upload/images/20221003/201096459fnowIKOso.png

Cypress 的圖形介面

在安裝完 Cypress 之後,就可以利用 ng e2e 命令來啟動 Cypress。如先前所提到,這個命令會幫我們執行 ng servecypress open 兩個命令,來啟動應用程式以及 Cypress 的啟動介面,我們就可以在此介面選擇希望利用哪一套瀏覽器去執行測試。

因為本系列文的範例會使用到 json-server 來模擬後端服務,因此啟動 Cypress 之前先執行 json-server src/assets/data/db.json 命令啟動 json-server

https://ithelp.ithome.com.tw/upload/images/20221003/20109645N7LqTPJgax.png

啟動端對端測試後,就會利用選擇的瀏覽器開始 Cypress 介面;此介面就會顯示專案的 cypress 資料夾的所有測試程式。

https://ithelp.ithome.com.tw/upload/images/20221003/201096458N0ETlBWcU.png

在點選要執行的測試案例,則會進入下圖的介面,此介面的左邊為案例執行的步驟,而右邊則是實際應用系統的操作情形(為了讓測試程式的結果正確,在這有修改過原本安裝時所建立的測試內容)。

https://ithelp.ithome.com.tw/upload/images/20221003/20109645CyCmxFbZKx.png

Cypress 的執行

除了開啟圖形化介面外,Cypress 也提供了 cypress run 來在 Terminal 執行端對端測試,與 cypress open 一樣執行命令前需要啟動應用程式。不過因為 Angular Schematics 在 angular.json 裡加入了 cypress-run 區塊,所以我們可以改用下面指令來同時執行 ng servecypress run 兩個指令。

ng run ironman-2022-angular-test-example:cypress-run

也可以把這個命令加入 package.json 檔案內的 scripts 區塊來簡化:

{
  "scripts": {
    "e2e:run": "ng run ironman-2022-angular-test-example:cypress-run"
    ...
  }
}

如此一來,我們就可以直接執行 npm run e2e:run 命令進而得到下圖的測試結果。

https://ithelp.ithome.com.tw/upload/images/20221003/20109645kL7fvx3H3W.jpg

接下來

這一篇大致介紹了 Cypress 的安裝與使用命令,完整的專案設定可以參考 GitHub。接下來,就開始利用 Cypress 來撰寫 E2E 測試。


上一篇
Day 17 - 端對端測試 - 初探
下一篇
Day 19 - 端對端測試 - 利用 Cypress 撰寫測試案例
系列文
今天我想來在 Angular 應用程式上加上測試保護30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言