从PhantomJS迁移到node-webkit:自动化测试框架简单比较


发布者 ourjs  发布时间 1417227095450
关键字 心得体会  分享 
注* PhantomJS 和 node-webkit 是基于Webkit实现的一套跨平台桌面程序应用的解决方案,PhantomJS此前多用于自动化测试方面。Node-Webkit是由Intel公司开源技术中心的王文睿(Rogerwang)发起的一个开源项目,此项目将node与webkit进行了融合。

我的网站有一些兼容性测试组件;从不同的网页截图然后同期望的图片进行对比。

https://github.com/twolfson/twolfson.com/tree/3.40.0/test/perceptual-tests/expected_screenshots

这个周末,我从PhantomJS 迁移到了node-webkit,我很高兴做成了这件事。




好的方面


  • 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)

https://github.com/atom/atom-shell/issues/847

最新可以捕捉屏幕截图的版本(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变得复杂了一些。





回复 (6)
  • #
  • #1 强仙扎 1418102186299

    加粗文本![强调文本][1]

  • #2 常刚右 1452741194212

    。。。。。。。。。。。。。。。。。。。

  • #3 涂至句 1492136589213

    强调文本在这里输入代码加粗文本

    引用 引用在这里输入代码

  • #4 涂至句 1492136643080

    强调文本*强调文本*

  • #5 沈权丙 1492858600370
    在这里输入代码***强调文本***
    
  • #6 范在勿 1497570111863

    Gf

微信扫码 立即评论