精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

訴諸 Vitest、Storybook 和 Playwright 進行現代化前端測試

開發 前端
在本文中,我們將分享為什么我們認為前端測試值得一試,為什么它以往風評被害,以及我們采用的使我們的測試易于編寫和維護的方案。

本文屬于是語冰的直男翻譯了屬于是,僅供粉絲參考,英文原味版請臨幸 Modern frontend testing with Vitest, Storybook, and Playwright。

向前端工程師提及“測試”,您可能會面臨引發 PTSD(創傷后應激障礙)的風險。就傳統而言,這事倍功半。畢竟,您可以直接在屏幕上看到 UI;為什么需要編寫自動化測試來確認已經在瀏覽器觀察到的內容?

在本文中,我們將分享為什么我們認為前端測試值得一試,為什么它以往風評被害,以及我們采用的使我們的測試易于編寫和維護的方案。

我們為什么要測試前端?

測試我們的 UI 有其他不太明顯的復利。正如 TDD(測試驅動開發)可以鼓勵開發者預先考慮極端用例,UI 組件測試也可以產生相同的效果。

還有,通過使用我們稍后將討論的工具和技術,我們可以確保滿足基本的可訪問性規則。

除此之外,擁有一套成熟的前端測試讓我們有信心快速迭代和更改產品,而不必擔心意外的回歸測試

那為什么不是每個人都編寫 UI 測試呢?

如果測試前端代碼有這么多好處,為什么經常避免測試呢?不幸的是,時至今日,“成本”方面仍然嚴重曲解了成本效益等式。

其中一個核心問題是,測試通常在 node.js 環境的 CI 中運行,而不是在代碼的實際目標環境 —— 瀏覽器中運行。

開發者不得不使用 jsdom 等工具模擬(偽造)瀏覽器 API,但當測試失敗時,它們想知道是它們的代碼壞掉了,還是只是模擬的行為與真實瀏覽器不同。

此外,在調試失敗的 UI 測試時,測試工具唯一能提供的真正幫助是將一長串 DOM 轉儲到終端中,這可能很難快速解釋。如果這就是你能得到的所有反饋,請您據此弄清楚測試失敗的原因,那我只能祝您好運:

圖片圖片

為了在實際的瀏覽器中測試前端代碼,某些團隊退回到使用端到端測試工具,如 Selenium 或 Cypress,這些工具在真實的瀏覽器中加載網站。雖然這確實提供了更大程度的置信度,但此類測試可能緩慢而脆弱。

它們更適合驗證前端和后端之間的連接,而不是單個組件的行為。

如何編寫前端測試?

幸運的是,由于一大坨優秀的開源開發者的努力,在過去幾年中,測試前端項目變得更加容易和有價值。

本文的其余部分將討論我們使用的四種主要類型的測試以及我們用于創建它們的工具。

單元測試(Vitest)

術語“單元測試”可以表示許多不同的含義。于我們而言,這意味著,對存在于組件之外的可重用邏輯代碼塊進行測試。這些可以是實用程序函數、自定義 React hooks 或最終在組件中導入和使用的任何其他代碼。

對于這些,我們使用 Vitest 作為我們的測試運行程序。我們喜歡它自動獲取我們的 Vite 配置并毫不費力地處理 ESM 依賴項。它在 6.5 秒內對 40 個文件運行 250 多個測試。我們近一半的測試文件還使用 fast-check 進行基于屬性的測試,這意味著,我們可以確信意外輸入不會破壞我們的代碼。

組件測試(Storybook)

我們構建的大部分內容都是 React 組件。這些組件可以是迷你的可復用組件,如按鈕和橫幅,也可以是更復雜的組件,如表格和模態框,甚至是整個頁面。

甚至整個 App 也是由一大坨其他組件合成的組件。因此,于我們而言,制定一個可靠的策略來測試各種組件至關重要,而我們使用的工具是 Storybook。

Storybook 通常被認為是一種文檔工具。許多設計庫都會發布一個 Storybook 網站,列出所提供的組件,提供有關它們的有用提示,并演示如何使用它們。作為一個非常小的團隊,這不是我們使用 Storybook 的主要原因。

取而代之的是,我們將其用作一個隔離的環境,我們可以在 App 之外構建組件,從而在構建它們所屬頁面的其余部分之前為我們提供一個處理它們的地方。

我們為每個組件創建不同的“story”,以反映它可能出現的不同狀態,如錯誤條件、空狀態、默認狀態等——有點像 TDD。

