從 Day 5 到 Day 8,我們花了不少篇幅在討論「如何準確抓到畫面上的元素」。今天我們要來看看 Playwright Test 提供了哪些好用的控制項。...
Day 5 我們認識了 Playwright 的幾種基本定位方法(getByRole、getByText、getByLabel、getByTestId),也在...
經過前面 6 天的學習,今天我們會用目前學到的觀念(Playwright 基礎架構、Locator 定位策略、POM 頁面物件模式),挑戰一個貼近真實工作情境的...
在 Day 5 的測試程式中我們用 beforeEach 把重複的登入邏輯搬出測試本身,但如果我們開啟了另一個新的測試檔案,同樣的登入程式碼是不是又要再複製貼上...
Day 4 我們體驗了 Playwright 內建的 Codegen 錄製工具,看到它能在我們操作畫面的同時,自動生成 page.getByRole(...)...
前面我們手刻了一支登入測試,一行一行寫 page.goto、page.fill、page.click。除了自己手寫這些測試程式碼外,Playwright 其實有...
Day 2 我們裝好環境、寫了第一支登入的測試,程式碼裡出現了 Page 這個參數,也在 npx playwright test 執行時看到瀏覽器自動被打開。在...
今天我們要把 Playwright 安裝起來,確認環境沒問題後,就來撰寫第一支測試。 前置需求 開始之前先確認電腦有 Node.js(建議 LTS 版本,18...
這次選定的主題是 Playwright 端對端測試(E2E Testing),主要是工作上剛好碰到,而且之前因為工作忙,一直沒什麼機會把之前學得比較零散的基礎整...
安安~我是小艾~ 參加鐵人賽最怕的事情之一,就是文章寫好了,卻因為工作忙碌或忘記時間,沒有在當天發布。我自己今年參加的比賽,20天的時候中斷了...現在新的系列...
安安~我是小艾~ 參加鐵人賽最怕的事情之一,就是文章寫好了,卻因為工作忙碌或忘記時間,沒有在當天發布。我自己今年參加的比賽,20天的時候中斷了...現在新的系列...
上一篇運用 storageState() 成功從正常登入流程拿到驗證資料,並在後續的測試當中重複使用,如此就不必在每次的測試之前重複再走一遍登入流程。接著,要更...
如果測試的頁面需要登入,每次執行測試時都會重新進行登入流程。這是因為 Playwright 在每個測試中都會啟動全新的無痕瀏覽器環境,導致登入狀態無法像一般瀏覽...
測試報告是測試裡非常重要的一環,讓我們的產出變得具象化,就像是辛苦的戰役過後,清楚地記錄所有過程、勝負的戰報,讓團隊能一目了然地看到成果與問題。 Test R...
相較於直接使用Playwright 的 VSCode Extension - Playwright Test for VSCode 或是 debug 模式,在...
昨天我們使用指令 docker run 起好 Docker 環境,再輸入指令在 docker 容器內執行 Playwright 測試,但每次都得重新輸入一長串指...
雖然我們已經讓測試可以成功地在 Github / Gitlab 上運行,但是在不同專案、不同環境,或是不同機器上,測試結果可能大相逕庭,如何確保測試環境的一致性...
上一篇已經嘗試了在 Github Aictions 上建立 CI/CD 流程,若團隊以 GitLab 作為主要的開發與協作平台,我們同樣可以打造對應的自動化流程...
歷經一連串初階副本任務,我們已經習得不少進階的實戰技巧。接著,將迎來新的挑戰,認識 Page Object Models (以下簡稱 POM)。透過建立專屬的...
上一篇我們學會了如何處理對話框,由於不曉得對話框何時出現,所以必須設置一個監聽器來處理,接著我們要來聊聊另一個非常類似的狀況:不知道預期的結果需要等多久才會出現...
上一篇我們已經學會運用序列以及篩選的方式來準確定位,但除此之外,我們還可能遇到畫面上沒有文字(無法用 getByRole 或 getByText),也沒有 la...
前兩篇我們解鎖了定位「重複元素」以及「隱形元素」的技能,接著,下一個任務,我們要解鎖的技能是「檔案的上傳與下載」,這也是一個在使用網頁時很常見也很實用的操作行為...
在真實的測試戰場裡,怪物(元素)很少會乖乖只出現一個。更多時候,你會面對一大群長得一模一樣的敵人:十幾個按鈕、數百個表格列、成群結隊的清單項目。 思考一下,我們...
上一篇我們成功地運用 Hooks 收納重複執行的程式碼,只需編寫一次就可重複使用,大大提升了可讀性,但是,各位玩家們請仔細看一下 describe 內的測試:...
前情提要 昨天我們建立了完整的套件打包策略,為不同類型的套件選擇了最適合的打包工具。今天我們要建立一個全面的測試策略,確保我們的 Monorepo 中每個套件都...
上一篇在認識 Timeout 時提到 Hooks,Hooks 是測試框架裡非常常見的生命週期輔助方法,大部份的測試框架命名都大同小異,我們開始來認識 Playw...
前一篇我們理解了 Playwright 的 async / await 機制如何讓測試能夠一步步按照順序執行,現在來談談 Playwright 另一個執行測試時...
介紹到這邊,相信細心的玩家已經發現了,測試案例必須以 async 宣告,而每一條操作、斷言,前方都必須加上 await,這就是 Playwright 非常重要的...
前兩篇介紹了斷言的基本應用以及進階技巧,Playwright 斷言的設計與特性,結合各式各樣的 matcher,已經足以應付大部分的測試場景,然而,當我們發現測...
上一篇認識了 Assertion(斷言) 的基本應用,except() 自動等待的設計結合多樣性的 matcher 讓我們可以在多變的網路戰場中應對自如,但是,...