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

Allure передача Environment в папку allure-result

environment
reporting
maven
allure
Теги: #<Tag:0x00007f7b65ede8c8> #<Tag:0x00007f7b65ede760> #<Tag:0x00007f7b65ede620> #<Tag:0x00007f7b65ede4e0>

(Funker) #1

Есть такая фича у Allure как [Environment, описание здесь] 1 также есть пример как она выглядит в отчете
Вопрос вот в чем эти 1 или 2 файла environment.xml и environment.properties у меня есть я их помещаю после всех тестов в папку target/allure-results и дальше генерю отчет.

Вопрос как кто помещает этот файл environment в папку результатов? Я пробовал через maven copy resusres но как-то у меня не получилось, может опубликует рабочий пример как в pom.xml это прописать.
Также есть другой вариант, захардкодить в с помощью Java но это сильно жестко будет.


(sidelnikovmike) #2

Я так понимаю, что вы их должны складывать самостоятельно. Это судя по описанию на гитхабе.
Может @vania_pooh подскажет чего?


(Funker) #3

Самому, руками, копировать в папку как-то не правильно будет.


(vania-pooh) #4

Если я правильно помню, действительно нужно складывать их руками. Как уж вы в итоге нагенерите файл - не принципиально. Можно хоть свой Maven плагин написать.


(Sergey Korol) #5

Сразу возникает вопрос… Как будет выглядеть environment.xml для случая с параллельным запуском на разных окружениях? Как allure будет мапить результаты с определенным окружением, если файл поставляется отдельно пост-фактум?


(Funker) #6

вот плагин который помог мне решить мою задачу, скопировать файл из одной парки в другую maven-antrun-plugin
пример кода:

<build>
    <plugins>
    <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.8</version>
        <executions>
            <execution>
                <phase>test</phase>
                <configuration>
                    <target>
                        <copy file="${project.basedir}/src/main/resources/environment.xml" overwrite="true" todir="${project.build.directory}/allure-results"/>
                    </target>
                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    </plugins>
  </build>

у меня вышло так, может кто знает более простой способ?


(Taras) #7

я в лисенере Test NG ето делаю, там есть такой листенер которий слушает когда все тести отранились, в нем и копируем


(Funker) #8

мне там не подходит, у меня мне есть 2 этапа

1) mvn clean test
2) mvn site

мне нужно только на 2 этапе туда класть файлы, еще, второй этап не всегда выполняется


(Funker) #9

Да и еще, listener этот он самописный? или штатный ели да то как он называется?


(Taras) #10

всмисле не подхоит ?)
у меня тоже те же 2 етапа)
просто когда первий отрабоает, или завалиться(все равно) в конце скопируеться файл в папку куда нужно и все, и листенер - самописний


(Pavel Volkov) #11

Можно в ITestListener переопределить метод onFinish:

@Override
public void onFinish(ITestContext context) {
    ApplicationManager app = (ApplicationManager) context.getAttribute("app");
    File source = null;
    File dest = null;
    String target = app.getTarget();
    if (target.equals("testEnv")) {
         source = new File("src/test/resources/testenv.properties");
         dest = new File("build/allure-results/environment.properties");
    }
    if (source == null){
        return;
    }

    try {
        FileUtils.copyFile(source, dest);
    } catch (IOException e) {
        e.printStackTrace();
    }


}[details=Summary]This text will be hidden[/details]

(Sergey Korol) #12

Гораздо проще gradle таском это сделать.

task copyConfig(type: Copy) {
    from 'src/test/resources/config'
    into 'build/allure-results'
}

Либо maven-resources плагином по аналогии.


(Eugene Moskalenko) #13

Ребят а получилось у кого-то добавить Environment для Allure2?


(Mr Ds Low) #14

https://docs.qameta.io/allure/latest/
Разве не работает?


(Eugene Moskalenko) #15

Я сделал себе так :slight_smile:

import org.apache.commons.io.IOUtils;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

import static java.lang.System.getProperty;
import static java.lang.System.getenv;
import static java.util.Optional.ofNullable;

public class AllureEnvironmentUtils {

    public static void create() {

        FileOutputStream fos = null;

        try {
            Properties props = new Properties();
            fos = new FileOutputStream("target/allure-results/environment.properties");

            ofNullable(getProperty("selenide.browser")).ifPresent(s -> props.setProperty("Browser", s));
            ofNullable(getProperty("selenide.baseUrl")).ifPresent(s -> props.setProperty("Base url", s));
            ofNullable(getenv("BUILD_URL")).ifPresent(s -> props.setProperty("Jenkins build URL", s));
            ofNullable(BaseTest.userAgent).ifPresent(s -> props.setProperty("UserAgent", s));

            props.store(fos, "See https://github.com/allure-framework/allure-app/wiki/Environment");

            fos.close();
        } catch (IOException e) {
            logger.error("IO problem when writing allure properties file", e);
        } finally {
            IOUtils.closeQuietly(fos);
        }
    }

}

(Sergey Korol) #16

Так а что именно не работает?
environment.properties в allure-results появляются?


(Eugene Moskalenko) #17

Уже все работкает :slight_smile: Когда написал то что выше скинул…


(Maria Bobrova) #18

Здравствуйте! Подскажите пожалуйста начинающему автоматизатору - хочу сделать отчеты Allure общедоступными. Но они только на локалке открываются - как быть? Подскажите, может есть инфа пошаговой имплементации данного вопроса?
Я пишу автотесты на Java с Selenium Webdriver/Maven/JUnit
Заранее благодарю за любую помощь!


(Taras) #19

ну наверное хостить их нужно где то под публичним доменом ?)
Если “общедоступными” для команди, - тогда CI плагин, аля Jenkins