Запуск тестов в разных браузерах JUnit 5

Теги: #<Tag:0x00007f7384530be8> #<Tag:0x00007f7384530af8> #<Tag:0x00007f7384530a08> #<Tag:0x00007f7384530918>

Привет.Подскажите пожалуйста, а как запускать тесты в разных браузерах, если у вас JUnit 5?
В TestNg все просто, в suite указать параметр

<parameter name="browser" value="Chrome"></parameter>

и все готово, а толковой инфы по JUnit, не могу найти(

Раз используете Селенид - то используйте настройку browser
https://selenide.org/javadoc/current/com/codeborne/selenide/Configuration.html#browser

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

Использовать системную переменную, например -Dselenide.browser=chrome

я понимаю, ну я же не могу туда вбить 2 браузера? Тоесть, мне надо сначало запустить тесты в хроме, а потом изменить команду и запустить в фаерфоксе. А как сделать автоматически?После тестов в хроме, запускался фарерфокс?

А где и как вы запускаете тесты? В принципе да - прогоняются тесты с одной настройкой, потом с другой.

ну вот, а testng в suite можна задать

<parameter name="browser" value="Chrome"></parameter>

Ну например, если мне нужно запускать тесты в jenkins.Мне менять команду постоянно?

Если вы передаёте параметр в xml для тестов, то вы как-то эти параметры обрабатываете, замените то место на просмотр системного параметра (https://junit.org/junit5/docs/current/user-guide/#running-tests-config-params). В Дженкинсе если запускаете, там в задаче можно сделать выбор параметра из нескольких вариантов браузера.

Приветствую! Являюсь начинающим тестировщиком, пытался найти решение этого вопроса и получилось осуществить параллельный запуск тестов на разных браузерах. Опишу подробно)
Тесты выполняются в контейнере с помощью Selenoid.
Все тесты делаются параметризированными.
Пример теста:

@ParameterizedTest
@MethodSource("browserArguments")
public void isWomenCategorySubmenuDisplayedTest(String browser, String version) {
    setCapabilitiesByArguments(browser, version);
    assertTrue(topMenuBar.isWomenCategorySubmenuDisplayed());

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

static Stream<Arguments> browserArguments() {
    return Stream.of(
            arguments("chrome", "91.0"),
            arguments("firefox", "90.0")
    );
}

Как вы видите, в тесте вызывается метод setCapabilitiesByArguments(browser, version), в который передаются аргументы, вот тело этого метода:

public void setCapabilitiesByArguments(String browserName, String browserVersion) {
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("browserName", browserName);
    capabilities.setCapability("browserVersion", browserVersion);
    capabilities.setCapability("enableVNC", true);
    Configuration.browser = browserName;
    Configuration.browserCapabilities = capabilities;
    open(baseUrl);
    while(!title().equals("My Store")) {
        refresh();
    }
}

Его задача проста, перед каждым запуском браузера менять его конфигурацию.
Следовательно, сначала запустится тест на хроме, а затем произойдет запуск на фоксе и так для каждого теста).

Screenshot_7

Если нужно подгружать данные о браузерах из property файла, то метод browserArguments() будет выглядеть так:

static Stream<Arguments> browserArguments() throws IOException {
    Properties properties = new Properties();
    properties.load(new FileInputStream(propertyFileDirectory+"browsers.properties"));
    return properties.entrySet().stream().map((entry -> arguments(entry.getKey(), entry.getValue())));
}

Вариант, возможно, неаккуратный, но вполне рабочий.

Весь код у меня на гите: