Macaca [基于 Node.js 的自动化测试-Macaca] - 如何覆盖 React Native 功能测试

达峰的夏天 · 2016年05月17日 · 最后由 达峰的夏天 回复于 2016年06月27日 · 2971 次阅读

上一篇 - 使用 Travis 做多平台持续集成

使用 Macaca 做前端组件测试一篇已经介绍了如何在浏览器运行时测试。本篇介绍如何对 Native 的渲染进行测试,覆盖 React Native 的功能测试等同于覆盖 Native 的测试,需要 iOS, Android 的系统运行时环境。此类端对端测试使用 Macaca 的 Native 配置即可。

示例

本示例以 React 组件 autoresponsive-react 为例说明,对 UI 功能进行一些操作,配合截图等方式辅助校验。

describe('base', function() {
  this.timeout(5 * 60 * 1000);

  var driver = wd.initPromiseChain();

  driver.configureHttp({
    timeout: 300 * 60 * 1000
  });

  before(function() {
    return driver
      .initDriver();
  });

  after(function() {
    return driver
      .sleep(1000)
      .quit();
  });

  it('#1 login picture should be the same.', function() {
    return driver
      .sleep(40 * 1000)
      .waitForElementByName('autoresponsive')
      .takeScreenshot()
      .then(imgData => {
        var newImg = new Buffer(imgData, 'base64');
        var screenshotFolder = path.resolve(__dirname, '../screenshot');
        var oldImgPath = path.join(screenshotFolder, process.env.platform === 'android' ? 'android.png' : 'ios.png');
        var diffImgPath = path.join(screenshotFolder, process.env.platform === 'android' ? 'android-diff.png' : 'ios-diff.png');
        return diffImage(oldImgPath, newImg, 0.3, diffImgPath);
      })
      .then(result => {
        result.should.be.true();
      })
      .catch(e => {
        console.log(e);
      });
  });
});

如何配置 Native-CI

Native-CI 非常重要,同样,Macaca 配置 React Native UI 测试环境也非常方便,只是需要注意测试之前要通过 Build 流程。

更多的 CI 配置也可以访问 Macaca 官方文档

Comparison

Image diff 是个很实用的辅助测试手段,对 UI 进行截图与预期图片对比,可以得出功能测试结果是否符合预期:

如下图就是个例子:

本文示例代码见: autoresponsive_react_native_sample

欢迎讨论,互相学习。

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

下一篇 - Android 设备如何自动解锁

共收到 12 条回复 时间 点赞

赞,还能在 RN 应用中使用!

我擦, macaca 越来越强大了。你们可以开个收费培训课程了。

#2 楼 @lihuazhang 开源是为了技术解决所在团队业务问题顺便发挥余热帮更多人,永无任何盈利性的计划哦。

#3 楼 @xdf 我觉得很快就会有人推出你们的课程了。

#4 楼 @lihuazhang 欢迎大家研究探讨,一起做更好

#4 楼 @lihuazhang 携程已经换 macaca 了。。

#3 楼 @xdf 你们没有,但不代表别人不会来利用。。。

不错, 移动测试大会的时候期待你的精彩技术 show

#6 楼 @monkey 看出来了,很多携程同学在发帖玩

这真是稳定高产啊,我都想要直接转用 macaca 了

不错的技术

我也在研究中~
确实还可以~感谢分享

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