Перейти к содержимому

Фотография

Дублирование тестов в Allure-репорте

selenium allure maven jenkins selenide cucumber

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 26

#1 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 21 августа 2018 - 09:31

Всем примет, столкнулся с такой проблемой которую никак не могу решить гугленьем. При прогоне тестов через дженкинс (в данном случае на удаленной машине), allure вместо 10 пройденных кейсов показывает 21 кейс. При этом при локальном запуске кейсов как и должно быть- 10. На скриншоте видно что я имею в виду 

http://prntscr.com/kl4zhg

 

Отображается Product defects (только он должен быть) и Test defects (его быть не должно в отчёте)

 

Как это побороть?

 

мой ПУМник

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>bbb</groupId>
    <artifactId>aaaa</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <aspectj.version>1.8.10</aspectj.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.14.0</version>
        </dependency>

        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>4.12.3</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-testng</artifactId>
            <version>2.7.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-cucumber-jvm</artifactId>
            <version>2.0-BETA6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/ru.yandex.qatools.allure/allure-testng-adaptor -->
        <dependency>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-testng-adaptor</artifactId>
            <version>1.5.4</version>
        </dependency>

        <!--allure-maven-plugin -->
        <dependency>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-cucumber-jvm-adaptor</artifactId>
            <version>1.6.4</version>
        </dependency>

        <dependency>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-maven-plugin</artifactId>
            <version>2.6</version>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>compile</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-java -->
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-testng -->
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>4.12.3</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.25</version>
        </dependency>


    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <compilerArgs>
                        <arg>-XDignore.symbol.file=true</arg>
                    </compilerArgs>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <!--<suiteXmlFiles>src/test/resources/runners/TestRunner.xml</suiteXmlFiles>-->
                    <!--<suiteXmlFiles>src/test/java/cucumber/base/runner.xml</suiteXmlFiles>-->
                    <argLine>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                        -Dcucumber.options="--plugin io.qameta.allure.cucumberjvm.AllureCucumberJvm"
                    </argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <excludeDefaults>true</excludeDefaults>
        <plugins>
            <plugin>
                <groupId>ru.yandex.qatools.allure</groupId>
                <artifactId>allure-maven-plugin</artifactId>
                <version>2.6</version>
            </plugin>
        </plugins>
    </reporting>

</project>

Используется Selenium+selenide+cucumber+testng+jenkins+allure


  • 0

#2 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 21 августа 2018 - 13:02

Всем примет, столкнулся с такой проблемой которую никак не могу решить гугленьем. При прогоне тестов через дженкинс (в данном случае на удаленной машине), allure вместо 10 пройденных кейсов показывает 21 кейс. При этом при локальном запуске кейсов как и должно быть- 10. На скриншоте видно что я имею в виду 

http://prntscr.com/kl4zhg

 

Отображается Product defects (только он должен быть) и Test defects (его быть не должно в отчёте)

 

Как это побороть?

 

мой ПУМник

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>bbb</groupId>
    <artifactId>aaaa</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <aspectj.version>1.8.10</aspectj.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.14.0</version>
        </dependency>

        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>4.12.3</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-testng</artifactId>
            <version>2.7.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-cucumber-jvm</artifactId>
            <version>2.0-BETA6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/ru.yandex.qatools.allure/allure-testng-adaptor -->
        <dependency>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-testng-adaptor</artifactId>
            <version>1.5.4</version>
        </dependency>

        <!--allure-maven-plugin -->
        <dependency>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-cucumber-jvm-adaptor</artifactId>
            <version>1.6.4</version>
        </dependency>

        <dependency>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-maven-plugin</artifactId>
            <version>2.6</version>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>compile</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-java -->
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-testng -->
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>4.12.3</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.25</version>
        </dependency>


    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <compilerArgs>
                        <arg>-XDignore.symbol.file=true</arg>
                    </compilerArgs>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <!--<suiteXmlFiles>src/test/resources/runners/TestRunner.xml</suiteXmlFiles>-->
                    <!--<suiteXmlFiles>src/test/java/cucumber/base/runner.xml</suiteXmlFiles>-->
                    <argLine>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                        -Dcucumber.options="--plugin io.qameta.allure.cucumberjvm.AllureCucumberJvm"
                    </argLine>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <excludeDefaults>true</excludeDefaults>
        <plugins>
            <plugin>
                <groupId>ru.yandex.qatools.allure</groupId>
                <artifactId>allure-maven-plugin</artifactId>
                <version>2.6</version>
            </plugin>
        </plugins>
    </reporting>

</project>

Используется Selenium+selenide+cucumber+testng+jenkins+allure

Судя по всему, неверно ограничено количество тестов для выполнения. Не в курсе как это делается в предложенной связке, но проверить нужно:

 

1. точно ли локально не воспроизводится? Выполнить точно такую mvn команду как в jenkins

2. Проверить workspace jenkins, может там не делали clean и просто остался "лишний" тест, который в scm в действительности удалили

3. поискать каким образом в этой связке ограничивается количество тестов

4. Еще может быть причина в "неочищенной" папке Allure_results (куда строятся отчеты), там тоже по умолчанию может накапливаться статистика всех запусков, а не только последнего


  • 0

#3 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 22 августа 2018 - 06:43

1. Точно не воспроизводится, при локальном запуске отображает ровно 10 кейсов. При этом запускали на двух машинах, на windows и mac

2. Пробовал создавать новый проект и класть отчеты в другую папку, это не помогает

3. Запускаю тесты командой 

clean test -Dselenide.baseUrl=https://тутюрл/ -Dselenide.browser=chrome 

при этом runner.xml указывает на папку где находится Runner.java, в нём прописаны пути к .feature файлам, и соответственно запускает их. Если надо кинуть код ранера, то кину.

 

4. Нет, опять же потому что пробую новый проект создавать, сам код подтягивается с гита, и на нем нет папок с отчётами. 


  • 1

#4 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 22 августа 2018 - 07:06

1. Точно не воспроизводится, при локальном запуске отображает ровно 10 кейсов. При этом запускали на двух машинах, на windows и mac

2. Пробовал создавать новый проект и класть отчеты в другую папку, это не помогает

3. Запускаю тесты командой 

clean test -Dselenide.baseUrl=https://тутюрл/ -Dselenide.browser=chrome 

при этом runner.xml указывает на папку где находится Runner.java, в нём прописаны пути к .feature файлам, и соответственно запускает их. Если надо кинуть код ранера, то кину.

 

4. Нет, опять же потому что пробую новый проект создавать, сам код подтягивается с гита, и на нем нет папок с отчётами. 

Тогда кроме мистики ничем объяснить не могу :(.

Касаемо пункта 4). Не знаю точно как это сделано в вашей связке, но в наших проектах allure отчеты по умолчанию лежат в отдельной папке, не в гит и не в папке с кодом. Потому код сам по себе может тянуться откуда угодно, одно с другим не связано. Влияет только папка workspace


  • 0

#5 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 22 августа 2018 - 14:55

Разобрался. Проблема была в подключенной зависимости в пумнике, после удаления тесты перестали дублироваться. Три дня...три дня на это потратил...

<dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-testng</artifactId>
            <version>2.7.0</version>
            <scope>test</scope>
        </dependency>

  • 1

#6 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 23 августа 2018 - 06:26

 

Разобрался. Проблема была в подключенной зависимости в пумнике, после удаления тесты перестали дублироваться. Три дня...три дня на это потратил...

<dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-testng</artifactId>
            <version>2.7.0</version>
            <scope>test</scope>
        </dependency>

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


  • 0

#7 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 23 августа 2018 - 06:28

мне тоже непонятно :/ но факт в том что так работает правильно на дженкинсе


  • 0

#8 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 04 сентября 2018 - 09:29

Чтобы не создавать новую тему, подниму эту, тем более вопрос схожий.

 

 

Вот смотрите, у меня прогоняются тесты, некоторые из них падают (ну например по причине что не найден элемент), и эти упавшие тесты получают статус "сломалось (broken)" и окрашиваются в желтый цвет. Мне же нужно чтобы при упавших тестах они получали статус "не прошло (failed)" и окрашивались в красный. Как это можно настроить?

 

 

Скриншот что я имею в виду: https://prntscr.com/kqe680


  • 0

#9 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 04 сентября 2018 - 10:54

в желтый окрашиваются тесты в которых невозможно найти искомое

в красный те, которые не прошли assertion

 

т.е., например, тест у которого в проверке будет ворожение "переменная1=4", но при этом на странице данная переменная отсутствует, будет окрашен в жёлтый, так как асершон проверить нереально

с другой стороны, тест у которого в асершон написано "переменная1 существует", будет красным, так как это как раз то, что проверяет тест.


  • 0

#10 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 04 сентября 2018 - 10:56

А цель какая? 

