Nightwatch — инструмент для автоматизированного тестирования приложений на платформе Node.js, разработанный для выполнения сквозного (end-to-end), компонентного, API и визуального тестирования. Он реализует взаимодействие с браузерами через протокол W3C WebDriver и предоставляет набор средств для написания, выполнения и организации тестов с использованием JavaScript. Nightwatch ориентирован на интеграцию с экосистемой Node.js и включает возможности запуска тестов локально и в распределённых средах.
Проект возник как решение для упрощения автоматизации браузерного тестирования, сочетая декларативную конфигурацию, встроенные команды и поддержку асинхронного выполнения. В его развитии участвовали сообщество разработчиков и организации, заинтересованные в стандартизации подходов к написанию автотестов для веб-интерфейсов. В дополнение к свободно распространяемому инструменту, под брендом Nightwatch предлагается коммерческая платформа для мониторинга и управления тестированием, включающая функции мониторинга SEO и облачного запуска тестов.
- Протокол: взаимодействие с браузерами реализовано через W3C WebDriver, что обеспечивает совместимость с основными браузерами и драйверами.
 - Среда выполнения: построен на Node.js, поддерживает современные механизмы асинхронного кода JavaScript и интеграцию с пакетным менеджером npm.
 - Типы тестирования: поддержка сквозных (E2E), компонентных, API и визуальных тестов.
 - Язык тестов: тесты пишутся на JavaScript, с возможностью использования синтаксиса промисов и async/await.
 - Структура и организация: предоставляет структуру каталогов и конфигураций для группировки тестов, управления окружениями и параметрами запуска.
 - Встроенные команды и assertions: набор команд для взаимодействия с элементами страницы и проверки состояний, а также механизмы для расширения пользовательскими командами и ассертами.
 - Параллельный запуск: поддержка параллельного выполнения тестов для ускорения прогонов на локальных и удалённых серверах.
 - Интеграция с CI/CD: совместимость с распространёнными системами непрерывной интеграции и возможностью автоматического запуска тестов в пайплайнах.
 - Отчётность: формирование результатов тестов в различных форматах и возможности для подключения сторонних репортеров.
 - Расширяемость: плагины и возможность написания собственных утилит для адаптации под специфические требования проекта.