從PhantomJS遷移到node-webkit:自動化測試框架簡單比較

jopen 10年前發布 | 44K 次閱讀 PhantomJS 測試工具
注* PhantomJS 和 node-webkit 是基于Webkit實現的一套用Web技術實現跨平臺桌面程序應用的解決方案,PhantomJS此前多用于自動化測試方面。Node-Webkit是由 Intel公司開源技術中心的王文睿(Rogerwang)發起的一個開源項目,此項目將node與webkit進行了融合。

我的網站有一些兼容性測試組件;從不同的網頁截圖然后同期望的圖片進行對比。


這個周末,我從PhantomJS 遷移到了node-webkit,我很高興做成了這件事。


comparison.png

好的方面


  • node_modules/ 下的模塊仍然可以使用 (比如沒有 process 是 undefined 的問題)
  • node_modules/ 可以自動通過require獲取

不好的方面


  • node-webkit 的啟動時間較長
  • 需要定義index.html和package.json去加載node友好的上下文。
             這一點可以通過封裝一層腳本來解決。(比如為它創建一個node的模塊)


一些坑


  • 這里有一些并發的問題,如果同一時間截兩張圖就需要手動kill掉這個進程。
             否則你偶爾會看到一些白色的截圖
  • node-webkit@0.10.5會偶爾在鏈接下面出現下劃現。實際上不應該出現的。
            升級到node-webkit@0.11.1就可以了
  • 需要使用Xvfb去擴大桌面載圖的尺寸(比如2000的高在1080的分辨率下)
  • 需要使用 Vagrant 去匹配 Travis CI 渲染

為什么不用atom-shell?


我剛開始用的是atom-shell。但是最近的版本在截圖上有BUG(0.19.3)


最新可以捕捉屏幕截圖的版本(0.17.2)缺少一個機制,從網站讀取數據時node-integration被禁用。這將無法保證該網站是否盡可能準確。

為什么不用Selenium?


Selenium也許是目前截圖最精確的。然而它的配置,安裝和維護都沒有node-webkit容易。

更外,我希望盡早驗證node-webkit是不是PhantomJS腳本的一個很好的替代者。



注* node-webkit 與 atom-shell 都是基于 node.js 和 Chromium 實現的一種使用Web技術實現桌面程序的解決方案,他們有哪些不同呢?以下來譯自: Technical differences to Node-Webkit

1. 應用入口
node-webkit的入口是一個網頁,而atom-shell的入口是一個JS腳本,這一點跟phantomjs比較像。

2. 編繹流程
Atom-shell使用 libchromiumcontent 訪問Chromium的上下文API,而無需編繹整個Chromium項目,較低配置的機器就可以完成編繹。

3. Node集成
在Node-Webkit中需要修改Chromium的源代碼完成集成(注* 比如在一次訪談中
Rogerwang曾經提到,node-webkit將node和Chromium的EventLoop進行了合并),而atom-shell將使用了不同的集成方式(參見第四條),從而避免對chromium的源代碼進行修改。

4. 多個上下文
如果你是Node-Webkit用戶,你可能知道Node Context(上下文)和Web Context,
通過 multi-context, atom-shell沒有在網頁中引入新的JavaScript 上下文。

注* atom-shell 是由github開發的,在github是一家比較有影響力的開源公司,node社區應github的要求在v0.12版本中加入了這個特性(尚未發布,參見: multi-context)。類似在一個事件循環中實現多個線程? 但這也不可避免地將node.js變得復雜了一些。
原文地址: twolfson.com
來自:http://ourjs.com/detail/54792b570dad0fbb6d000005
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!