Feature file run failure

Hello,

I am using free version 9.7.2 and getting below error while running feature file. Trying to learn BDD framework. Can someone please help me to resolve this.

** Feature File**Feature: Login feature

Scenario: Test login with valid credentials
Given User navigates to login page
When User enters username and password
And Click on login button
And User is navigated to homepage

Script
import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint

import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase

import static com.kms.katalon.core.testdata.TestDataFactory.findTestData

import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject

import com.kms.katalon.core.annotation.Keyword

import com.kms.katalon.core.checkpoint.Checkpoint

import com.kms.katalon.core.checkpoint.CheckpointFactory

import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile

import com.kms.katalon.core.model.FailureHandling

import com.kms.katalon.core.testcase.TestCase

import com.kms.katalon.core.testcase.TestCaseFactory

import com.kms.katalon.core.testdata.TestData

import com.kms.katalon.core.testdata.TestDataFactory

import com.kms.katalon.core.testobject.ObjectRepository

import com.kms.katalon.core.testobject.TestObject

import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS

import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

import internal.GlobalVariable

import org.openqa.selenium.WebElement

import org.openqa.selenium.WebDriver

import org.openqa.selenium.By

import com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory

import com.kms.katalon.core.webui.driver.DriverFactory

import com.kms.katalon.core.testobject.RequestObject

import com.kms.katalon.core.testobject.ResponseObject

import com.kms.katalon.core.testobject.ConditionType

import com.kms.katalon.core.testobject.TestObjectProperty

import com.kms.katalon.core.mobile.helper.MobileElementCommonHelper

import com.kms.katalon.core.util.KeywordUtil

import com.kms.katalon.core.webui.exception.WebElementNotFoundException

import cucumber.api.java.en.And

import cucumber.api.java.en.Given

import cucumber.api.java.en.Then

import cucumber.api.java.en.When

class LoginSteps {

@Given(ā€œUser navigates to login pageā€)

def navigateToLoginPage () {

println (ā€œ\n I am inside navigateToLoginPageā€)

}

@When(ā€œUser enters username and passwordā€)

def enterCredentials() {

println (ā€œ\n I am inside enterCredentialsā€)

}

@And(ā€œClick on login buttonā€)

def clickLogin() {

println (ā€œ\n I am inside clickLoginā€)

}

@Then(ā€œUser is navigated to homepageā€)

def verifyHomePage() {

println (ā€œ\n I am inside verifyHomePageā€)

}

}

Test Listener
import com.kms.katalon.core.cucumber.keyword.internal.CucumberGlueGenerator

@BeforeTestCase

def beforeTestCase(TestCaseContext testCaseContext) {
CucumberGlueGenerator.addDefaultPackages();
}

Error

