Подтвердить что ты не робот

Есть ли capybara для Node.js?

Кто-нибудь знает, есть ли что-то похожее на capybara для Node.js?

4b9b3361

Ответ 1

Как насчет Zombie?

Zombie.js

Безумно быстрое, безголовое тестирование с полным стеком с помощью Node.js

Укус

Если вы собираетесь писать безумно быстрый, безголовый браузер, как вы не можете назвать его зомби-зомби?

Zombie.js - облегченная структура для тестирования кода JavaScript на стороне клиента в моделируемой среде. Не требуется браузер.

Ответ 2

Cucumber-JS является самым близким, вы попадете в Javascript: https://github.com/cucumber/cucumber-js

Вы можете использовать библиотеку для управления JS, безголовыми и Selenium, однако в нем отсутствует общий API "capybara" между каждым из разных "миров". Хороший разговор в http://skillsmatter.com/podcast/agile-testing/cucumber-js-cuke-up-your-javascript и поддержка кода github https://github.com/jbpros/cukecipes

Я надеюсь, что когда завершен протокол проводки webdriver phantomjs (https://github.com/detro/ghostdriver), и если Soda/Selenium (https://github.com/LearnBoost/soda) способен управлять им, тогда безглазые тесты будут автоматизированы через Selenium, минуя необходимость Capybara.

Ответ 3

Я разработчик rails-turn- node, и я всегда искал аналогию в мире JS для выигрышной комбинации RSpec/Capybara. Вот что я нашел, что мне больше всего нравится.

  • Mocha - для запуска асинхронных тестов
  • Chai - для утверждений
  • Request - для обработки HTTP-запроса/ответа
  • Cheerio - для выбора элементов HTML из ответов

Вот более активное сообщение о том, как настроить этот стек, включая непрерывный запуск теста.

Счастливое тестирование!

Ответ 4

См. jelly.io:

Jellyfish - это проект Node, который позволяет легко запускать различные среды JavaScript и запускать ваш код.

Ответ 5

Hy!

Я создал библиотеку, чтобы помочь с cucumber-js. Он дает вам вызываемые шаги и анализируемые аргументы. Это работает с огурцом и не заменяет его.

Быстрые функции:

  • Определения шагов синхронизации, не более обратных вызовов;
  • Вызов другого шага из определений шагов;
  • Разбирать значения, такие как массивы, объекты и десятичные знаки;

https://github.com/hackhat/cucumberry

Надеюсь, вы сочтете это полезным (:

Ответ 6

Мы создали полное решение для приемочного тестирования в 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)

Это не делает вас кофе, но

Ответ 7

Что касается приемочных испытаний, я интенсивно использовал Capybara для Rails. И я недоволен альтернативами, перечисленными здесь для NodeJS. Вам понадобится популярная утилита веб-автоматизации в сочетании с возможностью делать утверждения относительно сценариев конкретной функции.

Когда вы думаете о веб-автоматизации в Node, Phantom и, таким образом, Каспер мертв. Так что же происходит сейчас? Кукловод. Я начал использовать Puppeteer несколько лет назад, когда он был в бета-версии и несколько статей и SO сообщений об этом. Но теперь Puppeteer становится лидером веб-автоматизации в Node. Тем не менее, вы не можете утверждать вещи в 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");
  });