Search code examples
selenium-webdrivergradlecucumberbuild.gradlebuild-automation

How to generate Cucumber extent reports 4 through Gradle


I am executing the Cucumber automation test scripts through gradle, though i am able to execute the test successfully but reports are not getting generated. I did give a try with with below gradle tasks one at a time.

Cucumber gradle tasks copied below

a) for the below gradle task i am able to execute the scripts which does not generate reports as i have not included the reports statements inside args

task cucumber() {
    dependsOn assemble, testClasses
    doLast {
        javaexec {
            main = "io.cucumber.core.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            
            args = ['--plugin', 'pretty', 
                  
                    '--glue','com.hal.brands.test.stepdefinition',
                    
                    'src/test/resources','src/main/java',

                    '--tags', '@Api'        
                    ]
           
               }
       
        }
    }

b) I tried to include the few statements related to reporting as shown in below gradle task but it failed with a exception

    task cucumber() {
        dependsOn assemble, testClasses
        doLast {
            javaexec {
                main = "io.cucumber.core.cli.Main"
                classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
                
                args = ['--plugin', 'pretty', 'json:target/HalBrands.json', 'com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:',
                
                        '--monochrome', 'true',
                
                        '--features','src\test\resources\featurefile',
                
                        '--glue','com.hal.brands.test.stepdefinition',
                        
                        'src/test/resources','src/main/java', 
    
                        '--tags', '@Api'         
                        ]
              
            }
           
        }
      }

Exception details given below

BUILD SUCCESSFUL in 1s
6 actionable tasks: 6 up-to-date
E:\GradleProj_workspace\GadleDemoProj>gradle cucumber

> Configure project :

    http://api-qa.dpr-prv.halbrands.us.cloudappzero.azureflash.com
   
    E:\GradleProj_workspace\GadleDemoProj

> Task :cucumber FAILED

    Exception in thread "main" java.lang.IllegalArgumentException: com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter: is not valid. Try URI[:LINE]*
            at io.cucumber.core.model.FeatureWithLines.parse(FeatureWithLines.java:56)
            at io.cucumber.core.options.RuntimeOptionsParser.parse(RuntimeOptionsParser.java:131)
            at io.cucumber.core.options.CommandlineOptionsParser.parse(CommandlineOptionsParser.java:25)
            at io.cucumber.core.options.CommandlineOptionsParser.parse(CommandlineOptionsParser.java:29)
            at io.cucumber.core.cli.Main.run(Main.java:29)
            at io.cucumber.core.cli.Main.main(Main.java:14)
    Caused by: java.lang.IllegalArgumentException: Expected scheme-specific part at index 68: com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:
            at java.net.URI.create(URI.java:852)
            at io.cucumber.core.model.FeaturePath.parseProbableURI(FeaturePath.java:72)
            at io.cucumber.core.model.FeaturePath.parse(FeaturePath.java:57)
            at io.cucumber.core.model.FeatureWithLines.parseFeaturePath(FeatureWithLines.java:77)
            at io.cucumber.core.model.FeatureWithLines.parse(FeatureWithLines.java:53)
            ... 5 more
    Caused by: java.net.URISyntaxException: Expected scheme-specific part at index 68: com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:
            at java.net.URI$Parser.fail(URI.java:2848)
            at java.net.URI$Parser.failExpecting(URI.java:2854)
            at java.net.URI$Parser.parse(URI.java:3057)
            at java.net.URI.<init>(URI.java:588)
            at java.net.URI.create(URI.java:850)
            ... 9 more

FAILURE: Build failed with an exception.

* Where:
Build file 'E:\GradleProj_workspace\GadleDemoProj\build.gradle' line: 104

* What went wrong:
Execution failed for task ':cucumber'.
> Process 'command 'C:\Program Files\Java\jdk1.8.0_202\bin\java.exe'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 1s
6 actionable tasks: 1 executed, 5 up-to-date

E:\GradleProj_workspace\GadleDemoProj>

**---------------------------------------------------------------------------------------------------------------**

I am not sure where i am going wrong in the above 'b' gradle task . Please help with me at the earliest as iam literally wasting lot of time here trying out many possibilities. Also i want to keep you informed that i am new gradle stuff.

Have also copied cucumberoptions as present in my cucumber runner file

@CucumberOptions(features = { "classpath:featurefile" }, glue = { "classpath:com.hal.brands.test.stepdefinition",
            "classpath:com.hal.brands.helper" }, 
            
            plugin = { "pretty", "json:target/HalBrands.json", "com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:" },
    
            monochrome = true, tags = "@Api")

Solution

  • Pls take off the json: to get rid of the exception you are getting wrt to invalid scheme!