Локальное тестирование Browsertack Serenity - Не удается получить согласованную конфигурацию, стек браузера постоянно работает на разных версиях Chrome и ОС - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть стека браузеров, работающего с фреймворком автоматизации, который я не настроил, в то время как мои локальные тесты (веб-сайт, который я тестирую, все еще находится в разработке и, следовательно, не на DNS), работают на стеках браузеров в среде / конфигурации, используемойстек браузеров постоянно меняется.

Он всегда запускает версию Chrome, иногда 72, иногда 49, 69 и т. д., то же самое с ОС, иногда Windows 10, 7, 8, xp, а иногда и случайная версияOSX тоже!

Я устал смотреть на страницу браузерного стека о спокойствии, используя и модифицируя примеры оттуда, а также примеры git hub в моем serenity.properties/BrowserStackSerenityTest.java и класс im, запускающий тест из, нобез удачиЯ несколько часов сейчас настраивал и изменял эти три файла, чтобы получить некоторое постоянство, и не знаю, что еще делать

Я все еще довольно неопытен в Java и автоматизации и хотел бы перейти к исправлениюи хороший стек тестов, прежде чем пытаться настроить запущенные тесты и параллель в браузере:

My serenity.properties

        webdriver.driver = provided 
        webdriver.provided.type = mydriver
        webdriver.provided.mydriver = com.browserstack.BrowserStackSerenityDriver
        serenity.driver.capabilities = mydriver

        browserstack.user=MyUserName
        browserstack.key=MyKey
        browserstack.server=hub-cloud.browserstack.com
        browserstack.local=true
        browserstack.build=serenity-browserstack
        browserstack.project=MyProjectname
        browserstack.debug=true

        environment.local.name=TestRunner
        environment.local.browser=chrome
        environment.local.browser_version=72
        environment.local.browserstack.local=true
        browserstack.os = Windows
        browserstack.os_version = 10


        serenity.issue.tracker.url =

        serenity.project.name = Common UI testing using Serenity and Cucumber

        serenity.restart.browser.for.each = never

        serenity.browser.maximized = true
        serenity.dry.run=false        
        serenity.test.root=net.thucydides.showcase.cucumber.junit
        serenity.outputDirectory = target/site/reports           
        webdriver.timeouts.implicitlywait = 1
        webdriver.wait.for.timeout = 0
        serenity.take.screenshots=BEFORE_AND_AFTER_EACH_STEP

Мой TestRunner.java, на котором я запускаю тесты из

        import com.browserstack.BrowserStackSerenityTest;
        import cucumber.api.CucumberOptions;
        import net.serenitybdd.cucumber.CucumberWithSerenity;
        import org.junit.runner.RunWith;


        @RunWith(CucumberWithSerenity.class)
        @CucumberOptions(features = "src/test/resources/features", tags = "@fixing")
        public class TestRunner extends BrowserStackSerenityTest {

        //    @Managed(driver = "Chrome", uniqueSession = true)
        //    WebDriver driver;

Мой BrowserStackSerenityTest.java

package com.browserstack;

import com.browserstack.local.*;
import net.thucydides.core.util.EnvironmentVariables;
import net.thucydides.core.util.SystemEnvironmentVariables;
import org.junit.AfterClass;
import org.junit.BeforeClass;

import java.util.HashMap;
import java.util.Map;


public class BrowserStackSerenityTest {
static Local bsLocal;

@BeforeClass
public static void setUp() throws Exception {
    EnvironmentVariables environmentVariables = SystemEnvironmentVariables.createEnvironmentVariables();

    String accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY");
    if(accessKey == null) {
        accessKey = (String) environmentVariables.getProperty("browserstack.key");
    }

    String environment = System.getProperty("environment");
    String key = "browserstack.local";
    boolean is_local = environmentVariables.getProperty(key) != null && environmentVariables.getProperty(key).equals("true");

    if(environment != null && !is_local){
        key = "environment."+environment+".browserstack.local";
        is_local = environmentVariables.getProperty(key) != null && environmentVariables.getProperty(key).equals("true");
    }

    if(is_local){
        bsLocal = new Local();
        Map<String, String> bsLocalArgs = new HashMap<String, String>();
        bsLocalArgs.put("key", accessKey);
        bsLocal.start(bsLocalArgs);
    }
}

@AfterClass
public static void tearDown() throws Exception {
    if(bsLocal != null) {
        bsLocal.stop();
    }
}

}

1 Ответ

0 голосов
/ 18 февраля 2019

Мне пришлось настроить файл serenity.properties методом проб и ошибок, потому что это не очевидно при чтении документации по Browserstack и потому что код Browserstack опирается на очень старую версию инфраструктуры Serenity:

environment.parallel_1.name = parallel_test
environment.parallel_1.browser = Chrome
environment.parallel_1.browser_version = 73.0 beta
environment.parallel_1.os = OS X
environment.parallel_1.os_version = Mojave
environment.parallel_1.resolution = 1280x1024
environment.parallel_1.browserstack.local = true

environment.parallel_2.name = parallel_test
environment.parallel_2.browser = IE
environment.parallel_2.browser_version = 11
environment.parallel_2.os = Windows
environment.parallel_2.os_version = 7
environment.parallel_2.resolution = 1280x1024
environment.parallel_2.browserstack.local = true

Вы можете увидеть код здесь: https://github.com/izaac/serenity-cucumber4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...