Browserstack: возникла проблема при попытке выполнить параллельный тест с несколькими браузерами в браузерном стеке с использованием junit5

При попытке выполнить параллельный тест с несколькими браузерами в стеке браузеров с использованием junit5 я столкнулся с проблемой. Тесты запускаются, и оба браузера запускаются в стеке браузера. Однако время ожидания одного из браузеров истекает без выполнения тестов. Я прикрепил снимок экрана ниже.

Я пробовал с Junit 4, и он работал правильно. Есть небольшая разница в том, как параллельные тесты реализованы как в junit 5, так и в junit 4.

public class BrowserStackJUnitTest {
    public WebDriver driver;
    private Local l;
    private static JSONObject config;

    @BeforeEach
    public void setUp(TestInfo testInfo) throws Exception {
        if (System.getProperty("config") != null) {
            JSONParser parser = new JSONParser();
            config = (JSONObject) parser.parse(new FileReader("src/test/resources/conf/" + System.getProperty("config")));
        }
        JSONArray allEnvs = (JSONArray) config.get("environments");

        for (int i = 0; i < allEnvs.size(); i++) {
            System.out.println("Environments: " + allEnvs.get(i));

            Object envs = allEnvs.get(i);
            DesiredCapabilities capabilities = new DesiredCapabilities();

            Map<String, String> envCapabilities = (Map<String, String>) envs;
            Iterator it = envCapabilities.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry pair = (Map.Entry) it.next();
                capabilities.setCapability(pair.getKey().toString(), pair.getValue().toString());
            }

            Map<String, String> commonCapabilities = (Map<String, String>) config.get("capabilities");
            it = commonCapabilities.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry pair = (Map.Entry) it.next();
                if (capabilities.getCapability(pair.getKey().toString()) == null) {
                    capabilities.setCapability(pair.getKey().toString(), pair.getValue().toString());
                }
            }

            capabilities.setCapability("name", commonCapabilities.get("name").concat("_").concat(testInfo.getDisplayName()));

            String username = System.getenv("BROWSERSTACK_USERNAME");
            if (username == null) {
                username = (String) config.get("user");
            }

            String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
            if (accessKey == null) {
                accessKey = (String) config.get("key");
            }

            if (capabilities.getCapability("browserstack.local") != null && capabilities.getCapability("browserstack.local") == "true") {
                l = new Local();
                Map<String, String> options = new HashMap<String, String>();
                options.put("key", accessKey);
                l.start(options);
            }

            driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + config.get("server") + "/wd/hub"), capabilities);

        }
    }

    @AfterEach
    public void tearDown() throws Exception {
        if (driver != null) driver.quit();
        if (l != null) l.stop();
    }

}

paralle.conf.json

{
  "server": "hub-cloud.browserstack.com",
  "user": "<user>",
  "key": "<key>",
  "capabilities": {
    "build": "MultiBrowserTest",
    "name": "ParallelExecute",
    "browserstack.debug": true
  },
  "environments": [
    {
      "browser": "chrome",
      "os": "Windows",
      "os_version": "10"
    },
    {
      "browser": "Firefox",
      "os": "Windows",
      "os_version": "10"
    }
  ]
}

Образец теста

@Test
    public void sampleTest1() throws InterruptedException {
        driver.get("https://www.google.com/");
        driver.findElement(By.name("q")).sendKeys("Hello World");
        Thread.sleep(3000);
        driver.findElement(By.name("btnK")).click();
    }

Запускается как maven

mvn clean test -P parallel

В pom.xml

<properties>
 <configurationParameters>
  junit.jupiter.execution.parallel.enabled = true 
  junit.jupiter.execution.parallel.mode.default = concurrent
 </configurationParameters>

Произошла проблема

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


person Sree    schedule 01.11.2020    source источник


Ответы (1)


Это происходит, когда в течение 90 секунд от тестовых сценариев не поступают команды Selenium или Appium. Я думаю, это может вам помочь: https://www.browserstack.com/docs/automate/selenium/error-codes/browserstack-idle-timeout

person HN17    schedule 02.11.2020
comment
На самом деле, вопрос был о выполнении параллельного теста с несколькими браузерами (chrome + firefox + safari) при использовании junit 5. Я могу выполнять параллельные тесты с одним браузером (несколько экземпляров chrome), указав параметры конфигурации в pom, однако когда речь идет о параллельном использовании нескольких браузеров ( chrome + firefox + safari ), у меня это не сработало. Я также не видел решения для этого здесь - github.com/browserstack/junit-browserstack/tree/junit5 Если я укажу браузеры в массиве, как показано в parallel.conf.json, как я могу выполнять многобраузерные параллельные тесты? - person Sree; 04.11.2020