我們甚至可以模擬 API 響應,這樣我們就不用等待后端向我們發送數據,然后再開始開發功能。

不久前,Storybook 還添加了播放功能,該函數能夠觸發與組件的交互,并使用流行的 Testing-Library 工具集斷言它們的行為。有了這個,我們可以像用戶一樣單擊并在組件中輸入文本,然后確保它的行為符合我們的預期。

我們還發現,由于 Testing-Library 鼓勵通過標簽或角色而不是 CSS 類來選擇元素,因此我們的可訪問性也得到了改進。在 CI 中,我們可以使用 Storybook 測試運行程序來執行我們所有的播放功能,并確保沒有任何損壞。

我們目前有 1_000 個故事,涉及 200 多個組件,其中一半以上的 story 具有與斷言的交互測試,這使得這些測試成為我們絕大多數測試,在 CI 中運行大約需要 3 分鐘,分為 6 個作業。

最好的部分是,如果測試失敗,我們可以在瀏覽器中將其拉出并查看出了什么問題,而不是只查看頁面的 HTML 標記。

通過創建 story 和測試從按鈕到整個 App 的所有復雜程度的組件,我們可以確保它們表現正常。

圖片圖片

視覺快照測試(Chromatic)

組件的行為方式確實很重要,但是它的外觀呢?殘缺的樣式不僅會令人尷尬,而且還會導致可用性問題。地球人都知道,用 CSS 編寫的樣式很容易被意外破壞,對任何類型的基本樣式進行更改都可能很可怕。

我剛剛更改了段落的默認邊距,但我是否記得檢查 App 所有塵土飛揚、無人問津的角落的所有極端用例,比如載入和錯誤狀態?

幸運的是,正如您在上面看到的,我們為每個塵土飛揚的角落和極端情況準備了 Storybook story,所以我們可以在創建每個 story 時拍照,然后在發生任何變化時再次拍照,比較它們以尋找差異。

可以建立一個自主開發的系統來做到這一點,并且有許多服務可以按月付費。我們選擇使用 Chromatic,即 Storybook 本身的開發者。

這些視覺快照測試使我們免于多次發布視覺錯誤,并讓我們有信心更改所有標題元素的默認底部間距,而不必擔心我們會讓 App 中的不明頁面看起來殘缺不全。

下面是 Chromatic 在重構 PR 中標記的最近更改的示例,該更改阻止了我們發布殘缺的樣式更改(以綠色顯示):

圖片圖片

端到端測試(Playwright)

最后,在我們的測試堆棧的頂部是端到端(e2e)測試,用于驗證我們部署的 App 是否與部署的數據庫和 API 服務器協同工作。

我們的所有其他測試都使用虛假數據將組件置于特定狀態,并避免發出可能緩慢且不可靠的網絡請求。但是,這意味著,我們需要仔細檢查虛假響應是否與真實服務器的實際行為相匹配。

出于這個原因,我們編寫了一些測試,用于執行從注冊和身份驗證流程(使用真正的魔術鏈接電子郵件和雙因素身份驗證)到主機創建和刪除再到計劃升級的所有內容。

這些不需要測試我們的組件在不同情況下的行為(我們的組件測試已經涵蓋了這一點),而是測試網站如何與后端交互以實現用戶的目標。對于這些測試,我們使用 Playwright,它啟動多個瀏覽器的無頭版本。如果測試在 CI 中失敗,我們將獲得一個調試跟蹤,該跟蹤顯示測試每個步驟的頁面狀態,我們發現這有助于確定測試失敗的原因。

除了每次對前端進行更改時運行這些測試外,我們還會在夜間運行它們,以便在將 API 服務器部署到生產環境之前,在我們的暫存環境中捕獲 API 服務器所做的任何意外的重大更改。

圖片圖片

榮譽獎(靜態分析)

雖然并不總是被認為是“測試”,但還有另一類工具也可以幫助我們避免發布殘缺的代碼。我們使用靜態分析工具,包括 linter(ESLint 和 Stylelint),它們強制執行最佳實踐并幫助避免某些類型的錯誤,我們使用 TS(TypeScript)編寫代碼,它在 JS 上添加了類型支持,讓我們確信我們不會在代碼中輸入拼寫錯誤或調用實際上不存在的方法。

責任編輯:武曉燕 來源: 人貓神話
相關推薦

2022-07-26 06:57:07

數據管道端點API

2020-06-12 07:55:43

水工業物聯網IoT

2021-11-29 18:11:33

自動化現代化網絡優化

