Nightwatch 是專門給網頁使用的自動化測試框架,它使用 W3C WebDriver API(過去稱為 Selenium WebDriver)來自動操作瀏覽器。好處是可撰寫並自動執行 End-to-End Testing 與 Node.js 的 Unit Testing,並簡化設定 CI(Continuous Integration,持續整合)的過程。在這裡,我們用來做 End-to-End Testing。
WebDriver 是讓開發者撰寫程式來操作瀏覽器的遠端控制介面,可作為跨瀏覽器自動化測試的工具。Nightwatch 即是透過 WebDriver API 來控制瀏覽器,模擬人類的各種操作行為,例如:瀏覽特定網址、輸入文字、點擊按鈕等。
Nightwatch 將我們所撰寫的測試程式碼轉成 HTTP Request 送到 WebDriver Server(也就是 Selenium Server),Selenium Server 再送到瀏覽器,接著 Selenium Server 回傳 HTTP Response 回來給 Nightwatch。Nightwatch 幾乎必須至少送兩次 Request 到 Selenium Server 才能完成一個完整的指令(Command)或斷言(Assertion)。第一個 Request 是依照 CSS Selector 或 Xpath 來定位網頁元素,第二個指令是對這個網頁元素執行指令或斷言。
圖片來源:Theory of Operation
大致了解 Nightwatch 與 Selenium Webdriver 後,接下來就可以開始建置環境、準備開工了。手牽手一起來學 Nightwatch 吧!
網誌版。