В чем разница между ночным дозором?js и webdriver.io?



Как гласит заголовок, в чем разница между Nightwatch.js и Webdriver.io?



Похоже, что у них один и тот же синтаксис и они делают почти одно и то же?



Мне нужно выбрать между ними.

314   1  

1 ответ:

Я написал набор тестов, используя каждый из этих инструментов несколько раз.

Webdriver.io позволяет писать тестовые случаи "с нуля" и иметь большой контроль над отчетностью, скажем, интегрируя с slack с помощью slack npm и других пакетов. Вам нужно будет знать или быстро узнать узел.JS. В дополнение к очень хорошей работе с настольными браузерами, он хорошо интегрируется с Appium, Android Studio и Xcode, так что вы можете запускать свои автоматические тесты на Android-эмуляторах и iOS-симуляторах в местном масштабе. Вам нужно будет установить эти вещи и написать некоторый код, чтобы сообщить Appium, какие драйверы использовать, и выбрать возможности и т. д.

Nightwatch-это довольно обширное решение, которое использует итератор для автоматической повторной попытки тестов до трех раз, когда они терпят неудачу. Nightwatch имеет неплохую поддержку интеграции с инструментами виртуальной машины, такими как SauceLabs, так что вы можете теоретически запускать свои тестовые случаи против 700 + различных комбинаций платформ / браузеров / версий без написания кода для управления каждый водитель . Ночной дозор управляет запуском и выключением селена для вас. Хотя это последнее звучит очень впечатляюще, на самом деле это довольно много работы, чтобы достичь и поддерживать этот уровень покрытия тестов. Nightwatch также имеет довольно встроенное разделение проблем, позволяя вам определять пользовательские команды и требовать их в вашем базовом тестовом случае или отдельных тестах. Вы можете модулировать некоторые части тестов и импортировать их, чтобы вам не приходилось постоянно переписывать, скажем, тест входа в систему для используйте в нескольких случаях. Кроме того, можно использовать пользовательские команды для импорта селекторов в качестве пар значений ключей.

Использовав каждый из них, я суммировал бы его следующим образом:

Webdriver.io: Если вы ищете больше контроля, очень индивидуальное решение, и вам не нужен итератор, и вы уверены, что знаете достаточно, чтобы написать код для выбора драйвера браузера, настройки возможностей и вы хотите пользовательский контроль вашего браузера. учет.

Nightwatch: Если вы хотите просто начать быстро писать тесты, знайте, что их будет относительно легко запускать на определенных платформах/браузерах/версиях и все равно позволит вам значительно расширить свои тесты, написав пользовательские команды.

Еще один вариант сейчас-это далек.js, который имеет простое создание сценария Ночного дозора, но без всех наворотов.

Перед запуском nightwatch вы можете настроить браузеры в Магеллане.JSON-файл, а затем при запуске теста вы вызываете браузеры или набор браузеров ("профиль") в качестве аргументов командной строки, таким образом:

Для локальных браузеров:

./node_modules/.bin/magellan --serial --browsers=chrome,firefox

Предполагая, что вы настроили учетную запись saucelabs и добавили имя пользователя и ключ доступа, вы можете вызвать профиль браузеров следующим образом:

./node_modules/.bin/magellan --serial --profile=myBrowsers

Это предполагает, что вы настроили профиль под названием myBrowsers в Magellan.файл json выглядит следующим образом:

