serenity-bdd / serenity-cucumber-starter

A skeleton project for Serenity BDD and Cucumber JVM
Apache License 2.0
180 stars 285 forks source link

Reports not getting generated with Junit5 - Cucumber - Serenity #102

Closed BhushanJoshi93 closed 1 year ago

BhushanJoshi93 commented 1 year ago

Hi I'm running the serenity-cucumber-starter. I'm running into issue where the report is not getting generated even after using the same pom file that the starter has (plus I have added few extra things for parallel execution). Forgot to mention: The report gets updated but its empty. Meaning, I can see new date on the report. But it has no test. Below is the screenshot: image

And here's the results from Console: image

Below is the pom file

`<?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">

4.0.0
<groupId>net.serenitybdd.starter</groupId>
<artifactId>cucumber-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Sample Serenity BDD project using Cucumber</name>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <serenity.version>3.5.1</serenity.version>
    <serenity.maven.version>3.5.1</serenity.maven.version>
    <encoding>UTF-8</encoding>
    <tags></tags>
    <webdriver.base.url></webdriver.base.url>
    <junit5.version>5.8.2</junit5.version>
    <cucumber.version>7.10.0</cucumber.version>

</properties>
<dependencies>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-core</artifactId>
        <version>${serenity.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-ensure</artifactId>
        <version>${serenity.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>1.8.2</version>
        <scope>test</scope>
    </dependency>

    <!-- Junit 4 Dependency -->

    <!-- <dependency> <groupId>net.serenity-bdd</groupId> <artifactId>serenity-junit</artifactId> 
        <version>${serenity.version}</version> <scope>test</scope> </dependency> -->

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>${cucumber.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${junit5.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- EOF Junit 4 Dependency -->

    <!-- Junit 5 Dependency -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit-platform-engine</artifactId>
        <version>${cucumber.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-suite</artifactId>
        <version>1.8.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit5.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit5.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-junit5</artifactId>
        <version>${serenity.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- EOF Junit 5 Dependency -->

    <!-- Serenity Cucumber Dependency -->

    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-cucumber</artifactId>
        <version>${serenity.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-single-page-report</artifactId>
        <version>${serenity.version}</version>
    </dependency>

    <!-- EOF Serenity Cucumber Dependency -->

    <!-- Screenplay Dependency -->

    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-screenplay</artifactId>
        <version>${serenity.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-screenplay-webdriver</artifactId>
        <version>${serenity.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- EOF Screenplay Dependency -->

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.10</version>
    </dependency>
    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.23.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
            <configuration>
                <!-- <properties>
                    <configurationParameters>
                        cucumber.junit-platform.naming-strategy=long
                    </configurationParameters>
                </properties> -->

                <skip>true</skip>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>3.0.0-M5</version>
            <configuration>
                <includes>
                    <!-- <include>**/CucumberParallel.java</include> -->
                    <include>**/*Test.java</include>
                    <include>**/Test*.java</include>
                    <include>**/*TestSuite.java</include>
                    <include>**/CucumberJunit5Runner.java</include>
                    <include>**/When*.java</include>
                </includes>
                <systemPropertyVariables>
                    <junit.jupiter.extensions.autodetection.enabled>true</junit.jupiter.extensions.autodetection.enabled>
                    <webdriver.base.url>${webdriver.base.url}</webdriver.base.url>
                </systemPropertyVariables>
                <!-- <parallel>classes</parallel> -->
                <parallel>methods</parallel>
                <threadCount>5</threadCount>
                <!-- <useUnlimitedThreads>true</useUnlimitedThreads> -->
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>net.serenity-bdd.maven.plugins</groupId>
            <artifactId>serenity-maven-plugin</artifactId>
            <version>${serenity.maven.version}</version>
            <configuration>
                <tags>${tags}</tags>
            </configuration>
            <executions>
                <execution>
                    <id>serenity-reports</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>aggregate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

`

and Here's the runner file `package testRunner;

import io.cucumber.junit.CucumberOptions; import net.serenitybdd.cucumber.CucumberWithSerenity; import net.serenitybdd.junit5.SerenityJUnit5Extension;

import org.junit.jupiter.api.extension.ExtendWith; import org.junit.platform.suite.api.ConfigurationParameter; import org.junit.platform.suite.api.IncludeEngines; import org.junit.platform.suite.api.SelectClasspathResource; import org.junit.platform.suite.api.Suite; import org.junit.runner.RunWith; import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME; import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME;;

//@RunWith(CucumberWithSerenity.class) @Suite @ExtendWith(SerenityJUnit5Extension.class) @IncludeEngines("cucumber") @ConfigurationParameter(key=PLUGIN_PROPERTY_NAME , value = "pretty") @SelectClasspathResource("features/") @ConfigurationParameter(key=GLUE_PROPERTY_NAME , value = "stepdefinitions")

//@CucumberOptions( // plugin = {"pretty"}, // features = "src/test/resources/features" //)

public class CucumberJunit5Runner {}`

Here's the junit-platform.properties cucumber.publish.quiet=true cucumber.execution.parallel.enabled=true cucumber.execution.execution-mode.feature = same_thread cucumber.publish.enabled=true


BhushanJoshi93 commented 1 year ago

Found the issue and it is now working as expected :

For all others: FYI : https://serenity-bdd.github.io/docs/guide/cucumber

Document mentions cucumber.execution.parallel.enabled=true cucumber.execution.parallel.config.strategy=fixed cucumber.execution.parallel.config.fixed.parallelism=10 cucumber.plugin=io.cucumber.core.plugin.SerenityReporterParallel

However, SerenityReporterParallel will not be found under io.cucumber.core.plugin So use cucumber.plugin=io.cucumber.core.plugin.SerenityReporter

In my case:

cucumber.publish.quiet=true
cucumber.execution.parallel.enabled=true
cucumber.execution.execution-mode.feature = same_thread
cucumber.publish.enabled=true

 cucumber.execution.parallel.config.strategy=fixed
 cucumber.execution.parallel.config.fixed.parallelism=10
 cucumber.plugin=io.cucumber.core.plugin.SerenityReporter,pretty, json:path/to/report.json