【发布时间】:2011-11-27 08:34:23
【问题描述】:
有谁知道Node.js有没有类似capybara的东西?
【问题讨论】:
-
投票结束作为工具记录
标签: node.js selenium automated-tests capybara
有谁知道Node.js有没有类似capybara的东西?
【问题讨论】:
标签: node.js selenium automated-tests capybara
Zombie怎么样?
僵尸.js
使用 Node.js 进行快速、无头的全栈测试
咬
如果你要编写一个速度极快的无头浏览器,你怎么能不把它叫做 Zombie Zombie。
Zombie.js 是一个轻量级框架,用于在模拟环境中测试客户端 JavaScript 代码。无需浏览器。
【讨论】:
我是一名由 Rails 转为节点的开发人员,我一直在寻找 JS 世界中获胜的 RSpec/Capybara 组合的类比。这是我找到的最喜欢的。
这里是more involved post,介绍如何设置此堆栈,包括连续测试运行。
测试愉快!
【讨论】:
Cucumber-JS 是最接近 Javascript 的: https://github.com/cucumber/cucumber-js
您可以使用该库来驱动 JS、headless 和 Selenium,但是它缺少每个不同“世界”之间的“capybara”共享 API。 http://skillsmatter.com/podcast/agile-testing/cucumber-js-cuke-up-your-javascript 有很好的演讲,https://github.com/jbpros/cukecipes 支持 github 代码
我希望当 phantomjs webdriver 有线协议完成时 (https://github.com/detro/ghostdriver) 并且如果 Soda/Selenium (https://github.com/LearnBoost/soda) 能够驱动它,那么无头测试将能够通过 Selenium 自动化,从而绕过需要水豚。
【讨论】:
见jelly.io:
Jellyfish 是一个 Node 项目,旨在让您轻松启动不同的 JavaScript 环境并运行您的代码。
【讨论】:
喂!
我创建了一个库来帮助使用 cucumber-js。它为您提供可调用的步骤和解析的参数。这适用于黄瓜,不能代替它。
快速功能:
https://github.com/hackhat/cucumberry
希望你觉得它有用(:
【讨论】:
我们在 JS 中创建了一个完整的验收测试解决方案
它使用 CucumberJS(即将推出 Mocha/Jasmine)来推动您的验收测试
- 下载并启动 Phantom / Selenium
- 将预配置的 Webdriver.IO 实例注入到测试上下文中
- 包括
requestnpm 库(用于 REST) 您选择的断言库(Chai / Jasmine-expect)- 使用纤程进行同步测试(无回调地狱/承诺混淆)
- 适用于 SauceLabs / BrowserStacks 等
- 支持外部测试,使用监视模式持续运行您使用
@focus标记的场景- 开箱即用支持 CI,并在 Circle/Codeship/Travis 上进行了测试(使用无头 Chrome/Firefox)
它还不能让你喝咖啡
【讨论】:
在验收测试方面,我大量使用 Capybara for Rails。我对这里列出的 NodeJS 替代方案不满意。您将需要一个流行的 Web 自动化实用程序,以及针对特定功能的场景进行断言的能力。
当您想到 Node、Phantom 和 Casper 中的 Web 自动化时,它已经死了。那么,目前正在崛起的是什么? 木偶师。几年前我开始使用 Puppeteer,当时它还处于测试阶段,关于它的文章和 SO 帖子很少。但现在 Puppeteer 正在成为 Node.js 中 Web 自动化的领导者。但是,您不能在 Puppeteer 中断言您对测试框架的期望。
但这并不能阻止我们将测试工具集成到 Puppeteer 网络自动化中。我找到了一些使用 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");
});
【讨论】:
【讨论】: