簡介

Nightwatch 網頁測試系列

歡迎來到我們的部落格系列,內容是關於使用 Nightwatch 在真實瀏覽器中測試網站和網頁應用程式。我們將逐步介紹學習測試的過程。

  • 入門 (您在這裡)
  • 網站的複雜情境與測試
  • 專注於頁面物件模型 (POM) 的測試編寫模式
  • 產生具有DOM 歷史記錄HTML 報告,以進行徹底分析
  • 使用 Nightwatch 建立自訂指令

此外,我們將探索 Nightwatch 的兩個強大功能

  • Inspector 工具,讓您可以使用圖形介面編寫測試,以及
  • Chrome Recorder,讓您無需編寫程式碼即可建立測試。我們將引導您有效使用這些工具。

為了確保全面測試,我們還將討論

  • CIGitHub Actions 上執行測試
  • 使用 BrowserStack 進行跨瀏覽器測試
  • 行動瀏覽器上執行測試

在本系列結束時,您將擁有 Nightwatch 網頁測試的紮實基礎,使您能夠確保網頁專案的品質和可靠性。

在這第一篇部落格文章中,我們將重點介紹 Nightwatch 的入門。從設定 Nightwatch 到編寫您的第一個測試和產生報告,我們將提供逐步指南,讓您開始使用 Nightwatch 進行網頁測試之旅。您也可以觀看這篇文章的影片教學

測試領域簡介

軟體測試包含各種測試類型,以確保應用程式的品質和可靠性。單元測試驗證個別程式碼單元,整合測試檢查元件互動,而 API 測試則專注於 API 功能。視覺迴歸測試偵測視覺變化,而端對端測試則涵蓋整個應用程式流程。可存取性測試確保使用者體驗的包容性。跨瀏覽器測試保證在不同瀏覽器上的相容性,而行動測試則確保在行動裝置上的最佳效能。每種類型的測試都有特定的目的,並有助於確保高品質的軟體產品。

Nightwatch 🦉 簡介

Nightwatch 是一個不妥協的測試自動化框架,簡化了開發人員的網頁和行動測試。Nightwatch 配備了一套強大的工具,可讓您在網頁和原生行動應用程式上編寫、執行和除錯測試。它可以與常用的測試工具和服務無縫整合,實現高效的測試執行和結果分析。

設定 Nightwatch

讓我們開始吧。首先,我們需要在開發環境中設定 Nightwatch。無論您是啟動新專案還是將 Nightwatch 整合到現有專案中,我們都能滿足您的需求。

npm init nightwatch <project-name>

如果您已經有現有的網頁應用程式,請進入根資料夾並執行以下命令。

npm init nightwatch

Nightwatch 將會詢問一系列問題。請回答以下問題。

? Select testing type to setup for your project 
    ❯◉ End-to-End testing
? Select language + test runner variant 
    ❯ JavaScript / default
? Select target browsers 
    ❯◉ Chrome
? Enter source folder where test files are stored 
    test
? Enter the base_url of the project 
    https://nightwatch.dev.org.tw/
? Select where to run Nightwatch tests On 
    ❯ localhost
? Allow Nightwatch to collect completely anonymous usage metrics? 
    ❯ Yes
? Setup testing on Mobile devices as well? 
    ❯ No, skip for now
💡
注意: Nightwatch 預設支援 TypeScript、不同類型的測試、其他測試執行器和所有主要瀏覽器。在本教學的範圍內,我們將保持簡單,並專注於使用 JavaScript 在 Chrome 上進行端對端測試,而不使用測試執行器。

設定 Nightwatch 就是這麼簡單!一旦您回答了問題,Nightwatch 就會安裝所有必要的相依性,並為您的開發環境準備好編寫測試。對於新專案和現有專案,過程完全相同。您可以在我們的指南中閱讀更多關於安裝的資訊。

您的第一個測試

現在是令人興奮的部分 – 編寫您的第一個測試!我們將引導您了解使用 Nightwatch 建立測試腳本的基本原理。

Nightwatch 支援常用的 BDD 介面來編寫測試 – describeit 格式。讓我們從定義第一個測試的規格開始。在這個測試中,我們將前往 Nightwatch 的首頁,並檢查標題是否正確 → “Introducing Nightwatch v3”。

/test 資料夾下建立一個名為 home.spec.js 的檔案,並包含以下程式碼。

describe('Nighwatch homepage', function() {
  it('Should have the correct title', function(browser) {
    browser.navigateTo('/').assert.textEquals('h1', 'Introducing Nightwatch v3')
  })
})

說明

browser.navigateTo('/') - 我們要求瀏覽器從安裝期間定義的啟動 URL 前往路徑 '/'。您可以在設定檔 nightwatch.conf.js 中編輯此設定。

.assert.textEquals('h1', 'Introducing Nightwatch v3') - 我們使用 textEquals 函數驗證選取器為 h1 的元素中的文字是否等於 "Introducing Nightwatch v3"。

執行

儲存測試腳本後,就可以使用 Nightwatch 執行它了。前往您的命令列並輸入以下命令。

npx nightwatch test

您應該會看到 Chrome 瀏覽器開啟,導覽至 Nightwatch 首頁並關閉。命令列應該有以下內容。

恭喜!!👏👏 您已成功執行第一個測試。

報告與除錯

執行測試後,Nightwatch 會產生詳細報告,提供寶貴的見解。複製 HTML 報告檔案路徑,並將前綴 file:// 貼到瀏覽器中,您將看到以下報告。當我們編寫複雜測試並遇到問題時,可以檢查此報告以進行除錯。

接下來

探索複雜測試案例和進階技術

您已經學習了如何使用 Nightwatch 設定測試環境,並成功編寫了一個端對端測試。在我們的下一篇部落格文章中,我們將深入探討網站測試領域 – 處理複雜測試情境的策略,例如多標籤互動、複雜選取器、iFrame、複製/貼上、屬性斷言、使用 async/await、與 DOM 元素互動、執行用戶端 JS 等。敬請期待我們即將發佈的部落格文章「網站複雜測試情境」。

加入我們的社群 💬

如果您有任何問題,請隨時訪問我們的 Discord 伺服器並打個招呼。我們的社群隨時提供支援、分享見解,並協助您解決任何與測試相關的問題。我們歡迎您的積極參與,並期待在我們的 Discord 社群中與您聯繫。

祝您測試愉快!🎉

影片教學

Get Started with Web Testing using Nightwatch - Video Tutorial
使用 Nightwatch 開始網頁測試 - 影片教學