使用 Cypress 的經驗分享
使用 Cypress 的經驗分享
安裝[Dos command mode 下執行相關語法]
前置準備
Node.js 安裝 (檢查版本:node -v)
npm 是一個套件管理工具,可以從裡面去下載相關套件 。安裝 Node.js 時自動會安裝 。
(檢查版本:npm -v)
cypress 安裝(注意目錄結構與設定檔案位置)
切換到 [安裝目錄] 下執行:npm install cypress --save-dev
切換到 [安裝目錄] 下執行:npm init -y 會把相關資訊寫進 package.json 檔案中
package.json 會放在[安裝目錄] 下
cypress.config.js 放在跟 package.json 同一層,內容可以到 https://docs.cypress.io/api/node-events/browser-launch-api#Syntax 複製貼上存成 cypress.config.js 檔案
要在[安裝目錄]\下建置子目錄 cpress,然後在 cypress 子目錄下建 support, e2e 兩個子目錄。[安裝目錄]\cypress
如果安裝目錄下有先建置了專案目錄,那結構要長這樣:[安裝目錄]\[專案目錄]\cypress
執行
放一個 demo.cy.js 到 cypress\e2e 目錄下
切換到[專案目錄]下,執行語法:npx cypress run 會直接跑 [安裝目錄]\[專案目錄]\cypress\e2e\的 所有 .cy.js 檔案
可以執行指令,直接叫用 e2e 測試或是 component 的測試
npx cypress open --browser chrome --component (讀取 support 目錄下的設定)
npx cypress open --browser chrome --e2e (讀取 e2e 目錄下的設定)
Recorder 安裝
A. [E2ETesting](原始的 UI Testing)
透過 Recorder 紀錄Step,測試 [Cypress Chrome Recorder],紀錄如下附圖
1. 瀏覽器上打開受測網站後,打開 開發者工具 > 點擊 [錄製工具] > 點擊[建立新的錄製內容]
2. 按下 開始錄製
3. 錄製完成,先 [重播] 確認可正確執行
4. 把錄製出來的程式碼做[匯出]
5. 匯出 Cypress Test 格式,並將副檔名 rename 為 cy.js
6. 在[安裝目錄]\[專案目錄]\目錄下,執行 npx cypress open 可以開啟 UI 畫面,點 E2E Testing > 預設在 Chrome 瀏覽器上,點擊 [Start E2E Testing in Electron](下下張圖) > 開出右下方有左選單的畫面 > 單獨點擊剛剛錄製出來的 cypressDemo1.cy.js
點上圖的綠色按鈕【Start E2E Testing in Electron】出現左列有選單管理 spec 的畫面,
點按執行 cypressDemo1.cy.js 就會出現下列畫面
7. 在 UI 中執行的畫面
舊版程式要在新版環境下執行,對照要更動的地方
(筆者的舊版是 v4.9)(目前安裝的新版是 v13.16):
spec
舊版 spec 放在 cypress\integration 目錄下;副檔名是 .js
新版 spec 放在 cypress\e2e 目錄下;副檔名是 .cy.ts
(有嘗試改過 [專案目錄] 目錄下的 cypress.config.js 增加讀取 .js Pattern ,
解析會過,但是還是會說找不到 spec 'Can't run because no spec files were found.')
所以改副檔名 .js 為 cy.ts 就可以順跑了。spec 要改放到 cypress\e2e 這個目錄下
手動單獨執行指定的 spec 測試程式:npx cypress run --spec .\cypress\e2e\Demo\Demo.cy.ts
執行結果(這個是執行舊版程式的方式);新版就直接錄新的或是直接手寫新的
B. [Component Testing]
參考 git 上面的 sample ,裡面有相關的 config 設定內容跟相對應的路徑,配置相對應的檔案跟路徑後,Component Testing 就可以順利開啟了。重要對應的設定檔案有:angular.json, cypress.config.js, tsconfig.app.json, tsconfig.json (先放預設內容即可)
cypress.config.js 設定的說明可參考官方網站
因為選擇 angular 做模擬測試,所以會要求要安裝 angular,在[專案目錄]下安裝,強制安裝可參考下列語法執行
npm install --force -D @npmcli/package-json
npm install --force -D @angular-devkit/build-angular
npm install --force -D @angular/core
npm install --force -D @angular/common
npm install --force -D @angular/platform-browser-dynamic
npm install --force -D @angular/cli
npm audit fix --force
前述關掉的設定要去掉;supportFile: false,
設定都安置沒有問題後,點擊 [Component Testing] 會看到下列畫面
使用介面上的 New Spec,產出檔案,
點兩下可以執行該測試程式碼
cypress price policy,如果非重度使用者 Free Trial 可以用一段期間。Team 若有 50 人使用,平均一個月是 NT$40 左右。算是蠻不錯的付費方案。
發現 cypress 可支援多種框架,一般來說前端開發者的開發語言框架通常會是選用特定語言的,
而如果前端開發時,使用了其他不同語言,單元測試要做切換時,要先移除原本的框架,再安裝新的語言框架,例如:
npm uninstall @cypress/angular
npm install @cypress/react
如果前端畫面相同,但框架異動,原始的測試程式碼也是要跟著調整。