2023-08-23 15:18:06

云計算容器

2013-11-27 09:47:57

應用現代化云遷移

2015-10-29 14:35:21

移動設備現代化

2023-12-07 11:38:25

2021-06-15 07:18:03

Windows10操作系統微軟

2023-08-31 10:04:02

Astro 3.0前端

2022-07-11 05:34:19

云原生應用程序

2023-11-27 11:24:32

云計算云原生

2023-05-03 21:47:22

2024-01-23 15:21:14

2025-08-08 07:18:00

CIOIT架構IT服務管理

2020-06-05 14:16:05

醫藥

2015-09-15 11:06:33

第一屆稅務行業信息化研華為

2021-04-13 16:13:38

大數據教育科學

2025-02-13 00:42:58

點贊
收藏

51CTO技術棧公眾號

欧美国产乱子伦 | 久久只有精品| 在线亚洲午夜片av大片| 91小视频在线播放| free性欧美16hd| 国产亚洲精品精华液| 成人中心免费视频| 日韩手机在线观看| 人人狠狠综合久久亚洲婷| 日韩午夜激情免费电影| av免费观看网| av片哪里在线观看| 久久五月婷婷丁香社区| 亚洲精品免费一区二区三区| av大片在线免费观看| 97精品97| 亚洲精品一区久久久久久| 亚洲激情在线看| 欧美xo影院| 曰韩精品一区二区| 亚洲三区在线| 亚州视频一区二区三区| 激情综合网最新| 欧美在线观看日本一区| 激情五月婷婷在线| 日韩久久精品网| 日韩经典中文字幕在线观看| 亚洲精品第三页| 欧美电影免费观看| 亚洲成人综合视频| 四虎永久免费网站| 午夜国产福利在线| 久久久噜噜噜久久中文字幕色伊伊| 91九色在线观看| 在线免费观看av片| 日韩精品三区四区| 欧美主播福利视频| 精品久久免费视频| 欧美视频官网| 美女福利精品视频| www.5588.com毛片| 97在线精品| 在线亚洲欧美视频| 我想看黄色大片| 欧美人与牛zoz0性行为| 亚洲激情在线观看| 日本国产在线视频| 凹凸av导航大全精品| 91精品一区二区三区在线观看| 蜜桃免费在线视频| 四虎4545www国产精品| 欧美午夜精品久久久久久人妖| 男人天堂av片| 91九色国产在线播放| 一区二区三区中文字幕电影| 2021国产视频| av中文字幕在线播放| 亚洲啪啪综合av一区二区三区| 亚洲精品国产一区| 最新真实国产在线视频| 国产精品全国免费观看高清| 亚洲国产精品一区二区第一页 | 91色porny蝌蚪| 精品亚洲第一| 欧美精品a∨在线观看不卡 | 亚洲国产小视频| 亚洲av人人澡人人爽人人夜夜| 国产亚洲成av人片在线观黄桃| 欧美精品一区视频| 极品粉嫩小仙女高潮喷水久久| 欧美1区二区| 亚洲美女激情视频| 国内精品卡一卡二卡三| 999精品色在线播放| 久久综合电影一区| 国产一级免费观看| 美女诱惑一区| 国产日韩欧美成人| 亚洲第一视频在线| 91亚洲国产成人精品一区二区三 | 成人在线免费视频| 国产精品美日韩| 97久久国产亚洲精品超碰热| 女海盗2成人h版中文字幕| 色综合久久综合网97色综合| 91精品无人成人www| 日韩在线网址| 亚洲少妇中文在线| 91插插插插插插| 99pao成人国产永久免费视频| 国产精品91久久久久久| 国内精品偷拍视频| 久久久久久久久免费| 中文字幕免费在线不卡| 欧美韩日亚洲| 欧美在线一区二区三区| 中文字幕在线观看视频www| 日韩av资源网| 日韩中文字幕不卡视频| 精品一区二区三区人妻| 日本vs亚洲vs韩国一区三区二区 | 日韩丝袜视频| xxxxx91麻豆| 国产成人在线免费观看视频| 久久国产成人午夜av影院| 国产女人水真多18毛片18精品| 激情小视频在线观看| 一区二区三区精品在线| 青青青在线视频免费观看| 视频二区欧美毛片免费观看| 在线国产精品播放| 国产五月天婷婷| 久久综合综合久久综合| 国产在线精品一区二区三区》| 97视频在线观看网站| 久久精品视频在线免费观看| 欧美成人网在线| 精品美女久久久久| 久久www免费人成看片高清| 国产精品成人一区二区三区| 永久免费av在线| 欧美日韩一区免费| xxxxwww一片| 日韩精品免费一区二区三区| 91精品国产91久久| 性猛交xxxx乱大交孕妇印度| 国产精品美女久久福利网站| 成年人视频网站免费观看| 亚洲视频国产| 北条麻妃在线一区二区| 日韩国产亚洲欧美| 91在线国内视频| 精品国产一区二区三区无码| 国产精品一区二区精品| 深夜福利一区二区| av大片免费在线观看| 国产高清精品网站| 自拍偷拍一区二区三区| 成人午夜一级| 中文字幕亚洲一区| 99re这里只有精品在线| 91首页免费视频| 免费 成 人 黄 色| 国产精品白丝av嫩草影院| 欧美国产日产韩国视频| 国产精品综合在线| 亚洲天堂精品视频| 久久综合在线观看| 亚洲精品电影| 亚洲在线第一页| 五月花成人网| 欧美成人官网二区| 精品少妇一二三区| 成人aa视频在线观看| 加勒比成人在线| 国产成人夜色高潮福利影视| 欧美精品久久久久久久久| 亚洲精品97久久中文字幕无码| 亚洲综合激情网| 日本在线不卡一区二区| 99精品99| 日本在线一区| japansex久久高清精品| 九九热这里只有精品免费看| 亚洲国产成人精品一区二区三区| 亚洲永久精品大片| 50一60岁老妇女毛片| 一本久道久久久| 欧美精品免费观看二区| 欧美不卡高清一区二区三区| 中国china体内裑精亚洲片| 久草热在线观看| 中文字幕一区二区三区视频| 免费黄视频在线观看| 99国产成+人+综合+亚洲欧美| 久久久影院一区二区三区| 免费成人美女女| 亚洲最大中文字幕| 国产日本精品视频| 亚洲午夜日本在线观看| 中文字幕国产专区| 久久福利视频一区二区| 欧美久久久久久久久久久久久久| 欧美精品中文字幕亚洲专区| 国产精品久久久久久久天堂| a级片国产精品自在拍在线播放| 亚洲国内精品视频| 中文字幕av网站| 一区二区三区在线观看网站| 大黑人交xxx极品hd| 美女视频黄a大片欧美| 又大又硬又爽免费视频| 国产一区二区欧美| 91久久在线视频| 亚洲三级欧美| 久久天天躁狠狠躁老女人| 午夜在线视频免费| 欧美日韩国产综合一区二区| 四虎永久在线精品| 国产精品美女久久久久久久久| 911亚洲精选| 日韩高清在线观看| 国产一线二线三线女| 欧美亚洲激情| 国精产品一区二区| 日韩一区二区三免费高清在线观看| 久久久久久久久久久亚洲| 免费在线毛片| 精品国产不卡一区二区三区| 在线观看免费视频a| 精品国产电影一区| 欧美精品一级片| 中文字幕精品综合| 亚洲国产第一区| 国产成人一区在线| 亚洲国产日韩欧美在线观看| 国产日韩亚洲| 高清无码视频直接看| 久久国产精品成人免费观看的软件| 国精产品99永久一区一区| 精品午夜av| 国产精品亚发布| 美女100%一区| 97色在线观看免费视频| 午夜av在线免费观看| zzijzzij亚洲日本成熟少妇| 国产精品二线| 亚洲女同性videos| 日本免费不卡视频| 日韩一区二区三区视频| 亚洲天堂中文网| 欧美在线观看一区| 黑人精品无码一区二区三区AV| 亚洲国产综合色| 久久久久香蕉视频| 依依成人精品视频| 欧美黑人猛猛猛| 亚洲精品国产无套在线观| frxxee中国xxx麻豆hd| 国产日韩欧美制服另类| mm131丰满少妇人体欣赏图| 97超碰欧美中文字幕| 一起草在线视频| 成人sese在线| 日韩aaaaa| 91小视频免费观看| 免费看污片网站| 国产亚洲午夜高清国产拍精品| 色婷婷在线影院| 亚洲国产精品高清| 人人艹在线视频| 亚洲色图20p| 欧美日韩精品亚洲精品| 一区二区三区高清| 精品少妇一二三区| 亚洲成av人片| 国产精品suv一区| 欧美亚一区二区| 中文字幕第三页| 这里只有精品电影| www.av黄色| 亚洲国产成人精品女人久久久| 无码国精品一区二区免费蜜桃| 精品丝袜一区二区三区| 成人一区二区不卡免费| 色青青草原桃花久久综合| 精产国品自在线www| 色综合91久久精品中文字幕| 91超碰免费在线| 日本欧美一二三区| 国产成人精选| 97免费资源站| 亚洲电影一级片| 亚洲精品成人自拍| 中文字幕日韩一区二区不卡| 无码粉嫩虎白一线天在线观看 | 日本在线中文字幕一区| 欧美日韩免费精品| 97精品一区二区| 亚洲色成人www永久在线观看| 香蕉国产精品偷在线观看不卡| 五月婷婷狠狠操| 国产一区二区三区久久悠悠色av| 2025中文字幕| 国产亚洲午夜高清国产拍精品 | 欧美日韩国产在线看| 无码任你躁久久久久久久| 欧美丰满一区二区免费视频| 女人18毛片一区二区三区| 亚洲欧美一区二区三区四区| 麻豆影院在线观看| 91av视频在线观看| 日韩欧国产精品一区综合无码| 精品国产乱码久久久久久108| 欧美日韩一二| 免费看欧美一级片| 日韩不卡一二三区| 激情av中文字幕| 国产精品视频麻豆| 久久精品人妻一区二区三区| 欧美午夜精品理论片a级按摩| 后进极品白嫩翘臀在线视频| 最新91在线视频| 樱桃视频成人在线观看| 亚洲xxxxx| 欧美综合在线视频观看| 国产欧美日韩小视频| 极品少妇xxxx精品少妇| 99久久久无码国产精品性| 一区二区三区免费在线观看| 糖心vlog精品一区二区| 日韩电影免费在线观看中文字幕| 成人黄色在线电影| 国产精品入口福利| 亚洲警察之高压线| 无码av天堂一区二区三区| 捆绑变态av一区二区三区| 国产肥白大熟妇bbbb视频| 亚洲国产视频一区二区| 国产又黄又大又爽| 伊人久久久久久久久久| 中文在线资源| 国产乱码精品一区二区三区不卡| 国产精品videosex性欧美| 天美星空大象mv在线观看视频| 91片黄在线观看| 国产中文字幕免费| 日韩欧美一区中文| 蜜桃视频网站在线观看| 国产精品白嫩初高中害羞小美女| 色婷婷综合久久久久久| 18禁裸男晨勃露j毛免费观看| 国产精品一区二区在线播放| 国产视频精品免费| 欧美日韩五月天| 在线观看免费黄色| 77777亚洲午夜久久多人| 国产成人精品亚洲线观看| 欧美高清中文字幕| 粉嫩久久99精品久久久久久夜| 69av.com| 欧美大片在线观看一区| 日本三级在线观看网站| 不卡视频一区| 在线播放精品| yy1111111| 欧美天堂在线观看| 三级在线播放| 91精品国产乱码久久久久久久久| 电影一区二区在线观看| 国产一二三在线视频| 99久久免费国产| 国产精品视频一区在线观看| 亚洲午夜精品久久久久久久久久久久| 韩国主播福利视频一区二区三区| 欧美日本韩国在线| 日韩福利电影在线| 日本二区三区视频| 欧美一级视频精品观看| 福利在线导航136| 麻豆传媒一区| 青草国产精品久久久久久| 天堂网中文在线观看| 日韩亚洲欧美一区| 678在线观看视频| 蜜桃传媒视频麻豆一区| 奇米影视一区二区三区小说| 国产精品丝袜一区二区| 亚洲精品在线电影| 成人片免费看| 亚洲最新在线| 成人激情免费网站| 中文字幕一区在线播放| 中文字幕欧美亚洲| 亚洲高清在线一区| 久在线观看视频| 国产精品久久久久久久久免费桃花| 国产情侣激情自拍| 97色在线视频观看| 四虎8848精品成人免费网站| www.黄色网| 色狠狠色狠狠综合| 97超碰在线公开在线看免费| 国产一区二区三区高清视频| 青青青爽久久午夜综合久久午夜| 欧美三根一起进三p| 亚洲欧美精品一区二区| 国产午夜久久av| 国产在线观看福利| 亚洲免费看黄网站| 欧美成人片在线| 97超级碰碰| 青娱乐精品在线视频| 午夜偷拍福利视频| 国产亚洲精品美女| 国产精品一区二区中文字幕| 日韩欧美国产片| 都市激情亚洲色图| 午夜伦理在线视频| 一区二区三区的久久的视频|