2024-10-25 13:21:26.221 ERROR c.k.k.core.keyword.internal.KeywordMain - :x: Feature file ā€˜Include/features/Login.feature’ was failed
2024-10-25 13:21:26.241 ERROR c.k.k.core.keyword.internal.KeywordMain - :x: Keyword runFeatureFile was failed (Root cause: com.kms.katalon.core.exception.StepFailedException: Feature file ā€˜Include/features/Login.feature’ was failed
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:51)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:23)
at com.kms.katalon.core.keyword.internal.KeywordMain$stepFailed$0.call(Unknown Source)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords$_runFeatureFile_closure1.doCall(CucumberBuiltinKeywords.groovy:116)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords$_runFeatureFile_closure1.doCall(CucumberBuiltinKeywords.groovy)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:75)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:69)
at com.kms.katalon.core.keyword.internal.KeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords.runFeatureFile(CucumberBuiltinKeywords.groovy:77)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords$runFeatureFile.callStatic(Unknown Source)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords.runFeatureFile(CucumberBuiltinKeywords.groovy:256)
at WSVerification1729880485520.run(WSVerification1729880485520:2)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.WSVerificationExecutor.runScript(WSVerificationExecutor.java:180)
at com.kms.katalon.core.main.WSVerificationExecutor.doExecute(WSVerificationExecutor.java:174)
at com.kms.katalon.core.main.WSVerificationExecutor.processExecutionPhase(WSVerificationExecutor.java:157)
at com.kms.katalon.core.main.WSVerificationExecutor.accessMainPhase(WSVerificationExecutor.java:149)
at com.kms.katalon.core.main.WSVerificationExecutor.execute(WSVerificationExecutor.java:131)
at com.kms.katalon.core.main.TestCaseMain.runFeatureFile(TestCaseMain.java:167)
at TempTempCase1729880481939.run(TempTempCase1729880481939.groovy:25)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
)
2024-10-25 13:21:26.245 ERROR c.k.k.core.main.WSVerificationExecutor - :x: Verification FAILED.
Reason:
com.kms.katalon.core.exception.StepFailedException: Feature file ā€˜Include/features/Login.feature’ was failed
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:51)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy)
at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:23)
at com.kms.katalon.core.keyword.internal.KeywordMain$stepFailed$0.call(Unknown Source)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords$_runFeatureFile_closure1.doCall(CucumberBuiltinKeywords.groovy:116)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords$_runFeatureFile_closure1.doCall(CucumberBuiltinKeywords.groovy)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:75)
at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:69)
at com.kms.katalon.core.keyword.internal.KeywordMain$runKeyword.call(Unknown Source)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords.runFeatureFile(CucumberBuiltinKeywords.groovy:77)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords$runFeatureFile.callStatic(Unknown Source)
at com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords.runFeatureFile(CucumberBuiltinKeywords.groovy:256)
at WSVerification1729880485520.run(WSVerification1729880485520:2)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.WSVerificationExecutor.runScript(WSVerificationExecutor.java:180)
at com.kms.katalon.core.main.WSVerificationExecutor.doExecute(WSVerificationExecutor.java:174)
at com.kms.katalon.core.main.WSVerificationExecutor.processExecutionPhase(WSVerificationExecutor.java:157)
at com.kms.katalon.core.main.WSVerificationExecutor.accessMainPhase(WSVerificationExecutor.java:149)
at com.kms.katalon.core.main.WSVerificationExecutor.execute(WSVerificationExecutor.java:131)
at com.kms.katalon.core.main.TestCaseMain.runFeatureFile(TestCaseMain.java:167)
at TempTempCase1729880481939.run(TempTempCase1729880481939.groovy:25)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

2024-10-25 13:21:26.250 INFO c.k.k.core.main.WSVerificationExecutor - END Verification

1 Like

Known issue exists for BDD i think…

Thank you. Added but still getting same error.


import com.kms.katalon.core.context.TestSuiteContext
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW

class Listener {
/**
* Executes before every test case starts.
* @param testCaseContext related information of the executed test case.
*/
@BeforeTestCase
def sampleBeforeTestCase(TestCaseContext testCaseContext) {
CucumberKW.GLUE = [ā€˜LoginSteps.groovy’]
}
}


1 Like

You wrote wrong.

  1. You need to create a package and you want to move the LoginSteps class into the package, for example package1.LoginSteps.
  2. The CucumberKW.GLUE requires a list of the package names, not the file name of Groovy sources. For example,
    CucumberKW.GLUE = ['package1']

It seems you don’t understand what ā€œpackageā€ in Java/Groovy is. If you want to learn, have a look at this article or the Groovy language documentation.

Thank you. But I am not able to create package on free version. It only allows me to create new Step Definition under default package. How do I reference default package in GLUE?

1 Like

I would pass this question to Katalon, @Elly_Tran .

Let me restate the issue.

  1. As of v9.0 where the version of bundled JDK was upgraded from JDK8 to JDK17, all Cucumber users are asked to follow the instruction at Work with BDD feature files in Katalon Studio | Katalon Docs — they have to create a package for their Cucumber Step Definition files.
  2. As of v9.1, Katalon changed the license scheme, so that creating packages is now an Enterprise feature. A user of Katalon Studio Free is no longer qualified to create a package for the Cucumber feature files.
  3. Therefore, as a side-effect of the 2 changes above, users of Katalon Studio Free are no longer capable of BDD testing using the Cucumber library. If you want to perform BDD testing, you have to purchace an Enterprise license.

Is it correct?

1 Like