Как я понимаю, сейчас у Вас зеленые (все ок), желтые (не известно ок или нет - не смогли пройти) и красные (не ок).

А с указанными изменениями - будут зеленые (ок) и каша из тех, что зафейлились и тех, что не смогли до конца дойти.

 

Если Вам нужно именно фейл при отсутствии элемента - можно сделать ассерт, что элемент присутствует.


  • 0

#11 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 04 сентября 2018 - 11:00

Да, я знаю. Есть ли способ все упавшие (даже не добравшиеся до асертов) окрашивать в красный?

 

Кстати почему при проверке всё равно тесты окрашиваются в желтый

 

Если проверять через селенид, то просто не находит элемент и падает

$("div.ocWidget__bar__round").should(visible);

Если проверять как обычно с помощью асертов

Assert.assertTrue($("div.ocWidget__bar__round").isDisplayed());

То падает с сообщением

 CucumberException: java.lang.AssertionError: expected [true] but found [false]

 

и тоже окрашивается в жёлтый


  • 0

#12 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 04 сентября 2018 - 11:03

А цель какая? 

Как я понимаю, сейчас у Вас зеленые (все ок), желтые (не известно ок или нет - не смогли пройти) и красные (не ок).

А с указанными изменениями - будут зеленые (ок) и каша из тех, что зафейлились и тех, что не смогли до конца дойти.

 

Если Вам нужно именно фейл при отсутствии элемента - можно сделать ассерт, что элемент присутствует.

 

Сейчас у меня сценарий выглядит так:

Сценарий: проверка доступности Omnichat
И в левом меню перейти на вкладку Помощь
И нажать на иконку omnichat
Тогда открыт виджет omnichat

Тест должен падать на моменте "И нажать на иконку omnichat", её нет и тест должен фейлиться. Можно перед этим пунктом добавить проверку 

Тогда на странице присутствует иконка omnichat

Но тогда тест тоже красится в желтый, не могу понять почему.


  • 0

#13 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 04 сентября 2018 - 11:13

сдаётся мне вы проверяtnt не присутствие элемента, а что-то другое, покажите код ассерта


  • 0

#14 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 04 сентября 2018 - 11:14

сдаётся мне вы проверяtnt не присутствие элемента, а что-то другое, покажите код ассерта

Assert.assertTrue($("div.ocWidget__bar__round").isDisplayed());


  • 0

#15 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 04 сентября 2018 - 11:21

ну вот и ответ, вы проверяете видимость элемента, а не наличие.


  • 0

#16 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 04 сентября 2018 - 11:24

А какая принципиальная разница? Я проверяю видимость, он не видим. Почему тест то в желтый окрашивается, а не в красный?


  • 0

#17 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 04 сентября 2018 - 11:37

потому что проверка isDisplayed проводит проверку СУЩЕСТВУЮЩЕГО в DOM объекта на отображение. Т.е. объект должен существовать иначе данная проверка выбрасывает исключение об отсутствии объекта, что логично.


  • 0

#18 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 04 сентября 2018 - 11:43

всё равно не понимаю. Мой ассерт выбрасывает false, но ожидает true.  А что там внутри проходит него, по сути как это может влиять на тест? Тут либо true, либо false же, другого не дано. 

 

вот выдержка из лога

Caused by: java.lang.AssertionError: expected [true] but found [false]

Тоесть проверка провалилась как задумывалось.

 

 

 

Напишите пожалуйста как будет правильно, я попробую, но мне кажется не в этом дело.


  • 0

#19 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 04 сентября 2018 - 11:50

нет, если вы умеете читать javadoc, то всё становится понятно

http://static.javado...rtTrue-boolean-

 

ассертТру, в случаее если ассерт не тру, выбрасывает исключение AssertionError которое обрабатывается кодом типа:

 

это упрощённый пример для наглядности

try:
     elementOnPage = 48
except AssertionError:
      return False
except Exception:
      return Exception

так вот, когда ассерт возвращает исключение не равное AssertionError, тест помечается как Сломанный, если ассерт возвращает исключение AssertionError то тест помечается как Проваленый, если ассерт не возвращает исключение то тест помечается как Пройденный.


  • 0

#20 Catchermax

Catchermax

    Новый участник

  • Members
  • Pip
  • 30 сообщений
  • ФИО:Максим

Отправлено 04 сентября 2018 - 11:59

Напишите пожалуйста как будет правильно, я попробую

  • 0



Темы с аналогичным тегами selenium, allure, maven, jenkins, selenide, cucumber

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных