(или, говоря более технически, новый способ написания сквозных тестов)

Производство высококачественного программного обеспечения — это только одна из задач, которую мы делаем здесь, в Neosavvy, но обеспечение того, чтобы оно ОСТАЛОСЬ высоким качеством, — это еще одна обязанность, которую мы принимаем во внимание, когда беремся за новый проект.

Есть несколько отличных способов следить за вашей производственной и промежуточной программной средой. В наши дни, кажется, идут решения на основе Selenium, но по своей сути Selenium — это решение Java, и 99% клиентского программного обеспечения написано на Javascript. Кажется, в наши дни существует множество вариантов: Capybara, Protractor, CasperJS и этот список можно продолжить.

В последнее время мы проявляли большой интерес к команде Nightwatch, которая во многом похожа на некоторые другие библиотеки тем, что предоставляет базовые хуки Selenium для запроса DOM с помощью селекторов XPath или CSS. Основное отличие, которое я вижу до сих пор, заключается в том, что с ним немного проще работать, чем с предыдущими хуками Selenium, которые я использовал, поскольку он не выглядит основанным на промисах. Разработчик также может выставить объекты страницы в стиле Мартина Фаулера около 2013 года.

Я хочу помочь своим коллегам начать работу над Nightwatch, поэтому я собрал несколько видеороликов, чтобы показать, как его установить, некоторые двоичные файлы, которые мне пришлось загрузить, чтобы запустить Selenium, а затем базовую конфигурацию. Наконец, быстрый запуск простого теста.

Установить nightwatch очень просто.

npm install [-g] nightwatch

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

java -jar path/to/selenium-standalone-3.4.0.jar

Если вам нужны бинарники, я нашел их здесь: http://www.seleniumhq.org/download/

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

{
	"src_folders": ["tests"],
	"output_folder": "reports",
	"custom_commands_path": "",
	"custom_assertions_path": "",
	"page_objects_path": "./page_objects",
	"globals_path": "",
	"selenium": {
		"start_process": false,
		"cli_args": {
			"webdriver.chrome.driver": "./bin/chromedriver"
		}
	},

	"test_settings": {
		"default": {
			"launch_url": "http://google.com",
			"selenium_port": 4444,
			"selenium_host": "localhost",
			"silent": true,
			"screenshots": {
				"enabled": false,
				"path": ""
			},
			"desiredCapabilities": {
				"browserName": "chrome",
				"javascriptEnabled": true,
				"acceptSslCerts": true,
				"chromeOptions": {
					"args": ["start-fullscreen"]
				}
			}
		}
	}
}

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

module.exports = {
    'Demo test Google' : function (browser) {
       browser
           .url('http://www.google.com')
           .waitForElementVisible('body', 1000)
           .setValue('input[type=text]', 'nightwatch')
           .waitForElementVisible('button[name=btnG]', 1000)
           .click('button[name=btnG]')
           .pause(2000)
           .assert.containsText('#main', 'Night Watch')
           .end();
    }
};

Идите, защитите свое приложение от нежелательных ошибок и случайных простоев. Я поработаю над некоторыми более сложными темами «Ночного дозора», чтобы поделиться с вами тем, что я могу выяснить, мой выдающийся читатель.