0

I get the following errror when I use git bash command - however when I run the test in Intellij everything works fine and test starts. Could you help ?

mvn test -Dcucumber.filter.tags="@desktop"

 java.lang.IllegalArgumentException: Input must be set
        at org.openqa.selenium.internal.Require.nonNull(Require.java:59)
        at org.openqa.selenium.support.ui.FluentWait.<init>(FluentWait.java:97)
        at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:77)
        at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:46)
        at utils.Utils.waitForElement(Utils.java:28)
        at pages.LandingPage.acceptConsent(LandingPage.java:21)

Feature file

 @desktop
  Scenario: Test landing page
    Given Customer accepts cookie consent
    And I click "OK" button at the bottom of the page

POM

  <?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>Cucumber</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>


    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.4.0</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.testng/testng -->

        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.7.1</version>
            <scope>test</scope>
        </dependency>


        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>7.8.1</version>
        </dependency>



        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>7.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>compile</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.assertj/assertj-core -->
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>3.23.1</version>
            <scope>test</scope>
        </dependency>


        <!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.reflections</groupId>
            <artifactId>reflections</artifactId>
            <version>0.9.11</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.1-jre</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.8.3</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
            <scope>compile</scope>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>2.0.7</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.7</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->

        <!-- https://mvnrepository.com/artifact/com.opencsv/opencsv -->
        <dependency>
            <groupId>com.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>5.7.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/picocontainer/picocontainer -->
        <!-- https://mvnrepository.com/artifact/picocontainer/picocontainer -->
        <!-- https://mvnrepository.com/artifact/picocontainer/picocontainer -->
        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-picocontainer -->
        <!-- https://mvnrepository.com/artifact/picocontainer/picocontainer -->


        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-picocontainer -->
        <!-- https://mvnrepository.com/artifact/picocontainer/picocontainer -->
        <dependency>
            <groupId>picocontainer</groupId>
            <artifactId>picocontainer</artifactId>
            <version>1.2</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/de.monochromata.cucumber/reporting-plugin -->
        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-html -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-html</artifactId>
            <version>0.2.7</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin -->


        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin -->
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java8 -->
        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-core -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>7.11.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/net.masterthought/maven-cucumber-reporting -->
        <!-- https://mvnrepository.com/artifact/net.masterthought/cucumber-reporting -->
        <!-- https://mvnrepository.com/artifact/com.aventstack/extentreports-cucumber4-adapter -->

        <!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->

        <!-- https://mvnrepository.com/artifact/com.relevantcodes/extentreports -->

        <!-- https://mvnrepository.com/artifact/net.masterthought/maven-cucumber-reporting -->
        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>maven-cucumber-reporting</artifactId>
            <version>5.7.5</version>
        </dependency>


    </dependencies>



    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <includes>
                        <include>**/*TestRunner.java</include>
                    </includes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
            <plugin>
                <groupId>net.masterthought</groupId>
                <artifactId>maven-cucumber-reporting</artifactId>
                <version>5.7.5</version>
                <executions>
                    <execution>
                        <id>execution</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <projectName>Cucumber</projectName>
                            <!-- optional, per documentation set this to "true" to bypass generation of Cucumber Reports entirely, defaults to false if not specified -->
                            <skip>false</skip>
                            <!-- output directory for the generated report -->
                            <outputDirectory>${project.build.directory}</outputDirectory>
                            <!-- optional, defaults to outputDirectory if not specified -->
                            <inputDirectory>${project.build.directory}/jsonReports</inputDirectory>
                            <jsonFiles>
                                <!-- supports wildcard or name pattern -->
                                <param>**/*.json</param>
                            </jsonFiles>
                            <!-- optional, defaults to outputDirectory if not specified -->

                            <!-- optional, set true to group features by its Ids -->
                            <mergeFeaturesById>false</mergeFeaturesById>
                            <!-- optional, set true to get a final report with latest results of the same test from different test runs -->
                            <mergeFeaturesWithRetest>false</mergeFeaturesWithRetest>
                            <!-- optional, set true to fail build on test failures -->
                            <checkBuildResult>false</checkBuildResult>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


</project>

Intellij configuration where it works enter image description here

1
  • I believe that you just pass null to your waiter at Utils.java:28
    – Alexey R.
    May 7, 2023 at 19:05

2 Answers 2

0

Check your cocumber test runner class. In 'glue' option you should show where you keep:

  1. steps
  2. hooks

I bet that you have some helper class where you have hooks like @Before and @After. Im sure you are missing the second point here.

Example code:

@CucumberOptions( features = "src/test/java/features", glue = {"steps", "base"} )

0

I got almost identical console output as what you shared above. A certain test of mine would not even run the first step, which told me it had something to do with my 'DriverUtils' or my 'Hooks'.

The beginning of my feature file:


@ProdSmoke @TC1.38 @ARCCP-T138 @TestCaseKey=ARCCP-T138
Scenario: User logs in, clicks essential buttons, logs out, logs in, logs out

    # navigate to PROD CLIENT PORTAL
Given user navigates to "https://our-website-url.com/login"
And user has entered valid prod username and valid password 

My Hooks file looked like this:


import api.services.AuthenticationControllerService;
import context.SharedContext;
import io.cucumber.java.After;
import io.cucumber.java.Before;
import io.cucumber.java.Scenario;
import io.restassured.RestAssured;
import io.restassured.response.Response;
import utils.CommonMethods;
import utils.ConfigReader;
import utils.DriverUtils;

public class Hooks {
    private static String authorizationToken = "";
    AuthenticationControllerService authenticationControllerService = new AuthenticationControllerService();
    @Before("@UI")
    public void setUp() {
        ConfigReader.initializeProperties();
        DriverUtils.createDriver();
    }
    @Before("@API")
    public void setupBaseURIGetToken(){
        ConfigReader.initializeProperties();
        RestAssured.baseURI = ConfigReader.getProperty("authorization.url");

        Response authResponse = authenticationControllerService.authorizeAdmin(RestAssured.baseURI);
        String responseBody = authResponse.getBody().asString();

        authorizationToken = authResponse.jsonPath().getString("token");
        System.out.println("Authorization token: " + authorizationToken);

        SharedContext sharedContext = SharedContext.getInstance();
        sharedContext.setAPIAuthToken(authorizationToken);
        sharedContext.setResponseBody(responseBody);
    }
    public String getAuthToken(){
        return authorizationToken;
    }

    @After("@UI")
    public void cleanUp(Scenario scenario) throws InterruptedException {
        if (scenario.isFailed()) {
            scenario.attach(CommonMethods.takeScreenshot(), "image/png", scenario.getName());
        }
        CommonMethods.takeScreenshot(scenario);
        Thread.sleep(3000);
        DriverUtils.getDriver().quit();
    }
} 

Note that my 'public void setUp()' method in Hooks shows the tag @UI in the @Before as '@Before("@UI")' above it. I somehow had removed the '@UI' tag from above the 'Scenario' line in my Feature File. So, I wasn't calling the 'setUp' method in the very first place. Adding that fixed everything, so the beginning of my Feature File looks like this:

Feature: ARCCP-T001 - Sanity Test of PROD COMPANY Client Portal Essential Functionality

@ProdSmoke @TC1.38 @ARCCP-T138 @TestCaseKey=ARCCP-T138 @UI
Scenario: User logs in, clicks essential buttons, logs out, logs in, logs out

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.