有没有适用于Node.js的大型Web测试框架?

27

有没有类似于 Capybara 适用于 Node.js 的东西?


1
投票关闭,建议使用工具。 - Ciro Santilli OurBigBook.com
8个回答

12

Zombie怎么样?

Zombie.js

使用Node.js进行极速的无头全栈测试

The Bite

如果你要编写一个极快的无头浏览器,你怎么能不叫它Zombie呢?这就是Zombie.js。

Zombie.js是一个轻量级框架,用于在模拟环境中测试客户端JavaScript代码。不需要浏览器。


2
在这种情况下,你应该看一下phantomjs...我问这个问题的原因是capybara是一个通用的框架,适用于其他Web接受测试系统,如Selenium、htmlunit等。 - Chris
我猜目前在Node中没有像capybara这样的东西,所以我会授予你积分 - 感谢你的贡献! - Chris

5
我是一名从Rails转向Node的开发者,一直在寻找JS世界中与获胜的RSpec/Capybara组合相似的东西。以下是我最喜欢的发现:

  • Mocha - 用于运行异步测试
  • Chai - 用于断言
  • Request - 用于处理HTTP请求/响应
  • Cheerio - 用于从响应中选择HTML元素

这里有一个更详细的文章,介绍如何设置这个堆栈,包括连续的测试运行。

祝愉快的测试!


我现在正在测试类似的堆栈。它非常容易启动,但我找不到一个好的方法来执行Cheerio爬取渲染的JavaScript,就像单页应用程序一样。祝你好运。 - Adam

4
Cucumber-JS是最接近Javascript的库之一:https://github.com/cucumber/cucumber-js。你可以使用该库驱动JS、无头浏览器和Selenium,但它缺少不同“worlds”之间共享的“capybara” API。关于此有一个很好的讲座:http://skillsmatter.com/podcast/agile-testing/cucumber-js-cuke-up-your-javascript以及支持Github代码
当phantomjs webdriver wire协议完成(https://github.com/detro/ghostdriver)且Soda/Selenium (https://github.com/LearnBoost/soda)能够驱动时,我希望可以通过Selenium自动化执行无头测试来绕过对Capybara的需求。

2

请访问 jelly.io

Jellyfish 是一个 Node 项目,旨在使启动不同的 JavaScript 环境并运行代码变得容易。


0

嗨!

我创建了一个库来帮助使用cucumber-js。它提供了可调用的步骤和解析参数。这适用于cucumber,而不是替换它。

快速功能:

  • 同步步骤定义,不再需要回调;
  • 从步骤定义中调用其他步骤;
  • 解析值,如数组、对象和小数;

https://github.com/hackhat/cucumberry

希望你觉得它有用 (:

0

我们在JS中创建了一个完整的验收测试解决方案。

http://xolv.io/products/chimp

它使用CucumberJS(很快就会使用Mocha / Jasmine)来驱动您的验收测试。
  • 下载并启动Phantom / Selenium
  • 将预配置的Webdriver.IO实例注入到测试上下文中
  • 包括request npm库(用于REST)您选择的断言库(Chai / Jasmine-expect)
  • 使用纤维进行同步测试(没有回调地狱/承诺混淆)
  • 与SauceLabs / BrowserStacks等一起使用
  • 支持外部测试,具有连续运行标记为@focus的场景的观察模式
  • 支持开箱即用的CI,并在Circle / Codeship / Travis上进行了测试(使用无头Chrome / Firefox)

它还不会为您制作咖啡。


0

在验收测试方面,我经常使用Capybara来进行Rails的测试。但是我对于NodeJS中列出的替代方案感到不满意。你需要一个流行的Web自动化工具,结合针对特定功能场景的断言能力。

当你想到Node中的Web自动化时,Phantom和Casper已经过时了。那么现在有什么新兴的工具呢?Puppeteer。几年前,Puppeteer还处于beta阶段,关于它的文章和SO帖子很少。但现在,Puppeteer正在成为Node中Web自动化的领导者。然而,你不能在Puppeteer中断言,这是你从测试框架中所期望的。

但这并不妨碍我们将测试工具集成到Puppeteer Web自动化中。我发现了一些使用jest作为测试工具的解决方案。

const puppeteer = require('puppeteer');
describe('Open Website', () => {
  var browser, page;
  var url = 'https://website.io'
  beforeEach (async () => {
    browser = await puppeteer.launch({ headless: false });
    page = await browser.newPage();
  })

afterEach (() => {
    browser.close()
  })

test('Title == Website Tools', async () => {
    await page.goto(url);
    const title = await page.title();
    expect(title).toBe("Website Tools");
  });

-1

不,我在谈论一个通用的Web接受测试框架。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接