When I run my configuration in debug, all the tests are executed without stopping to the breakpoints. Anyone knows how to run/debug the features using gradle?
I also tried an application configuration but the system properties "geb.browser and geb.environment" are not being set, which causes null pointer exception.
Configuration:
build.gradle:
import org.apache.tools.ant.taskdefs.condition.Os
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.github.samueltbrown:gradle-cucumber-plugin:0.9"
classpath "info.cukes:cucumber-core:1.2.4"
}
}
ext {
ext {
groovyVersion = '2.4.4'
gebVersion = '0.12.2'
seleniumVersion = '2.48.2'
chromeDriverVersion = '2.20'
cucumberJvmVersion = '1.2.2'
}
}
apply plugin: 'groovy'
apply plugin: 'java'
apply from: "gradle/osSpecificDownloads.gradle"
apply plugin: "com.github.samueltbrown.cucumber"
apply from: "gradle/idea/idea.gradle"
repositories {
mavenCentral()
}
dependencies {
testCompile "org.gebish:geb-core:$gebVersion"
testCompile "org.codehaus.groovy:groovy-all:$groovyVersion"
// HttpBuilder
testCompile "org.codehaus.groovy.modules.http-builder:http-builder:0.7.1"
// Selenium support
testCompile "org.seleniumhq.selenium:selenium-support:$seleniumVersion"
testCompile "org.seleniumhq.selenium:selenium-api:$seleniumVersion"
testCompile "info.cukes:cucumber-core:$cucumberJvmVersion"
testCompile "info.cukes:cucumber-groovy:$cucumberJvmVersion"
testCompile "io.jdev.geb:geb-cucumber:0.3"
cucumberRuntime "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion"
cucumberRuntime "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
}
cucumber {
formats = [
'pretty', // prints nice format out to the console
'html:build/reports/cucumber', // html
'junit:build/cucumber.xml' // junit format for integration with CI tool etc
]
glueDirs = ['src/test/groovy/com/stepsDefs']
featureDirs = ['src/cucumber/resources']
}
tasks.cucumber {
dependsOn unzipChromeDriver
final def environment = System.getProperty('geb.environmemt')
// set environments
switch (environment) {
case 'alpha':
System.setProperty("geb.build.baseUrl", "http://www.google.com")
System.setProperty("apiKey", "")
break
case 'ci':
System.setProperty("geb.build.baseUrl", "http://www.google.com")
System.setProperty("apiKey", "")
break
case 'silo122':
System.setProperty("geb.build.baseUrl", "http://www.google.com")
System.setProperty("apiKey", "")
break
default:
println("Environment argument is not supported - Available options:\n- alpha\n- ci\n- local\n- silo122\n- stage")
System.exit(0)
break
}
def chromeDriverFilename = Os.isFamily(Os.FAMILY_WINDOWS) ? "chromedriver.exe" : "chromedriver"
jvmOptions.systemProperties([
"webdriver.chrome.driver": new File(unzipChromeDriver.outputs.files.singleFile, chromeDriverFilename).absolutePath,
"geb.cucumber.step.packages": "pages",
"geb.env": System.getProperty("geb.browser"),
"geb.build.baseUrl":System.getProperty("geb.build.baseUrl"),
"envName": System.getProperty("geb.environmemt")
])
}
apply from: "gradle/ci.gradle"
Where are your breakpoints set? If they are in your feature file, then unfortunately you cannot debug those as they are parsed during runtime by cucumber. The breakpoints must be inside your definition files or any other source file. If you have duplicate steps in the feature file, you can try hitting pause on your IDE right before the step you want to debug hits and then set the new breakpoint on the code that you want to debug.
You can refactor the Gradle build to use a JUnit wrapper for Cucumber, as described in this answer for a similar problem for VS Code. This means you won't need any cucumber plugin for Gradle any more. Then re-import the gradle build into IntelliJ, and if necessary, right-click on the test task in IntelliJ and edit the configuration to add any necessary arguments. Then debugging will work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With