Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Allure + Gradle + Selenide

selenide
Теги: #<Tag:0x00007f7b6d57c200>

(Александр Шиповалов) #1

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

  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 или ему необходимы какие то дополнительные действия.


(sidelnikovmike) #2

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


(Александр Шиповалов) #3

Selenide вроде подтянулся, а вот из Allure ничего не тянется. Файл allure.properties я создал. Строго говоря я все делал в соответствии с примером. Но меня смущает вот этот файлик


может чего то недописали.


(vania-pooh) #4

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


(asolntsev) #5

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

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


(Александр Шиповалов) #6

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


(vania-pooh) #7

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


(asolntsev) #8

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


(asolntsev) #9

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


(Александр Шиповалов) #10

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


(vania-pooh) #11

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


(Александр Шиповалов) #12

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


(Denis Gayevskiy) #13

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


(asolntsev) #14

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