{
    "profiles": {
        "myBrowsers": [
          { "browser": "chrome_46_OS_X_10_10_Desktop" },
          { "browser": "firefox_42_Windows_2012_R2_Desktop" },
          { "browser": "safari_8_OS_X_10_10_Desktop" },
          { "browser": "safari_7_OS_X_10_9_Desktop" }, 
          { "browser": "safari_9_OS_X_10_11_Desktop" }, 
          { "browser": "IE_10_Windows_2012_Desktop" }, 
          { "browser": "IE_11_Windows_2012_R2_Desktop" },
          { "browser": "chrome_45_OS_X_10_8_Desktop" },
          { "browser": "chrome_45_OS_X_10_9_Desktop" },
          { "browser": "chrome_45_OS_X_10_10_Desktop" },
          { "browser": "chrome_45_OS_X_10_11_Desktop" },
          { "browser": "chrome_46_OS_X_10_10_Desktop" }, 
          { "browser": "chrome_45_Windows_10_Desktop" },
          { "browser": "chrome_45_Windows_2003_Desktop" },
          { "browser": "chrome_45_Windows_2008_Desktop" },
          { "browser": "chrome_45_Windows_2012_Desktop" },
          { "browser": "chrome_45_Windows_2012_R2_Desktop" },
          { "browser": "chrome_46_Windows_10_Desktop" },
          { "browser": "chrome_46_Windows_2003_Desktop" },
          { "browser": "chrome_46_Windows_2008_Desktop" },
          { "browser": "chrome_46_Windows_2012_Desktop" },
          { "browser": "chrome_46_Windows_2012_R2_Desktop" }, 
          { "browser": "firefox_42_OS_X_10_9_Desktop" }, 
          { "browser": "firefox_42_Windows_2012_R2_Desktop" },
          { "browser": "android_4_4_Linux_Samsung_Galaxy_S4_Emulator", "orientation": "portrait" },
          { "browser": "ipad_8_4_iOS_iPad_Simulator", "orientation": "landscape"},
          { "browser": "ipad_8_4_iOS_iPad_Simulator", "orientation": "landscape"},
          { "browser": "ipad_9_0_iOS_iPad_Simulator", "orientation": "landscape"},
          { "browser": "ipad_9_0_iOS_iPad_Simulator", "orientation": "portrait"},
          { "browser": "ipad_9_1_iOS_iPad_Simulator", "orientation": "landscape"},
          { "browser": "ipad_9_1_iOS_iPad_Simulator", "orientation": "portrait"},
          { "browser": "iphone_9_1_iOS_iPhone_Simulator", "orientation": "portrait"},
          { "browser": "iphone_9_1_iOS_iPhone_Simulator", "orientation": "landscape"}

        ]
}

}

НЕКОТОРЫЕ ИЗ Более полезные (необязательные) ARGS командной строки:

Переключение аргумента --serial приводит к сериализации выполнения теста и более подробному тестированию, в котором можно просмотреть ошибки, возвращенные во время выполнения. Он также занимает гораздо больше времени для запуска, поскольку он ждет завершения тестов.

Добавление аргумента --sauce после того, как ваши тестовые случаи работают для браузеров, существующих на вашем локальном компьютере, вы можете подключиться к (в настоящее время) 760 браузерам, поддерживаемым Sauce Labs. Идти вперед вставьте это в терминал и нажмите return:

./node_modules/.bin/magellan --serial --list_browsers

Для каждого устройства/браузера, который вы хотите протестировать, вы просто добавляете список в Копировать-вставить столбец параметров командной строки в виде разделенных запятыми значений после --browser= при выполнении скрипта. Примечание: при работе без -- соуса вы можете просто использовать -- browser=chrome или --browser=chrome, firefox

BREAKING IT DOWN:

Использование nightwatch без -- sauce, но с -- serial-отличный способ начать работу. Работайте над своим сценарием, пока у вас есть проверено то, что вы хотите проверить, и когда вы уверены, что все тесты, которые должны пройти, делают, запустите его с помощью sauce labs и основных браузеров, которые вы хотите протестировать. Как только вы уверены, что основные браузеры охвачены, вы можете запустить его без --serial, чтобы сократить время выполнения (полезно на Sauce Labs, что будет стоить денег).

Но достаточно прозелитизма, вы можете узнать, что вам нужно о соусниках здесь: https://wiki.saucelabs.com/display/DOCS/The+соус+лаборатории+Поваренная книга+Дом

И шаблон, пример или сделать канонической всем привет: попробуйте этот boilerplater

Обновления: несколько моментов, которые люди поднимают и которые пришли мне в голову после публикации этого.

