Ответ
Selenoid — это высокопроизводительная реализация Selenium Hub, которая запускает браузеры в изолированных Docker-контейнерах. Он используется для организации масштабируемого и стабильного Selenium Grid с упрощенной настройкой.
Для чего его используют QA-инженеры:
- Параллельный запуск тестов: Запуск множества тестовых сессий одновременно на разных браузерах и версиях, что значительно сокращает время прогона тестовой сборки.
- Изоляция тестов: Каждый тест выполняется в своем собственном контейнере, что исключает влияние одного теста на другой (чистые cookies, кэш, сессия).
- Простота поддержки браузеров: Не нужно вручную устанавливать и обновлять браузеры на нодах. Достаточно иметь Docker-образ нужной версии.
- Дополнительные возможности: Встроенная запись видео тестов, логирование, возможность подключения по VNC для отладки в реальном времени.
Базовая конфигурация для запуска теста (Java):
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.net.URL;
public class SelenoidTest {
public static void main(String[] args) throws Exception {
// Задаем capabilities для браузера в контейнере
DesiredCapabilities caps = new DesiredCapabilities();
caps.setBrowserName("chrome");
caps.setVersion("latest"); // Используем последнюю версию из образа
caps.setCapability("enableVNC", true); // Включаем VNC для просмотра сессии
caps.setCapability("enableVideo", true); // Включаем запись видео
// Указываем адрес Selenoid Hub
URL selenoidHubUrl = new URL("http://localhost:4444/wd/hub");
RemoteWebDriver driver = new RemoteWebDriver(selenoidHubUrl, caps);
try {
driver.get("https://example.com");
// ... действия теста ...
} finally {
driver.quit(); // После quit видео и логи сохраняются
}
}
}
Ключевые преимущества перед классическим Selenium Grid:
- Быстрый запуск: Контейнеры запускаются за секунды.
- Автоматическое управление ресурсами: Неиспользуемые контейнеры автоматически останавливаются.
- Простая конфигурация через
browsers.json: Файл, где описывается, какие образы браузеров доступны. - Интеграция с CI/CD: Легко встраивается в Jenkins, GitLab CI и другие системы.
Типичный стек для автотестов: Selenoid + Docker + Jenkins/GitLab CI + Allure для отчетов.