Опитвате се да добавите нов раздел в отчета Allure

Опитвам се да създам плъгин за Allure, който ще добави нов раздел, наречен Браузъри, който ще показва състоянията на TC във всички браузъри, но съм заседнал на първата стъпка от това – добавяне на раздел Браузъри към самия отчет. Използвах allure-report-plugin-api и инструкции от този въпрос - Allure: Как да персонализирам тестовия отчет да пише браузъри вместо Xunit? и примери от git repo на allure-report-plugin-api. Но нямам късмет, разделът не е добавен, въпреки че кодът е толкова прост. Бихте ли ми посочили къде съм допуснал грешки и кой е правилният начин да го направя? Големи благодарности предварително!

Ето пример как се опитвам да добавя новия раздел

Ето структурата на проекта

src
--->main
--->--->java
--->--->--->allure
--->--->--->--->(Class) BrowserInfo
--->--->resourses
--->--->--->(directory)allure
--->--->--->--->(directory)BrowserInfo
--->--->--->--->--->en.json
--->--->--->--->--->script.js
--->test
--->--->allure
--->--->--->(Class) GoogleSearchTest
--->--->testcases
--->--->--->SearchTest.xml
pom.xml

Ето клас BrowserInfo

package allure;

import ru.yandex.qatools.allure.Allure;
import ru.yandex.qatools.allure.data.AllureAttachment;
import ru.yandex.qatools.allure.data.AllureStep;
import ru.yandex.qatools.allure.data.AllureTestCase;
import ru.yandex.qatools.allure.data.plugins.DefaultTabPlugin;
import ru.yandex.qatools.allure.data.plugins.Plugin;
import ru.yandex.qatools.allure.model.Label;

import java.util.ArrayList;
import java.util.List;

@Plugin.Name("browserList")
public class BrowserInfo extends DefaultTabPlugin {

    @Override
    public void process(AllureTestCase data) {

    }

}

Ето en.json

{
  "browserList": {
    "TITLE": "Browsers",
    "TITLE_FULL": "List of browsers"
  }
}

Ето script.js

/*global angular*/
(function() {
    "use strict";
    var module = angular.module('allure.browserList', []);
    module.config(function($stateProvider, allureTabsProvider) {
        allureTabsProvider.addTab('browserList', {title: 'browserList.TITLE'});
    });

})();

Ето само малък тест

package allure;

import junit.framework.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class GoogleSearchTest {

    @Test
    public void searchBananasTest() {

        WebDriver driver = new FirefoxDriver();
        driver.get("https://www.google.com/");
        driver.findElement(By.id("lst-ib")).sendKeys("BANANAS");
        driver.findElement(By.cssSelector("[type = 'submit']")).click();
        Assert.assertTrue(driver.findElement(
                By.cssSelector("[data-async-context='query:BANANAS'] h3")
        ).getText().toLowerCase().contains("banana"));
        driver.quit();

    }

}

Ето TestNG xml за теста

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="searching bananas">

    <test name="searching bananas" preserve-order="true">
        <classes>
            <class name="allure.GoogleSearchTest">
                <methods>
                    <include name = "searchBananasTest"/>
                </methods>
            </class>
        </classes>
    </test>

</suite>

Ето файла pom.xml

<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>AllurePluginTest</groupId>
  <artifactId>AllurePluginTest</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>allure</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <aspectj.version>1.8.5</aspectj.version>
    <allure.version>1.4.16</allure.version>
  </properties>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.16</version>
        <configuration>
          <suiteXmlFiles>
            <suiteXmlFile>${suitexml}</suiteXmlFile>
          </suiteXmlFiles>
          <testFailureIgnore>false</testFailureIgnore>
          <argLine>
            -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
          </argLine>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>${aspectj.version}</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>

    <dependency>
      <groupId>ru.yandex.qatools.allure</groupId>
      <artifactId>allure-testng-adaptor</artifactId>
      <version>${allure.version}</version>
      <exclusions>
        <exclusion>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

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

    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.8.7</version>
    </dependency>

    <dependency>
      <groupId>ru.yandex.qatools.allure</groupId>
      <artifactId>allure-report-plugin-api</artifactId>
      <version>1.4.16</version>
    </dependency>

  </dependencies>

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

</project>

person aros_ua    schedule 13.08.2015    source източник


Отговори (2)


Основният проблем е, че Allure зарежда плъгини чрез Java SPI. Така че трябва да създадете файл ru.yandex.qatools.allure.data.plugins.Plugin в META-INF/services/ във вашата папка с ресурси със следното съдържание:

allure.BrowserInfo

След това трябва да конфигурирате allure-maven-plugin да използва вашия плъгин:

<reporting>
    <excludeDefaults>true</excludeDefaults>
    <plugins>
        <plugin>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <plugins>
                    <plugin>
                        <groupId>${project.groupId}</groupId>
                        <artifactId>${project.artifactId}</artifactId>
                        <version>${project.version}</version>
                    </plugin>
                </plugins>
            </configuration>
        </plugin>
    </plugins>
</reporting>

Забележка: плъгинът трябва да бъде инсталиран в локално хранилище.

Препоръчвам да използвате отделния проект за вашия плъгин и да генерирате отчета за визуализация, като използвате maven-invoker- плъгин. В този случай не е необходимо да изпълнявате тестове (можете просто да поставите резултатите от тестовете в необходимата ви папка) и няма нужда да инсталирате/внедрявате плъгин.

И още няколко коментара за вас:

BrowserInfo

По подразбиране Allure очаква, че всеки плъгин предоставя някои данни във файл ${pluginName}.json. Така че трябва да добавите някои фиктивни данни. Пример за просто добавяне на поле като това:

@Plugin.Data
private List<String> strings = new ArrayList<>();

Другият начин конфигурирайте това поведение в script.js (празна секция за разрешаване):

allureTabsProvider.addTab('browserList', {title: 'browserList.TITLE', resolve: {}});

Превод

За да добавите превод към отчета, използвайте следната команда:

allureTabsProvider.addTranslation('cats');

Разгледайте: Allure JavaScript API

Шаблон за приставка

Allure търси tab.tpl.html за всеки плъгин за раздел. Така че трябва да го добавите към вашите ресурси за плъгини.

Надявам се да помогне.

person Dmitry Baev    schedule 13.08.2015
comment
Да, благодаря ви за много бързия отговор. Това помогна много! Маркиране на това като отговор. - person aros_ua; 13.08.2015
comment
Моля! Можете също да използвате нашия gitter чат gitter.im/allure-framework/allure-core - person Dmitry Baev; 13.08.2015

Добавете зависимости ALlure Report Builder, след което добавете кода по-долу

// It will generate the Allure Report folder.
new AllureReportBuilder("1.5.4", new File("target/allure-report")).unpackFace(); 
new AllureReportBuilder("1.5.4", new File("target/allure-report")).processResults(new File("target/allure-results"));
person Rahul Jain    schedule 08.01.2019