Webdriver.io: Поскольку итератора нет, то меньше возможностей для восстановления после сбоев во время выполнения теста, это означает, что сбои являются более определенными. Потому что это чисто асинхронно, у вас могут быть головные боли, отслеживающие точное происхождение сбоя. вы также можете в конечном итоге создать отдельные сценарии разборки для любых данных, которые вы создаете, чтобы избежать конфликтов данных во время выполнения.

Ночной дозор.JS: Поскольку итератор позволяет вам повторять попытки, вы часто сможете найти, где ваш сценарий терпит неудачу. Это может позволить вам быстрее найти дефект вместо того, чтобы сосредоточиться на том, почему ваш сценарий терпит неудачу. Кроме того, проще отключить свой индивидуальный файлы сценариев.

Обновление 2:

С Nightwatch более короткие тесты полезны / поощряются. Поскольку итератор считывает тестовые файлы в память каждую итерацию непосредственно перед выполнением, вы можете очень буквально редактировать тесты между выполнением итерации. Позвольте мне сказать это по-другому: Ваш номер Ночного Дозора:

test_1 starts
test_1 FAIL    // because you made a trivial error in your test case
test-2 starts  // while it is running, you make the change, save it
test-2 PASS
test_1 starts  // the iteration starts * with your change! *
test_1 PASS
============= Suite Complete =============

     Status: PASSED
    Runtime: 2m 48.3s
Total tests: 2
 Successful: 2 / 2
1 test(s) have retried: 1 time(s)

С другой стороны, настройка Slack webhooks с помощью node/webdriver.io проста. Это означает, что вы можете настроить свой узел / webdriver. io тесты, чтобы сообщить в Slack, когда они завершатся. Клиенты ценят это, потому что после завершения сборки они вскоре видят результаты автоматизации, такие как:

Автоматическое тестирование [клиент/название продукта здесь] Sprint ##.#.# передано по [URL сервера или IP-адрес] с OS X Firefox 59.0.2

Автоматическое тестирование [клиент/название продукта здесь] Sprint ##.#.# сбой на [URL или IP-адрес сервера] с OS X Firefox 59.0.2

Обновление 3 (Август 6, 2017)

Имея Потратив еще полтора года на ежедневную работу с обоими, я хочу добавить следующие моменты.

Существует аналогичное количество пакетов NPM, которые интегрируются с каждым из них, но вы заметите, что существует гораздо больше вопросов Stackoverflow о Nightwatch (4x). Я считаю, что это потому, что Webdriver.io это скорее ваш собственный подход к автоматизированному тестированию [это мое мнение, и я приветствую обратную связь/откат]. У тех, кто использует его, не будет вопросов о том, как его использовать, у них будут конкретные вопросы о техниках.

Nightwatch был бы лучшей точкой входа для кого-то с обширной Selenium IDE и солидным опытом javascript. Он имеет много полезных решений из коробки. Тот небольшой опыт, который у меня есть с далеком, говорит о том, что это также было бы хорошим вариантом.

Кто-то с большим количеством javascript и, возможно, некоторым опытом объектно-ориентированного программирования и unix, вероятно, найдет Webdriver.io чтобы быть лучше. Это просто отличный вариант, чтобы построить свой собственный пользовательский фреймворк, как я сейчас делаю. Если вы можете представить себе, как вы хотели бы, чтобы ваша инициализация, управление потоком и отчетность работали, и готовы вложить капитал в пот, это подходит.

Меня спросили ниже, что я предпочитаю, и я предпочитаю Webdriver.io для обширных испытаний e2e далеко. Хотя я часто использую персонализированное РЕПО Nightwatch для большинства клиентских работ, построенных на нашей платформе, это может измениться в ближайшем будущем, когда я создам свою собственную Webdriver.io решение.

Обновление 4 (Май 2, 2018)

Обновлено для ясности управления драйверами Selenium и браузеров, а также добавления некоторых деталей об использовании Appium и Xcode/Android Studio.

Comments

    Ничего не найдено.