Прогон smoke тестов на разных окружениях

Всем привет. Есть некий набор smoke тестов, и есть 2 или более окружений на которых необходимо прогонять данные тесты. Проблема в том, что на одном окружении нужно прогонять все тесты из данного набора smoke тестов, а на другом только часть, остальные игнорировать. Как бы такое реализовать. Может быть у кого то был опыт? Заранее благодарен за ответы

TestNG suites.

Сделайте 2 разных конфига testng и запускайте необходимый конфиг на соотвествующем окружении.

1 лайк

НУ или если не TestNG, можно проставить мета теги и управлять тегами на уровне CI

1 лайк

А можно подробнее ? Если вас конечно не затруднит

Не знаю какой у вас подход, опишу на своём примере.
У JBehave и TestNg точно есть какие-то теги или группы по которым можно группировать кейсы.
Можно припустим сделать 2 параметризированые джобы в том же дженкинсе ну или даже одну продублировать или как будет угодно сердцу, может сделать целый пайплайн из джоб.
Но припустим у нас 2 отдельные джобы. Первая джоба будет выпонятся с первым набором конфигов ( StageEnvSmoke.properties) которая при выборе определенных пропертей будет сама подставлять нужную группу для запуска ( но если нет опыта легче самому группу выбирать). И точно такой же второй джоб только с другими проперти файлом и другими тегами. Ну или просто захардкодить что первая джоба отвечает только за stageEnv проперти и Smoke группу, а вторая за другую пропертю и другую группу…

Итого : 2 джобы
у каждой джобы есть дропдаун для выбора проперти файла ( проперти нашего енва)
и поле где прописаны какие группы будут запускаться ( припустим в 1 джобе stageSmoke в другой группе testSmoke)

Как это все реализовать? Это в документацию по дженкинсу

1 лайк

если я не ошибаюсь, это должно помочь: TestNG

1 лайк

А що використовується для білда проекта Maven, Gradle?
Використовуємо Maven і робимо наступне:

  • є набір профілів, які відповідають за конфігурацію, приклад Chrome, IE, Firefox;
  • є декілька планів і вони налаштовані так, що кожен трігерить свій профіль, приклад
mvn clean test -P chrome,smoke
  • в pom.xml файлі є кусок кода що відповідає за ігнор тої чи іншої групи привязаної до ім"я браузера
        <profile>
            <id>chrome</id>
            <properties>
                <browser>chrome</browser>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>${surefire.plugin.version}</version>
                        <configuration>
                            <excludedGroups>${excludeGroups},${browser}.specific,${browser}.bug</excludedGroups>
                            <systemPropertyVariables>
                                <browser>${browser}</browser>
                            </systemPropertyVariables>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
  • і в тестах на рівні класу є анотація Test з набором груп що не підтримуються
@Test(groups = {SAFARI_SPECIFIC, IE_SPECIFIC})
public class SomeTestClass extends TestBase {

    // Test body
}
  • код дефолтових груп виглядає приблизно так (там є частини які вичитуються з
public class BrowserGroup {
    public static final String CHROME_SPECIFIC = "chrome.specific";
    public static final String FIREFOX_SPECIFIC = "firefox.specific";
    public static final String SAFARI_SPECIFIC = "safari.specific";
    public static final String IE_SPECIFIC = "ie.specific";
}

В вашому випадку це можна використати для менеджмента тестів, тобто мати групи і навішувати на відповідні тести чи ігнорити їх для певного профілю.
Єдине що, коли тестів багато і потрібно робити глобальний рефакторинг - a bit pain)

1 лайк

Всем спасибо за ответы.
А не было ни у кого опыта работы с библиотекой owner? http://owner.aeonbits.org хотелось бы послушать мнение, заранее благодарен за ответы

Отличная библиотека - рекомендую

Спасибо за ответ, у вас был опыт подключения данной библиотеки к Selenium, Selenide?

Не использую Selenide, но ее легко подключить практически в любой проект.

К сожалению, как раз Selenide не так просто скрестить с Owner. Были обсуждения в slack, и вроде бы даже есть pull от пользователя. Но пока ничего не слышно, из коробки там не все так просто. Не было опыта к примеру owner с rest assured, в данный момент для меня актуально.

Может в кто в курсе в Junit5 есть альтернатива конфигам?
чтобы в гредле прописывать тасками путь в файлам с параметрами перед запуском?

UPD нагуглил вооркераунд, но вопрос открытый

task generateSources(type: Copy) {
    from 'src/replaceme/java'
    into "$buildDir/generated-src"
    filter(ReplaceTokens, tokens: [
        'xxx': 'aaa', 
        'yyy': 'bbb'
    ])
}