Macaca [基于 Node.js 的自动化测试-Macaca] - 前端组件测试

达峰的夏天 · 2016年04月28日 · 最后由 达峰的夏天 回复于 2016年06月27日 · 3879 次阅读

上一篇 - 跨终端的 Webdriver 客户端实战

上周在沪江分享了 React 组件开发与测试,很多同学问 Macaca 做黑盒功能测试是如何配置的,所以打算写篇文章介绍下。

明确下做哪些

回顾下我们之前的整理,在浏览器运行时的前端组件是需要覆盖单元测试的,首先我们覆盖白盒测试,如这里,使用世面上的框架 (angular, react, vue) 提供的自带工具模块就好,如果有更多特性的模块随意使用无妨。接下来就是要覆盖 UI 层面的黑盒测试。

需要哪些准备

安装依赖包

cnpm i macaca-cli webdriver-client --save-dev

为了演示方便,我给 PPT 中的组件写了几行用例,如下:

var wd = require('webdriver-client')({
  platformName: 'desktop',
  browserName: 'electron'
});

describe('macaca desktop sample test', function() {
  this.timeout(5 * 60 * 1000);

  ...

  it('#1 should append success', function() {
    var length;

    return driver
      .execute('return document.querySelectorAll(".item").length')
      .then(function(data) {
        length = data;
      })
      .elementsByCss('button.btn')
      .then(function(buttons) {
        return buttons[3];
      })
      .click()
      .sleep(1000)
      .execute('return document.querySelectorAll(".item").length')
      .then(function(newLength) {
        newLength.should.equal(length + 1);
      })
      .sleep(3000);
  });

  ...
});

用例会帮助我们自动点击按钮,并且校验是否有预期 DOM 节点生成,完整代码请看 autoresponsive-react

使用开放持续集成

如果你的组件是开放的,那可以使用免费的 Travis-CI 做持续集成,配置也非常容易。

$ @${npm_bin}/macaca run --no-window

完整的脚本可以看:这里

这里是详细 log:autoresponsive-react/builds/126152787

这样一旦组件有了改动,就会自动将白盒 + UI 测试都运行一次,可以高效地保障组件质量。

欢迎讨论,互相学习。

微博: http://weibo.com/xudafeng
Github: https://github.com/xudafeng

下一篇 - 使用 Macaca 做手机浏览器测试

共收到 5 条回复 时间 点赞

原来一直都支持组件测试啊 赞!

#2 楼 @ziczhu 是呀,把这些实践都总结出来,发给大家

单元测试 接口测试与 ui 测试可以共同一起开发

达峰的夏天 [该话题已被删除] 中提及了此贴 06月27日 11:17
达峰的夏天 [该话题已被删除] 中提及了此贴 06月27日 11:17
达峰的夏天 [该话题已被删除] 中提及了此贴 06月27日 11:17
达峰的夏天 Macaca Web 测试最佳实践 中提及了此贴 03月18日 22:48
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册