热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

运用HeadlessChrome举行自动化测试

本文翻译自:AutomatedtestingwithHeadlessChrome作者:EricBidelman(Google工程师)译者:justjavac假如您想运用Headle

本文翻译自:Automated testing with Headless Chrome
作者:Eric Bidelman (Google 工程师)
译者:justjavac

假如您想运用 Headless Chrome 举行自动测试,请不要再张望了!本文将教你怎样运用 Karma 作为 test runner ,并合营 Mocha + Chai 举行测试。

这些是什么呢?

Karma?Mocha?Chai?Headless Chrome?oh my!

  • Karma 是一种测试套件,能够与任何盛行的测试框架 (比方 Jasmine, Mocha, QUnit) 一同运用。

  • Chai 是一个断言库,能够与 Node.js 或许浏览器一同运用。我们须要后者。

  • Headless Chrome 是一种在 headless 环境运转的 Chrome 浏览器,这类运转体式格局没有 UI。运用 Headless Chrome(而不是直接在 Node 中测试)的优点之一是您的 Javascript 测试将在与您网站用户雷同的环境中实行。Headless Chrome 为您供应真正的浏览器环境,而无需运转完全版本的 Chrome,如许也避免了奋发的内存开支。

装置

装置依靠库

装置 Karma 已相干的插件,能够运用 yarn:

yarn add --dev karma karma-chrome-launcher karma-mocha karma-chai
yarn add --dev mocha chai

或许运用 npm

npm i --save-dev karma karma-chrome-launcher karma-mocha karma-chai
npm i --save-dev mocha chai

在这篇文章中,我运用 Mocha 和 Chai,假如你不喜好这两个库,你能够挑选你喜好的任何一个库,只需它能在浏览器中运转就能够。

设置 Karma

建立 karma.config.js 文件,ChromeHeadless 启动器会运用这个文件。

karma.conf.js

module.exports = function(config) {
config.set({
frameworks: ['mocha', 'chai'],
files: ['test/**/*.js'],
reporters: ['progress'],
port: 9876, // karma web server port
colors: true,
logLevel: config.LOG_INFO,
browsers: ['ChromeHeadless'],
autoWatch: false,
// singleRun: false, // Karma captures browsers, runs the tests and exits
concurrency: Infinity
})
}

注重: 运转 ./node_modules/karma/bin/ init karma.conf.js 以天生 Karma 设置文件。

写一个测试

新建文件 /test/test.js.

/test/test.js

describe('Array', () => {
describe('#indexOf()', () => {
it('should return -1 when the value is not present', () => {
assert.equal(-1, [1,2,3].indexOf(4));
});
});
});

运转你的测试

package.json 中增加一个 test 剧本,经由过程前面我们的设置文件运转 Karma。

package.json

"scripts": {
"test": "karma start --single-run --browsers ChromeHeadless karma.conf.js"
}

当您运转测试(yarn test)时,Headless Chrome 会启动并将效果输出到终端:

《运用 Headless Chrome 举行自动化测试》

建立自定义的 Headless Chrome 启动器

ChromeHeadless 启动器非常重要,由于它为我们供应了开箱即用的 Headless Chrome 测试。它包括合适您的
Chrome flag,并启动 Chrome 的长途调试功用,监听 9222 端口。

偶然您能够愿望将自定义的 flag 传递给 Chrome 或变动启动器运用的长途调试端口。我们建立一个customLaunchers 来扩大 ChromeHeadless 启动器的默许字段:

karma.conf.js

module.exports = function(config) {
...
config.set({
browsers: ['Chrome', 'ChromeHeadless', 'MyHeadlessChrome'],
customLaunchers: {
MyHeadlessChrome: {
base: 'ChromeHeadless',
flags: ['--disable-translate', '--disable-extensions', '--remote-debugging-port=9223']
}
},
}
};

在 Travis CI 上运转测试

设置 Karma 并在 Headless Chrome 中运转测试虽然不非常简朴。不过在 Travis 中做延续集成只须要几行代码!

To run your tests in Travis, use dist: trusty and install the Chrome stable addon:

要在 Travis 中运转测试,运用 dist: trusty 并装置 Chrome stable 插件:

.travis.yml

language: node_js
node_js:
- "7"
dist: trusty # needs Ubuntu Trusty
sudo: false # no need for virtualization.
addons:
chrome: stable # have Travis install chrome stable.
cache:
yarn: true
directories:
- node_modules
install:
- yarn
script:
- yarn test

: 这个堆栈(example repo)有可供参考的代码。


推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
author-avatar
纯洁的老宁同志
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有