Как выполнить тестовые случаи с огурцом параллельно, используя Grid?
Проведя достаточное количество исследований о том, как параллельно запускать тестовые примеры Cucumber, я нашел следующую очень полезную статью по этому вопросу:
https://www.opencredo.com/2013/07/02/running-cucumber-jvm-tests-in-parallel/
Эта статья содержит довольно хорошую информацию, которая поможет вам начать работу с многопоточной средой, включая некоторый код, который вы можете загрузить с Github.
https://github.com/tristanmccarthy/Cucumber-JVM-Parallel
Если я правильно понимаю статью, драйвер должен быть настраиваемым для работы с Grid, что позволяет запускать несколько тестовых случаев на нескольких устройствах. После некоторого тестирования кода с использованием chromedriver он работает, как описано в статье. Однако после настройки для работы с Grid тестовые случаи больше не выполняются параллельно. Вместо этого они выполняются последовательно.
В настоящее время у меня Grid настроен на 1 концентратор и 2 узла. Каждый узел может иметь максимум 2 сеанса в любой момент времени.
Примечание: без Cucumber я могу успешно развернуть несколько тестовых случаев на нескольких устройствах, поэтому я не думаю, что проблема связана с моей настройкой сетки.
Вот пример кода, связанного с веб-драйвером:
static {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setJavascriptEnabled(true);
capabilities.setBrowserName("chrome");
capabilities.setPlatform(Platform.ANY);
try {
REAL_DRIVER = new RemoteWebDriver(new URL("http://xxx.xxx.xxx.xxx:4444/wd/hub"), capabilities);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
REAL_DRIVER.manage().timeouts().pageLoadTimeout(3000, TimeUnit.SECONDS);
REAL_DRIVER.manage().window().maximize();
Runtime.getRuntime().addShutdownHook(CLOSE_THREAD);
}
public SharedDriver() {
super(REAL_DRIVER);
}
@Override
public void close() {
if (Thread.currentThread() != CLOSE_THREAD) {
throw new UnsupportedOperationException(
"You shouldn't close this WebDriver. It's shared and will close when the JVM exits.");
}
super.close();
}
Я подозреваю, что если вы используете более одного типа браузера, вы сможете запускать тестовые случаи на нескольких устройствах (1 браузер на устройство), но в моем случае я использую драйвер Chrome. Кто-нибудь знает, что может помешать распределению тестовых случаев между несколькими устройствами, или лучше понимает, как Grid работает с огурцом? Пожалуйста, поделитесь любыми статьями или информацией, связанной с этой проблемой.