Search code examples
karateallurejira-xrayextentreportportal

How to integrate Allure Report in karate API automation project


We are using Karate heavily for various projects and though the report generated using karate Reports are more than anyone would need. I am still interested in getting Allure integrated in the mix.

Added allure-junit4 dependency and added allure listener

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20</version>
                <configuration>
                    <argLine>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                         <!-- -Dcucumber.options="&#45;&#45;plugin io.qameta.allure.cucumberjvm.AllureCucumberJvm"-->
                    </argLine>
                    <properties>
                        <property>
                            <name>listener</name>
                            <value>io.qameta.allure.junit4.AllureJunit4</value>
                        </property>
                    </properties>

                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>


Now allure-results is getting created and I can see report but it's almost blank.

Generated Allure Report

How can I get allure report generated on karate based project?


Solution

  • If Allure supports the Cucumber JSON output it should work. Else suggest you take this up with the Allure team.

    You can refer to this thread (for Extent): https://github.com/intuit/karate/issues/619

    EDIT: Since I refer anyone asking about extending / custom reports to this answer, read on.

    In Karate 1.0 onwards, the Results object can be used to get all data about the test results. Also multiple JSON files will be output to the <build>/karate-reports. You can even re-try some tests and merge the results: https://github.com/intuit/karate/wiki/1.0-upgrade-guide#retry-framework-experimental

    Also please be aware of changes to the Java hooks, it is called RuntimeHook now: https://github.com/intuit/karate/wiki/1.0-upgrade-guide#hooks

    For those using XRay - there is official documentation: https://docs.getxray.app/display/XRAYCLOUD/Testing+APIs+using+Karate+DSL

    Regarding Report Portal - there is a need for the official adapter to be upgraded: https://stackoverflow.com/a/60156120/143475 - but that thread has a few links to examples of people who have done it.