Allure + Gradle + Selenide

Собственно решил, в образовательных целях собрать вот такой вот велосипед. Который бы преследовал следующие цели:

  1. Удобство поставки и запуска тестов (тесты могут быть запущены даже если на клиентской машине не стоит Gradle)

  2. Высокая скорость написания тестов (лаконичность Selenide)

  3. Счастье для менеджера (это же конечно Allure отчеты)
    Примеров более чем достаточно - гугление привело к следующему build.gradle

    apply plugin: ‘java’
    apply plugin: ‘application’
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7

    version = ‘1.0-SNAPSHOT’
    defaultTasks ‘clean’, ‘test’

    repositories {
    mavenCentral()
    }

    configurations {
    agent
    }

    dependencies {
    testCompile group: ‘org.testng’, name: ‘testng’, version: ‘6.8.8’
    testCompile ‘junit:junit:4.11’
    testCompile ‘com.codeborne:selenide:2.8.1’
    testCompile ‘com.opera:operadriver:1.5’
    testCompile group: ‘com.github.detro.ghostdriver’, name: ‘phantomjsdriver’, version: ‘1.1.0’, transitive: false
    agent “org.aspectj:aspectjweaver:${aspectjVersion}”
    testCompile “ru.yandex.qatools.allure:allure-testng-adaptor:${allureVersion}”
    }

    configurations {
    agent
    }

    test.doFirst {
    jvmArgs “-javaagent:${configurations.agent.singleFile}”
    }

    task wrapper(type: Wrapper) {
    gradleVersion = ‘2.1’
    }

    task uitest(type: Test) {
    systemProperties[‘browser’] = ‘firefox’
    }

    task ie(type: Test) {
    systemProperties[‘browser’] = ‘ie’
    systemProperties[‘timeout’] = ‘12000’
    }

    task htmlunit(type: Test) {
    systemProperties[‘browser’] = ‘htmlunit’
    }

    task chrome(type: Test) {
    systemProperties[‘browser’] = ‘chrome’
    systemProperties[‘webdriver.chrome.driver’] = ‘/usr/bin/chromedriver’
    }

    task phantomjs(type: Test) {
    systemProperties[‘browser’] = ‘phantomjs’
    }

    tasks.withType(Test).all { testTask ->
    testTask.systemProperties[‘file.encoding’] = ‘UTF-8’
    testTask.testLogging.showStandardStreams = true
    testTask.outputs.upToDateWhen { false }
    }
    Конечно же это наглая комбинация кусков из туториалов по Gradle и примеров Selenide и Allure. И именно с Allure и связана первая проблема. При выполнении команды gradlew build появляется следующая ошибка error: package ru.yandex.qatools.allure does not exist import ru.yandex.qatools.allure.Allure;
    Смысл ее конечно ясен, а вот решение не очень. Правильно ли я понимаю, что Gradle должен сам забрать все что относится к Allure из maven central или ему необходимы какие то дополнительные действия.

@vania_pooh глянь плиз.

Selenide вроде подтянулся, а вот из Allure ничего не тянется. Файл allure.properties я создал. Строго говоря я все делал в соответствии с примером. Но меня смущает вот этот файлик
https://github.com/allure-examples/allure-gradle-testng-example/blob/master/settings.gradle
может чего то недописали.

Вот еще какой файлик есть: allure-gradle-testng-example/gradle.properties at master · allure-examples/allure-gradle-testng-example · GitHub Там версия Allure хранится. В нем определен параметр ${allureVersion}.

Я вот никогда не понимал, зачем выносить версии зависимостей в отдельный файл. Да пусть они все будут в build.gradle, он ведь для этого и существует! Зачем плодить сущности без необходимости?

Пропишите версии зависимостей прямо в build.gradle, и проблема решится.

Все правильно. Я создал такой файл. С тем содержанием которое указано в примере на github. Но дело в том, что создать этот файл мне пришлось раньше - там содержатся настройки прокси -сервера. Попробую сделать как посоветовал Андрей. О результатах сообщу.

Мне не нравится Gradle, поэтому я его особо не использую и не сильно в нем разбираюсь. Мы сами активно пользуемся Maven, но постарались добавить примеров под разные утилиты сборки. Если можно добавить версии зависимостей прямо в сам build.gradle - присылайте pull-request в указанный выше репозиторий.

Ну как успехи? Проект запустился?

@alshipovalov @vania_pooh @sidelnikovmike
Привет!
Я сделал проект на гитхабе для демонстрации связки Selenide+Allure:

1 лайк

Сегодня запущу - проверю.

У меня работает, только нужно в README написать отдельно mvn site. Иначе у меня один тест упал и site он после этого не сделал.

1 лайк

Ну я сразу выполнял команды по отдельности. У меня отработало. Только вот я не нашел как сконфигурировать браузер, окружение…в pom. В Gradle это легче решалось. По крайней мере на примерах Андрея.

Так и задумано, чтобы Internet bank test каждый раз падал?) А в общем - да, все работает. Спасибо за пример.

@vania_pooh подправил readme, спасибо.
@Denis_Gayevskiy Да, это неизбежно, поскольку тестируется живой интернет-банк (хоть и демо-версия), в котором иногда меняются данные. Да это и хорошо, поскольку позволяет увидеть отчёты во всей красе - и с зелёными, и с красными тестами.