歡迎來到全新的 Nightwatch 工程部落格,這裡將包含關於 Nightwatch 專案的最新更新和開發進展。它也將作為教學和其他相關資料的資源。內容將由 Nightwatch 團隊撰寫和策劃,但偶爾也會有我們的朋友和合作夥伴撰寫的客座文章。
背景
Nightwatch 於 2014 年初發布,旨在作為一個完整且整合的框架,使工程師能夠快速且無障礙地編寫端到端測試。在編寫時,我們的信念是編寫和運行自動化 UI 測試應該是一項直接且愉快的任務,並且應盡可能減少配置和維護。
與瀏覽器內部互動的任務已由 Selenium 專案處理,而透過基於 HTTP 的 API 與 Selenium 伺服器協同運作是一項直接的任務。因此,Nightwatch 將各種現有工具和技術整合到一個易於使用的整合解決方案中應運而生。
七年後,Node.js 的開源測試領域看起來截然不同。過去幾年中出現了幾個新框架,每個框架都為表格帶來了自己的一組功能,以及他們自己對自動化測試應如何進行的理解。
同時,Selenium 的 json-wire 協定 已轉變為 W3C Webdriver 標準,現在所有主要瀏覽器都已實作。就 Nightwatch 而言,策略並未發生太大變化。事實上,我個人更加有信心說,作為一個開源專案,Nightwatch 現在已經進入其發展和成熟的下一個主要階段。
Nightwatch 的策略仍然是,我們應該使用經過嘗試和測試的自動化領域現有工具和技術來構建解決方案,而不是走自己的路。Selenium 專案(也包括 Webdriver)已經存在十多年了,並且不斷改進和發展瀏覽器自動化的運作方式,無論是在本地開發環境中,還是在大型分散式雲端基礎架構上。這就是為什麼與 Selenium 生態系統合作使我有信心說,Nightwatch 不僅會兌現其承諾,甚至會超出期望。
Nightcloud.io
另一個重要的更新也許是我們已停止開發自己的雲端測試平台 – Nightcloud.io。我們原定於去年推出初始公開測試版,但恐怕我們已經放棄了。這是由於各種原因,但我認為主要的原因是我們 – Pineview.io 團隊 – 並未看到足夠的需求來證明這項投資是合理的。我們決定專注於 Nightwatch 本身,並努力使其成為最完善且使用者友善的開源測試框架。
Nightwatch V2
這讓我想到了我相信本文中最令人興奮的部分。下一個主要更新 – Nightwatch v2 的工作已經在進行中,它應該會在今年秋天在公共 NPM 通道中發佈。Alpha 版本將於今年 8 月推出。
我們正在完全重做傳輸層,以使用官方的 Node.js Selenium Webdriver 繫結,這表示更流暢的瀏覽器整合、更好且更可靠的 DOM 元素處理,以及整體更穩定和更快速的測試。Nightwatch v1.x 仍將受到支援,我們將針對關鍵問題發布定期修補程式更新。我們也將盡力使從 Nightwatch v1.5 或更高版本升級到 v2 的過程盡可能順利,並且盡量不引入任何重大破壞性變更。
以下是 v2 中您可能會感興趣的一些新功能
• 支援 Actions API
Actions api 提供了一種更可靠的方法來產生複雜的使用者手勢,並且將成為 Nightwatch 中的內建功能(透過現有的 .perform()
指令)。
• 擴展自動指令重試
在目前版本中,Nightwatch 僅支援重試失敗的元素檢索操作,但在 v2 中,它還會重試失敗的元素指令(例如,當點擊遇到諸如 element click intercepted
之類的錯誤時)。
• 新的相對元素定位器
新的 Selenium 4 相對定位器 將在 Nightwatch 中預設提供,並透過 Selenium By() api 改善現有的定位器。
• 內建支援使用檔案上傳
目前使用 Nightwatch 上傳檔案可能很麻煩,但在 v2 中,我們將新增一個內建指令,該指令可與 FileDetector api 搭配使用。
• 支援擴充的 Capabilities 物件
定義功能的主要方式仍然是作為 nightwatch.conf.js
設定檔的一部分,但在 v2 中,Selenium Capabilities api 建立的所有功能物件也都將預設支援。
• 在 Chrome 中設定網路條件
在進行瀏覽器自動化時,操作網路條件是一項經常需要的功能,我們將能夠在 v2 中初步支援 Chrome 和 Edge。
• 支援使用 Devtools Protocol
Chrome DevTools Protocol 允許工具對基於 Chromium 的瀏覽器(例如 Chrome 和 Edge)進行檢測、檢查、偵錯和分析,我們將在 Nightwatch v2 中新增此功能。
• 為 Webdriver BiDi 做好準備
新的 雙向 WebDriver 協定 是迄今為止 Selenium 專案中最令人興奮的最新發展之一,它可能會在速度和穩定性方面帶來遠超期望的改進。一旦可用,它也將成為 Nightwatch 的一部分。您可以在 Selenium 網站上追蹤開發進度。
• 各種新的指令 API
Nightwatch v2 也將帶來一個新的 .ensure
斷言 api,它將反映 Selenium until api、全域 element()
、expect()
、by()
和 browser
物件,這些物件將增強編寫測試的體驗並提供更大的彈性。
• 測試執行器改進
Nightwatch v2 也將對測試執行器進行一些改進,例如重新執行僅失敗測試的功能以及對平行測試執行的改進支援。
上面的列表並未詳盡無遺,並且在版本 2 的初始公開發布之前可能會有所變更。如果您可能錯過任何內容,您也可以查看 Nightwatch v1.7 中發布的更新。
告訴我們您的意見
我們也在考慮其他新功能、API 以及與 Appium 或 Playwright 等其他工具的整合。如果您願意花時間填寫這份簡短的問卷,並告訴我們您正在使用或希望在新版本中看到的功能,這將非常有幫助。請務必與您的團隊分享。
感謝您的閱讀。請務必在 Github 上為專案加星,並在 Twitter 上關注我們;我們的帳號是 @nightwatchjs。