iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 30
1
Modern Web

TypeScript + React + 雜七雜八系列 第 30

【Day 30】Jest Puppeteer

  • 分享至 

  • xImage
  •  

大家好,今天的篇章要介紹的是 Jest + Puppeteer,前一天介紹過 Puppeteer 的函式庫,想必對如何撰寫瀏覽器自動控制有一些些認識了,本篇要結合 Jest 與 Puppeteer 來進行測試

會延續前一天的專案結構接續下去進行修改,如果沒有參與到昨天的建置過程,這邊也有提供原始碼
https://github.com/littlehorseboy/typescript-puppeteer-practice/tree/day29-puppeteer


jest-puppeteer

要先安裝不少東西

npm i -D jest jest-puppeteer ts-jest merge
npm i -D @types/jest @types/jest-environment-puppeteer @types/expect-puppeteer

package.json 修改 scripts

  "scripts": {
-   "test": "echo \"Error: no test specified\" && exit 1",
+   "test": "jest",
    "start": "ts-node"
  },

然後新增 jest.config.js

npm run test -- --init

jest.config.js 裡重要的修改是 preset 這一段

+ config/combinePresets.ts

將兩種 preset 給 merge 起來,參考 這個

就可以開始寫測試囉,拿前一天 Puppeteer 寫的部分來修改

+ src/typescript-react-formik-test.ts

看起來就像是 Puppeteer 加上 Jest 的混合體呢(廢話)

值得注意的是會用 beforeAll 先將 browser 及 page 給定義起來,然後按照 test 的順序編排自動控制的動作,適時的加上 expect 就完成了!至於那個 describe 的 Google 是我忘記改了 XD

執行結果

npm run test

瀏覽器自動控制畫面省略,直接貼上測試結果


以上就是在操作 puppeteer 時,適時的加上 expect 來斷言,這樣能測試使用者最真實的行為了

最後附上原始碼
https://github.com/littlehorseboy/typescript-puppeteer-practice/tree/day30-jest-puppeteer


三十天了呢!每天發文真是非常的辛苦呀!也藉此機會順道練習更多工具,經過這次想必自己的實力有飛躍性的成長吧! /images/emoticon/emoticon07.gif


上一篇
【Day 29】Puppeteer
系列文
TypeScript + React + 雜七雜八30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
阿展展展
iT邦好手 1 級 ‧ 2020-03-08 20:12:17

恭喜完賽 \0.0/

我要留言

立即登入留言