Settings
Jump to Settings Reference
Settings Files
All Gwen settings and properties are maintained in settings files in your project.
Formats
The following settings file formats are supported:
- HOCON (Human-Optimized Config Object Notation), since v3.0.0
- The recommended and default format
- A superset of JSON
- Maintained in
.conf
files
- JSON, since v3.0.0
- Pure JSON format
- Maintained in
.json
files
- Properties, since v1.0.0
- Legacy Java properties style format
- Flat
name = value
pairs - Maintained in
.properties
files
Ideally you should use one format for all your settings files, but using combinations of the above is also permitted. Priority will be given in the order shown to same named files in a directory having different formats:
.conf
.json
.properties
Load order and precedence
Settings are loaded in the following order of precedence, with those higher in the list overriding the lower.
- Environment variable overrides
- System properties
- User settings
- A
gwen.conf
,gwen.json
, orgwen.properties
file in your user directory
- A
- Profile settings
- A
*.conf
,*.json
, or*.properies
file denoted name passed to-p|--profile
launch option.
- A
- Launch settings
- Comma separated list of
*.conf
,*.json
, or*.properies
files passed to Gwen via the-c|--conf
launch option. These are loaded in the order given with latter entries overriding the former.
- Comma separated list of
- Project settings
- A
gwen.conf
,gwen.json
orgwen.properties
file in your root project directory
- A
- Default settings
- Internal Gwen defaults
-Dname=value
pairs passed to Gwen as system properties have topmost precedence and will always override ALL other settings.
You can maintain settings and override internal defaults at various levels as described here.
User settings files
User-level settings can optionally be defined in a gwen.conf|json|properties
file in the root of your user directory on a machine. These are useful when you want to override certain settings on a machine for a user.
/Users
└── /<username> (~/)
└── gwen.conf # User-level overrides
Profile settings files
All profile settings are stored in *.conf|json|properties
files in the gwen/conf/profiles
subdirectory of the project. Gwen selectively discovers and loads these files when you inovke Gwen with the -p|--profile
option passing in a profile name. The settings file with the same name as the passed in profile is the one that is loaded.
/project # Your project root
└── /gwen
└── /conf
└── /profiles # Profile settings
├── profile1.conf
├── profile2.conf
├── ..
└── profileN.conf
Project settings files
When you set up and initialise your project, all project level settings are stored in a gwen.conf|json|properties
file in the root of the project. Gwen automatically discovers and loads this file for you, so you don't need to explictly pass it to Gwen when you launch in the project directory.
/project # Your project root
└── gwen.conf # Project settings
Settings reference
Launch settings
gwen.launch.options.parallel
Controls whether or not the --parallel
launch option will be passed to Gwen.
gwen.launch.options.parallel
--parallel
launch option will be passed to Gwen.Supported values
true
to always launch Gwen in parallel execution modefalse
to only launch Gwen in parallel execution mode if the--parallel
launch option is explicitly passed (default).
- conf
- json
- properties
Default value
gwen {
launch {
options {
parallel = false
}
}
}
Default value
{
"gwen": {
"launch": {
"options": {
"parallel": false
}
}
}
}
Default value
gwen.launch.options.parallel = false
gwen.launch.options.batch
Controls whether or not the -b|--batch
launch option will be passed to Gwen.
gwen.launch.options.batch
-b|--batch
launch option will be passed to Gwen.Supported values
true
to always launch Gwen in batch mode and disable the REPL.false
to launch Gwen in batch mode if the-b|--batch
option is explicitly passed and in REPL mode if it is not (default).
- conf
- json
- properties
Default value
gwen {
launch {
options {
batch = false
}
}
}
Default value
{
"gwen": {
"launch": {
"options": {
"batch": false
}
}
}
}
Default value
gwen.launch.options.batch = false
gwen.launch.options.verbose
Controls whether or not the -v|--verbose
launch option will be passed to Gwen.
gwen.launch.options.verbose
-v|--verbose
launch option will be passed to Gwen.Supported values
true
for verbose logging modefalse
for pretty logging mode (default)
- conf
- json
- properties
Default value
gwen {
launch {
options {
verbose = false
}
}
}
Default value
{
"gwen": {
"launch": {
"options": {
"verbose": false
}
}
}
}
Default value
gwen.launch.options.verbose = false
gwen.launch.options.dryRun
Controls whether or not the -n|--dry-run
launch option will be passed to Gwen.
gwen.launch.options.dryRun
-n|--dry-run
launch option will be passed to Gwen.Supported values
true
to always launch Gwen in dry run modefalse
to only launch Gwen in dry run mode if the-n|--dry-run
launch option is explicitly passed (default).
- conf
- json
- properties
Default value
gwen {
launch {
options {
dryRun = false
}
}
}
Default value
{
"gwen": {
"launch": {
"options": {
"dryRun": false
}
}
}
}
Default value
gwen.launch.options.dryRun = false
gwen.launch.options.report
Sets the -r|--report
option to pass to Gwen.
gwen.launch.options.report
-r|--report
option to pass to Gwen.Supported values
- A path to a directory to output all reports to (default =
${gwen.outDir}/reports
).
- conf
- json
- properties
Default value
gwen {
launch {
options {
report = "${gwen.outDir}/reports"
}
}
}
Default value
{
"gwen": {
"launch": {
"options": {
"report": "${gwen.outDir}/reports"
}
}
}
}
Default value
gwen.launch.options.report = ${gwen.outDir}/reports
gwen.launch.options.format
Sets the -f|--format
option to pass to Gwen.
gwen.launch.options.format
-f|--format
option to pass to Gwen.Supported values
A list of zero or more of the following:
html
to output HTML reportsjunit
to output JUnit-XML reportsjson
to output JSON reportsresults
for CSV results (since v3.77.0)none
to not output any reports
Notes
- conf
- json
- properties
Default value (empty to pick up Gwen default format: html)
gwen {
launch {
options {
format = [
]
}
}
}
Example with multiple entries
gwen {
launch {
options {
format = [
"html"
"results"
]
}
}
}
Default value (empty to pick up Gwen default format: html)
{
"gwen": {
"launch": {
"options": {
"format": [
]
}
}
}
}
Example with multiple entries
{
"gwen": {
"launch": {
"options": {
"format": [
"html",
"results"
]
}
}
}
}
Default value (empty to pick up Gwen default format: html)
gwen.launch.options.format =
Example with multiple entries (comma separated)
gwen.launch.options.format = html,results
gwen.launch.options.inputData
Sets the -i|--input-data
option to pass to Gwen.
gwen.launch.options.inputData
-i|--input-data
option to pass to Gwen.Supported values
- A path to a CSV or JSON data feed file to pass to Gwen on every launch
- conf
- json
- properties
Default value (blank for no input file)
gwen {
launch {
options {
inputData = ""
}
}
}
Example setting a default CSV data file
gwen {
launch {
options {
inputData = "data/file1.csv"
}
}
}
Example setting a default JSON data file (since v3.47.0)
gwen {
launch {
options {
inputData = "data/file1.json"
}
}
}
Default value (blank for no input file)
{
"gwen": {
"launch": {
"options": {
"inputData": ""
}
}
}
}
Example setting a default CSV data file
{
"gwen": {
"launch": {
"options": {
"inputData": "data/file1.csv"
}
}
}
}
Example setting a default JSON data file (since v3.47.0)
{
"gwen": {
"launch": {
"options": {
"inputData": "data/file1.json"
}
}
}
}
Default value (blank for no input file)
gwen.launch.options.inputData =
Example setting a default CSV data file
gwen.launch.options.inputData = data/file.csv
Example setting a default JSON data file (since v3.47.0)
gwen.launch.options.inputData = data/file.json
gwen.launch.options.meta
Sets the -m|--meta
option to pass to Gwen.
gwen.launch.options.meta
-m|--meta
option to pass to Gwen.Supported values
- A list of paths to meta files to pass to Gwen on every launch
Notes
- conf
- json
- properties
Default value (blank for no meta)
gwen {
launch {
options {
meta = [
]
}
}
}
Example setting two default meta files
gwen {
launch {
options {
meta = [
"meta/file1.meta"
"meta/file2.meta"
]
}
}
}
Default value (empty for no meta)
{
"gwen": {
"launch": {
"options": {
"meta": [
]
}
}
}
}
Example setting two default meta files
{
"gwen": {
"launch": {
"options": {
"meta": [
"meta/file1.meta",
"meta/file2.meta"
]
}
}
}
}
Default value (blank for no meta)
gwen.launch.options.meta =
Example setting two default meta files (comma separated)
gwen.launch.options.meta = meta/file1.meta,meta/file2.meta
gwen.launch.options.features
Sets the list of feature files or directories to pass to Gwen.
gwen.launch.options.features
Supported values
- A list of paths to feature files to pass to Gwen on every launch
Notes
- conf
- json
- properties
Default value (empty for no feature files/dirs)
gwen {
launch {
options {
features = [
]
}
}
}
Example setting two default feature files
gwen {
launch {
options {
features = [
"features/file1.feature"
"features/file2.feature"
]
}
}
}
Default value (empty for no feature files/dirs)
{
"gwen": {
"launch": {
"options": {
"features": [
]
}
}
}
}
Example setting two default feature files
{
"gwen": {
"launch": {
"options": {
"features": [
"features/file1.feature",
"features/file2.feature"
]
}
}
}
}
Default value (blank for no feature files/dirs)
gwen.launch.options.features =
Example setting two default feature files (comma separated)
gwen.launch.options.features = features/file1.feature,features/file2.feature
Core Settings
gwen.assertion.mode
Controls whether or not hard, soft or sustained assertions are enabled by default.
gwen.assertion.mode
Supported values
hard
to halt feature execution on the first assertion error and report failure (default)soft
to collect all assertion errors and continue execution whilst reporting failuressustained
to collect all assertion errors and continue execution without reporting failures
- conf
- json
- properties
Default value
gwen {
assertion {
mode = "hard"
}
}
Default value
{
"gwen": {
"assertion": {
"mode": "hard"
}
}
}
Default value
gwen.assertion.mode = hard
gwen.auto.bind.tableData.outline.examples
Controls whether or not to bind row data in outline examples tables to same named attributes in the current scope.
gwen.auto.bind.tableData.outline.examples
Supported values
true
to bind table data to same named attributes in the current scope for each row (default)false
to not bind table data to attributes in the current scope
- conf
- json
- properties
Default value
gwen {
auto {
bind {
tableData {
outline {
examples = true
}
}
}
}
}
Default value
{
"gwen": {
"auto": {
"bind": {
"tableData": {
"outline": {
"examples": true
}
}
}
}
}
}
Default value
gwen.auto.bind.tableData.outline.examples = true
gwen.auto.trim.data.csv
Controls whether or not to trim surrounding whitespace from incoming CSV data.
gwen.auto.trim.data.csv
Supported values
true
to trim the CSV datafalse
to not trim the CSV data (default)
- conf
- json
- properties
Default value
gwen {
auto {
trim {
data {
csv = false
}
}
}
}
Default value
{
"gwen": {
"auto": {
"trim": {
"data": {
"csv": false
}
}
}
}
}
Default value
gwen.auto.trim.data.csv = false
gwen.auto.trim.data.json
Controls whether or not to trim surrounding whitespace from incoming JSON data.
gwen.auto.trim.data.json
Supported values
true
to trim the JSON datafalse
to not trim the JSON data (default)
- conf
- json
- properties
Default value
gwen {
auto {
trim {
data {
json = false
}
}
}
}
Default value
{
"gwen": {
"auto": {
"trim": {
"data": {
"json": false
}
}
}
}
}
Default value
gwen.auto.trim.data.json = false
gwen.behavior.rules
Controls whether strict or lenient rules around Given-When-Then usage will be enforced for features.
Note: gwen.behaviour.rules
is no longer a supported alias (since v3.0.0)
gwen.behavior.rules
Note:
gwen.behaviour.rules
is no longer a supported alias (since v3.0.0)Supported values
strict
to enforce the following strict rules (default):- Steps in scenarios and backgrounds must satisfy Given-When-Then order
- Givens must set context
- Whens must perform actions
- Thens must assert expectations
- Buts must perform assertions (and are permitted after Then steps)
StepDefs tagged with
@Context
: can only be called by Givens@Action
: can only be called by Whens@Assertion
: can only be called by Thens or Buts
lenient
to relax all strict rules
- conf
- json
- properties
Default value since v3.0.0
gwen {
behavior {
rules = "strict"
}
}
Default value in prior versions
gwen {
behavior {
rules = "lenient"
}
}
Default value since v3.0.0
{
"gwen": {
"behavior": {
"rules": "strict"
}
}
}
Default value in prior versions
{
"gwen": {
"behavior": {
"rules": "lenient"
}
}
}
Default value since v3.0.0
gwen.behavior.rules = strict
Default value in prior versions
gwen.behavior.rules = lenient
gwen.dryRun.limit.tableData.outline.examples.records
Sets the maximum number of outline examples table records to include in dry runs.
gwen.dryRun.limit.tableData.outline.examples.records
Supported values
A positive integer representing the the maximum number of records to include
or
infinity
to log all records (default)
- conf
- json
- properties
Default value
gwen {
dryRun {
limit {
tableData {
outline {
examples {
records = "infinity"
}
}
}
}
}
}
Default value
{
"gwen": {
"dryRun": {
"limit": {
"tableData": {
"outline": {
"examples": {
"records": = "infinity"
}
}
}
}
}
}
}
Default value
gwen.dryRun.limit.tableData.outline.examples.records = infinity
gwen.error.messages.inline.locators
Controls whether or not to inline locator information next to all named bindings in error messages.
gwen.error.messages.inline.locators
Supported values
true
to include locator informationfalse
to exclude locator information (default)
- conf
- json
- properties
Default value since v3.30.1
gwen {
error {
messages {
inline {
locators = false
}
}
}
}
Effecitve default value in prior versions when setting was not defined
gwen {
error {
messages {
inline {
locators = true
}
}
}
}
Default value since v3.31.0
{
"gwen": {
"error": {
"messages": {
"inline": {
"locators: false
}
}
}
}
}
Effecitve default value in prior versions when setting was not defined
{
"gwen": {
"error": {
"messages": {
"inline": {
"locators: true
}
}
}
}
}
Default value since v3.31.0
gwen.error.messages.inline.locators = false
Effecitve default value in prior versions when setting was not defined
gwen.error.messages.inline.locators = true
gwen.feature.dialect
Sets the default Gherkin dialect (or spoken language).
gwen.feature.dialect
Supported values
- A spoken language ID (default =
en
)
- conf
- json
- properties
Default value
gwen {
feature {
dialect = "en"
}
}
Default value
{
"gwen": {
"feature": {
"dialect": "en"
}
}
}
Default value
gwen.feature.dialect = en
gwen.feature.failfast.enabled
Enables or disables fail fast mode at the feature level.
gwen.feature.failfast.enabled
Supported values
true
to enable (default)- Will fail a feature as soon as the first scenario fails before resuming with the next feature.
false
to disable
- conf
- json
- properties
Default value
gwen {
feature {
failfast {
enabled = true
}
}
}
Default value
{
"gwen": {
"feature": {
"failfast": {
"enabled": true
}
}
}
}
Default value
gwen.feature.failfast.enabled = true
gwen.feature.failfast.exit
Controls whether to exit or resume with the next feature when a feature fails.
gwen.feature.failfast.exit
Supported values
true
to enable- Will fail a feature as soon as the first scenario fails and exit immediately.
false
to disable (default)- Will resume with the next feature if the previous one fails.
- conf
- json
- properties
Default value
gwen {
feature {
failfast {
exit = false
}
}
}
Default value
{
"gwen": {
"feature": {
"failfast": {
"exit": false
}
}
}
}
Default value
gwen.feature.failfast.exit = false
gwen.feature.mode
Controls whether or not Gwen DSL steps are permitted in feature specs.
gwen.feature.mode
Supported values
declarative
(default)- DSL steps not permitted in feature specs
imperative
- DSL steps permitted in feature specs
- conf
- json
- properties
Default value since v3.0.0
gwen {
auto {
feature {
mode = "declarative"
}
}
}
Default value in prior versions
gwen {
auto {
feature {
mode = "imperative"
}
}
}
Default value since v3.0.0
{
"gwen": {
"feature": {
"mode": "declarative"
}
}
}
Default value in prior versions
{
"gwen": {
"feature": {
"mode": "imperative"
}
}
}
Default value since v3.0.0
gwen.feature.mode = declarative
Default value in prior versions
gwen.feature.mode = imperative
gwen.mask.char
Sets the masking character used for logging masked settings.
gwen.mask.char
Supported values
- Any single character (default =
*
)
- conf
- json
- properties
Default value
gwen {
mask {
char = "*"
}
}
Default value
{
"gwen": {
"mask": {
"char": "*"
}
}
}
Default value
gwen.mask.char = *
gwen.baseDir
Sets the base Gwen project directory
gwen.baseDir
gwen.outDir
Sets the default Gwen output directory.
gwen.outDir
Supported values
A relative or absolute directory location (default =
${gwen.baseDir}/output
)- The output directory
- conf
- json
- properties
Default value
gwen {
outDir = "${gwen.baseDir}/output"
}
Default value
{
"gwen": {
"outDir": "${gwen.baseDir}/output"
}
}
Default value
gwen.outDir = ${gwen.baseDir}/output
gwen.parallel.maxThreads
Sets the maximum number of permitted parallel executor threads.
gwen.parallel.maxThreads
Supported values
auto
(since v3.18.0) or0
to run one thread on each available cores (default)Or positive integer value denoting the maximum number of threads to allow
- When less than the number of available cores, the remaining cores will be free
- When greater than the number of available cores, more than one thread may execute on some or all cores (use judiciously)
- conf
- json
- properties
Default value
gwen {
parallel {
maxThreads = auto
}
}
Default value
{
"gwen": {
"parallel": {
"maxThreads": auto
}
}
}
Default value
gwen.parallel.maxThreads = auto
gwen.rampup.interval.seconds
Sets the ramp up interval for staggered parallel execution.
gwen.rampup.interval.seconds
Supported values
- A positive integer denoting the number of seconds to wait before executing successive features in parallel
- Zero for no interval or delay between successive feature executions (default)
Example: A 5 second interval would stagger parallel feature executions like this over 4 cores:
time 00 05 10 15 seconds
│ │ │ │
core 1 │<── feature 1a ──>|<── feature 1b ──> ..
core 2 │ │<── feature 2a ──>|<── feature 2b ──> ..
core 3 │ │ │<── feature 3a ──>|<── feature 3b ──> ..
core 4 │ │ │ │<── feature 4a ──>|<── feature 4b ──> ..
- conf
- json
- properties
Default value
gwen {
rampup {
interval {
seconds = 0
}
}
}
Default value
{
"gwen": {
"rampup": {
"interval": {
"seconds": 0
}
}
}
}
Default value
gwen.rampup.interval.seconds = 0
gwen.report.attach.functions
Controls whether or not the scripts of evaluated functions are attached to steps in the Gwen report (default is true
).
gwen.report.attach.functions
true
).gwen.report.overwrite
Controls whether to overwrite previously generated reports or create a timestamped backup instead.
gwen.report.overwrite
Supported values
true
to overwrite previous report (default)false
to backup previous report into a timestamped directory
- conf
- json
- properties
Default value
gwen {
report {
overwrite = true
}
}
Default value
{
"gwen": {
"report": {
"overwrite": true
}
}
}
Default value
gwen.report.overwrite = true
gwen.report.stepDef.indent.pixels
Controls the left margin indent size of StepDefs in HTML reports.
gwen.report.stepDef.indent.pixels
Supported values
- A positive integer representing the indent size in pixels (default =
20
)
- conf
- json
- properties
Default value
gwen {
report {
stepDef {
indent {
pixels = 20
}
}
}
}
Default value
{
"gwen": {
"report": {
"stepDef": {
"indent": {
"pixels": 20
}
}
}
}
}
Default value
gwen.report.stepDef.indent.pixels = 20
gwen.console.log.colors
Controls whether to use ANSI colors to highlight Gherkin keywords and evaluation results in the console report output.
gwen.console.log.colors
Supported values
true
to use colors (default)false
to not use colors
- conf
- json
- properties
Default value
gwen {
console {
log {
colors = true
}
}
}
Default value
{
"gwen": {
"console": {
"log": {
"colors": true
}
}
}
}
Default value
gwen.console.log.colors = true
gwen.console.log.depth
Controls the step logging depth in the console report output at evaluation time (excluding dry run mode which unconditionally logs all levels as of v3.41.0)
gwen.console.log.depth
Supported values
A positive integer representing the step depth to log to (default =
1
)or
infinity
to log to all depths
- conf
- json
- properties
Default value
gwen {
console {
log {
depth = 1
}
}
}
To log all depths:
gwen {
console {
log {
depth = "infinity"
}
}
}
Default value
{
"gwen": {
"console": {
"log": {
"depth": 1
}
}
}
}
To log all depths:
{
"gwen": {
"console": {
"log": {
"depth": "infinity"
}
}
}
}
Default value
gwen.console.log.depth = 1
To log all depths:
gwen.console.log.depth = infinity
gwen.console.repl.autoSuggestions
Controls whether or not auto suggestions based on user history are enabled or not in the REPL console.
gwen.console.repl.autoSuggestions
Supported values
true
to enable auto suggestions (default)false
to disable auto suggestions
- conf
- json
- properties
Default value
gwen {
console {
repl {
autoSuggestions = true
}
}
}
Default value
{
"gwen": {
"console": {
"repl": {
"autoSuggestions": true
}
}
}
}
Default value
gwen.console.repl.autoSuggestions = true
gwen.console.repl.tabCompletion
Controls whether or not tab completion is enabled or not in the REPL console.
gwen.console.repl.tabCompletion
Supported values
true
to enable tab completion (default)false
to disable tab completion
- conf
- json
- properties
Default value
gwen {
console {
repl {
tabCompletion = true
}
}
}
Default value
{
"gwen": {
"console": {
"repl": {
"tabCompletion": true
}
}
}
}
Default value
gwen.console.repl.tabCompletion = true
gwen.report.suppress.meta
Controls whether or not to suppress meta from generated HTML reports.
gwen.report.suppress.meta
Supported values
true
to suppress meta (default)false
to include meta
- conf
- json
- properties
Default value since v3.0.0
gwen {
report {
suppress {
meta = true
}
}
}
Default value in prior versions
gwen {
report {
suppress {
meta = false
}
}
}
Default value since v3.0.0
{
"gwen": {
"report": {
"suppress": {
"meta": true
}
}
}
}
Default value in prior versions
{
"gwen": {
"report": {
"suppress": {
"meta": false
}
}
}
}
Default value since v3.0.0
gwen.report.suppress.meta = true
Default value in prior versions
gwen.report.suppress.meta = false
gwen.report.slideshow.framespersecond
Sets the default number of frames per second to set the image playback speed to in generated slideshows.
gwen.report.slideshow.framespersecond
Supported values
- A positive integer denoting the number of frames per second (default =
4
)
- conf
- json
- properties
Default value
gwen {
report {
slideshow {
framespersecond = 4
}
}
}
Default value
{
"gwen": {
"report": {
"slideshow": {
"framespersecond": 4
}
}
}
}
Default value
gwen.report.slideshow.framespersecond = 4
gwen.state.level
Controls whether to maintain state at the feature or scenario level.
gwen.state.level
Supported values
feature
for feature level state that is shared across scenarios in a feature (each feature gets a new state) (default)scenario
for scenario level state that is not shared across scenarios (each scenario gets a new state)
- conf
- json
- properties
Default value
gwen {
state {
level = "feature"
}
}
Default value
{
"gwen": {
"state": {
"level": "feature"
}
}
}
Default value
gwen.state.level = feature
gwen.video.dir
Sets the output directory for video recordings.
gwen.video.dir
Video capture is currently only supported in Docker with Selenoid.
This setting is used to set the host directory mounted to /opt/selenoid/video
in docker where the Selenoid video-recorder
will write video files to. If you mount this directory to a different location other than the default,
then you will need to explicitly configure it to match.
Supported values
- A relative or absolute directory location (default =
${gwen.outDir}/.video
)
- conf
- json
- properties
Default value
gwen {
video {
dir = ${gwen.outDir}/.video
}
}
Default value
{
"gwen": {
"video": {
"dir": "${gwen.outDir}/.video"
}
}
}
Default value
gwen.web.dir = ${gwen.outDir}/.video
gwen.video.timeoutSecs
Sets the number of seconds wait for video files to be ready when including them in generated HTML reports.
gwen.video.timeoutSecs
Video capture is currently only supported in Docker with Selenoid. This setting is used to set the maximum time to wait for video files to be asynchronously written out to the host directory by the Selenoid video recorder after a browser session is closed. If the video files in your environment take longer than the default, then you will need to explicitly configure this setting to a higher value.
Supported values
- A number of seconds wo wait (default =
10
)
- conf
- json
- properties
Default value
gwen {
video {
timeoutSecs = 10
}
}
Default value
{
"gwen": {
"video": {
"timeoutSecs": 10
}
}
}
Default value
gwen.web.timeoutSecs = 10
gwen.logLevel.deprecations
Controls how deprecation messages are reported.
gwen.logLevel.deprecations
Supported values
warn
to log deprecations as warningserror
to raise and report deprecations as errorsnone
to suppress logging or reporting of deprecation messages (no operation)
- conf
- json
- properties
Default value
gwen {
logLevel {
deprecations = "error"
}
}
Default value
{
"gwen": {
"logLevel": {
"deprecations": "error"
}
}
}
Default value
gwen.logLevel.deprecations = error
gwen.input.data.readOnly
Enables or disables read-only mode for all data sourced from input files. This setting has no effect in REPL mode where read-only is not enforced.
gwen.input.data.readOnly
gwen.reports.results.files
Controls how CSV result files are generated.
gwen.reports.results.files
See CSV Reports for details.
Web Settings
gwen.web.assertions.delayMillisecs
Sets the time to delay all assertion attempts.
gwen.web.assertions.delayMillisecs
Supported values
- A number greater than zero denoting the number of milliseconds to delay each assertion attempt (default =
200
).
- conf
- json
- properties
Default value
gwen {
web {
assertions {
delayMillisecs = 200
}
}
}
Default value
{
"gwen": {
"web": {
"assertions": {
"delayMillisecs": 200
}
}
}
}
Default value
gwen.web.assertions.delayMillisecs = 200
gwen.web.assertions.maxStrikes
Sets the maximum number of consecutive strikes an assertion can make within a timeout period before it is considered failed and reported.
gwen.web.assertions.maxStrikes
Supported values
- A number greater than zero denoting the maximum number of consecutive strikes to permit. You can tweak this value to optimise performance.
infinity
to continually retry on every strike until the assertion passes or the timeout period expires (sub optimal performance)auto
to let Gwen decide (default), Since v3.52.0- Since 3.52.0, Gwen sets this to the same value configured in gwen.web.wait.seconds. For example, if your configured timeout is 10 seconds, then your max strike count will be 10.
- This might change in future to use smarter approaches as Gwen evolves
- conf
- json
- properties
Default value (since v3.52.0)
gwen {
web {
assertions {
maxStrikes = auto
}
}
}
Default value (since v3.42.9)
gwen {
web {
assertions {
maxStrikes = 5
}
}
}
Default value (since v3.41.0)
gwen {
web {
assertions {
maxStrikes = 3
}
}
}
Default value in prior versions
gwen {
web {
assertions {
maxStrikes = infinity
}
}
}
Default value (since v3.52.0)
{
"gwen": {
"web": {
"assertions": {
"maxStrikes": "auto"
}
}
}
}
Default value (since v3.42.9)
{
"gwen": {
"web": {
"assertions": {
"maxStrikes": 5
}
}
}
}
Default value (since v3.41.0)
{
"gwen": {
"web": {
"assertions": {
"maxStrikes": 3
}
}
}
}
Default value in prior versions
{
"gwen": {
"web": {
"assertions": {
"maxStrikes": "inifinity"
}
}
}
}
Default value (since v3.52.0)
gwen.web.assertions.maxStrikes = auto
Default value (since v3.42.9)
gwen.web.assertions.maxStrikes = 5
Default value (since v3.41.0)
gwen.web.assertions.maxStrikes = 3
Default value in prior versions
gwen.web.assertions.maxStrikes = infinity
gwen.target.browser
Sets the default browser to target when Gwen is launched. Chrome, Firefox, Safari and Edge are supported.
Formerly gwen.web.browser
(prior to v3.0.0)
gwen.target.browser
Formerly
gwen.web.browser
(prior to v3.0.0)Supported values
The name of the browser settings file (minus extension) in your gwen/browsers folder to load if no other browser settings file is explicitly passed via the
-c/--config
launch optionchrome
for Chrome browser (default)firefox
for Firefox browsersafari
for Safari browseredge
for Edge browser, since v2.35.0
- conf
- json
- properties
Default value
gwen {
target {
browser = "chrome"
}
}
Default value
{
"gwen": {
"target": {
"browser": "chome"
}
}
}
Default value
gwen.target.browser = chrome
gwen.target.env
Sets the environment settings to load when Gwen is launched.
gwen.target.env
Supported values
The name of the environment settings file (minus extension) in your gwen/env folder to load if no other environment settings file is explicitly passed via the
-c/--config
launch optionlocal
for your local development environmentdev
for your dedicated development environmenttest
for your dedicated test environment (default)staging
for your dedicated staging environmentprod
for your production environment- Or the name of any other environment file you may create in your gwen/env folder
- conf
- json
- properties
Default value (since v3.41.0)
gwen {
target {
env = "test"
}
}
Default value in prior versions
gwen {
target {
env = "local"
}
}
Default value (since v3.41.0)
{
"gwen": {
"target": {
"env": "test"
}
}
}
Default value in prior versions
{
"gwen": {
"target": {
"env": "local"
}
}
}
Default value (since v3.41.0)
gwen.target.env = test
Default value in prior versions
gwen.target.env = local
gwen.web.browser.headless
Controls whether or not to run the browser in headless mode.
gwen.web.browser.headless
Supported values
true
to run headlessfalse
to not run headless (default)
Notes
- conf
- json
- properties
Default value
gwen {
web {
browser {
headless = false
}
}
}
Default value
{
"gwen": {
"web": {
"browser": {
"headless": false
}
}
}
}
Default value
gwen.web.browser.headless = false
gwen.web.browser.size
Sets the size of the browser window.
gwen.web.browser.size
Supported values
String of format
<width> x <height>
, where:<width>
is a positive integer denoting the desired width<height>
is a positive integer denoting the desired height
This setting has no default value and will not be honoured if gwen.web.maximize
is set to true
.
- conf
- json
- properties
Example
gwen {
web {
browser {
size = "1200x800"
}
}
}
Example
{
"gwen": {
"web": {
"browser": {
"size": "1200x800"
}
}
}
}
Example
gwen.web.browser.size = 1200x800
gwen.web.capability.<capabilities>
or Since v3.23.0 (preferred)
gwen.web.capabilities.<capabilities>
Sets a one or more web capabilities on the underlying web driver (including W3C protocol extensions).
gwen.web.capability.<capabilities>
gwen.web.capabilities.<capabilities>
Where
<capabilities>
can include one more standard, browser specific or vendor specific capabilities.- Standard capabilities at top level
Nested browser and vendor specific capabilities (protocol extensions)
- Chrome capabilities inside a
goog:chromeOptions
block - Edge capabilities inside a
ms:edgeOptions
block - Firefox capabilities inside a
moz:firefoxOptions
block - Selenoid capabilities inside a
selenoid:options
block - BrowserStack capabilities inside a
bstack:options
block - LambdaTest capabilities inside a
LT:Options
block - And similarly for other vendors. See vendor documentation for nested block (protocol key) name
- Chrome capabilities inside a
- conf
- json
- properties
Example
gwen {
web {
capabilities {
acceptInsecureCerts = false
"selenoid:options" {
enableVideo = true
}
}
}
}
Example
{
"gwen": {
"web": {
"capabilities": {
"acceptInsecureCerts": false
"selenoid:options": {
"enableVideo": true
}
}
}
}
}
Example
gwen.web.capabilities.acceptInsecureCerts = false
gwen.web.capabilities.selenoid\:options.enableVideo = true
gwen.web.capture.screenshots.enabled
Controls whether or not to capture screenshots and generate slideshow.
Formerly gwen.web.capture.screenshots
(prior to v3.0.0)
gwen.web.capture.screenshots.enabled
Formerly
gwen.web.capture.screenshots
(prior to v3.0.0)Supported values
true
to enablefalse
to disable (default)
- conf
- json
- properties
Default value
gwen {
web {
capture {
screenshots {
enabled = false
}
}
}
}
Default value
{
"gwen": {
"web": {
"capture": {
"screenshots": {
"enabled": false
}
}
}
}
}
Default value
gwen.web.capture.screenshots.enabled = false
gwen.web.capture.screenshots.highlighting
Controls whether or not to capture screenshots of element highlighting (in addition to standard screenshots).
gwen.web.capture.screenshots.highlighting
Supported values
true
to enablefalse
to disable (default)
- conf
- json
- properties
Default value
gwen {
web {
capture {
screenshots {
highlighting = false
}
}
}
}
Default value
{
"gwen": {
"web": {
"capture": {
"screenshots": {
"highlighting": false
}
}
}
}
}
Default value
gwen.web.capture.screenshots.highlighting = false
gwen.web.capture.screenshots.duplicates
Controls whether or not consecutively identical screenshots should be captured or discarded.
gwen.web.capture.screenshots.duplicates
Supported values
true
to keep duplicatesfalse
to discard duplicates (default)
- conf
- json
- properties
Default value
gwen {
web {
capture {
screenshots {
duplicates = false
}
}
}
}
Default value
{
"gwen": {
"web": {
"capture": {
"screenshots": {
"duplicates": false
}
}
}
}
}
Default value
gwen.web.capture.screenshots.duplicates = false
gwen.web.highlight.style
Sets the HTML styling used to highlight elements that Gwen interacts with.
gwen.web.highlight.style
Supported values
- HTML style strings (default =
background: yellow; border: 2px solid gold;
)
- conf
- json
- properties
Default value
gwen {
web {
highlight {
style = "background: yellow; border: 2px solid gold;"
}
}
}
Default value
{
"gwen": {
"web": {
"highlight": {
"style": "background: yellow; border: 2px solid gold;"
}
}
}
}
Default value
gwen.web.highlight.style = background: yellow; border: 2px solid gold;
gwen.web.implicit.element.focus
Controls whether or not Gwen should shift the focus onto elements before interacting with them.
gwen.web.implicit.element.focus
Supported values
true
to enable auto focus (default)false
to disable auto focus
- conf
- json
- properties
Default value
gwen {
web {
implicit {
element {
focus = true
}
}
}
}
Default value
{
"gwen": {
"web": {
"implicit": {
"element": {
"focus": true
}
}
}
}
}
Default value
gwen.web.implicit.element.focus = true
gwen.web.implicit.element.moveTo
Controls whether or not Gwen should physically move to elements to bring them into view before interacting with them.
gwen.web.implicit.element.moveTo
Supported values
true
to enable auto move tofalse
to disable auto move to (default)
- conf
- json
- properties
Default value
gwen {
web {
implicit {
element {
moveTo = false
}
}
}
}
Default value
{
"gwen": {
"web": {
"implicit": {
"element": {
"moveTo": false
}
}
}
}
}
Default value
gwen.web.implicit.element.moveTo = false
gwen.web.locator.wait.seconds
Sets the maximum number of seconds that Gwen should wait when locating web elements before timing out.
gwen.web.locator.wait.seconds
Supported values
- A positive integer denoting a number of seconds (default =
gwen.web.wait.seconds
= 10)
- conf
- json
- properties
Default value
gwen {
web {
locator {
wait {
seconds = ${gwen.web.wait.seconds}
}
}
}
}
Default value
{
"gwen": {
"web": {
"locator": {
"wait": {
"seconds": ${gwen.web.wait.seconds}
}
}
}
}
}
Default value
gwen.web.locator.wait.seconds = ${gwen.web.wait.seconds}
gwen.web.maximize
Controls whether or not the web driver should maximize the browser window.
gwen.web.maximize
gwen.web.remote.localFileDetector
Controls whether or not the local file detector on remote web driver will be enabled.
gwen.web.remote.localFileDetector
Supported values
auto
to automatically enable for remote driver sessions only (default)true
to enablefalse
to disable
This setting is ignored if gwen.web.remote.url
is not set.
- conf
- json
- properties
Default value
gwen {
web {
remote {
localFileDetector = auto
}
}
}
Default value
{
"gwen": {
"web": {
"remote": {
"localFileDetector": "auto"
}
}
}
}
Default value
gwen.web.remote.localFileDetector = auto
gwen.web.remote.url
Remote web driver url for connecting to a selenium grid server.
gwen.web.remote.url
gwen.web.remote.sessionRetries
Controls whether or not to retry failed remote session creation attempts.
gwen.web.remote.sessionRetries
Supported values
true
to retryfalse
to not retryauto
to retry only for remote sessions and whengwen-web-remote-url
is set (default)
When enabled, the number of retry attempts is determined by the number of available CPU cores divided by 4. The first failed attempt waits 1 second, the next 2 seconds, the next 3 seconds and so on until all attempts are exhausted.
- conf
- json
- properties
Example
gwen {
web {
remote {
sessionRetries = auto
}
}
}
Example
{
"gwen": {
"web": {
"remote": {
"sessionRetries": "auto"
}
}
}
}
Example
gwen.web.remote.sessionRetries = auto
gwen.web.sendKeys.clearFirst
Controls whether or not Gwen will clear input fields before sending keys to them.
gwen.web.sendKeys.clearFirst
gwen.web.sendKeys.clickFirst
Controls whether or not Gwen will click input fields before sending keys to them.
gwen.web.sendKeys.clickFirst
gwen.web.throttle.msec
Sets the number of milliseconds to wait between web driver interactions and also directly controls web element highlighting duration.
gwen.web.throttle.msec
Supported values
- A positive integer denoting a number of milliseconds. Set to zero for maxmum speed with no highlighting (default =
100
).
- conf
- json
- properties
Default value
gwen {
web {
throttle {
msec = 100
}
}
}
Default value
{
"gwen": {
"web": {
"throttle": {
"msec": 100
}
}
}
}
Default value
gwen.web.throttle.msec = 100
gwen.web.useragent
Sets the user agent header in the browser to the literal string value assigned.
gwen.web.useragent
Supported values
- User agent string
- conf
- json
- properties
Example
gwen {
web {
useragent = "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"
}
}
Example
{
"gwen": {
"web": {
"useragent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"
}
}
}
Example
gwen.web.useragent = Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19
gwen.web.wait.seconds
Sets the default maximum number of seconds that Gwen should wait for time senstive operations before timing out.
gwen.web.wait.seconds
Chrome
gwen.web.chrome.args
A chrome preference value.
gwen.web.chrome.args
Supported values
Notes
- conf
- json
- properties
Example
gwen {
web {
chrome {
args = [
"--ignore-certificate-errors"
"--incognito"
]
}
}
}
Example
{
"gwen": {
"web": {
"chrome": {
"args": [
"--ignore-certificate-errors",
"--incognito"
]
}
}
}
}
Example (multiple values comma separated)
gwen.web.chrome.args = --ignore-certificate-errors,--incognito
gwen.web.chrome.args.<seqNo>
Passes an argument to the Chrome web driver.
gwen.web.chrome.args.<seqNo>
Where
<seqNo>
is a unique sequence number
Supported values
- conf
- json
- properties
Use gwen.web.chrome.args
instead.
Use gwen.web.chrome.args
instead.
Example
gwen.web.chrome.args.1=--ignore-certificate-errors
gwen.web.chrome.args.2=--window-size=1920,1080
gwen.web.chrome.extensions
A chrome preference value.
gwen.web.chrome.extensions
Supported values
- A relative or absolute file path to an extension (.crx) file or directory
Notes
- conf
- json
- properties
Example
gwen {
web {
chrome {
extensions = [
"path/to/extenstion.crx"
]
}
}
}
Example
{
"gwen": {
"web": {
"chrome": {
"extensions": [
"path/to/extenstion.crx"
]
}
}
}
}
Example (use comma seaprated value for multiple entries)
gwen.web.chrome.extensions = path/to/extenstion.crx
gwen.web.chrome.mobile.<emulation>
Mobile emulation for Chrome.
gwen.web.chrome.mobile.<emulation>
Where
<emulation>
can be one or more of:deviceName
for the device namewidth
for the device widthheight
for the device heightpixelRatio
for the device pixel ratiotouch
for the device touch mode
- conf
- json
- properties
Example emulating by name
gwen {
web {
chrome {
mobile {
deviceName = "Pixel 2"
}
}
}
}
Example emulating by metrics
gwen {
web {
chrome {
mobile {
width = 360
height = 640
pixelRatio = 3.0
touch = true
}
}
}
}
Example emulating by name
{
"gwen": {
"web": {
"chrome": {
"mobile": {
"deviceName": "Pixel 2"
}
}
}
}
}
Example emulating by metrics
{
"gwen": {
"web": {
"chrome": {
"mobile": {
"width": 360,
"height": 640,
"pixelRatio": 3.0,
"touch": true
}
}
}
}
}
Example emulating by name
gwen.web.chrome.mobile.deviceName = Pixel 2
Example emulating by metrics
gwen.web.chrome.mobile.width = 360
gwen.web.chrome.mobile.height = 640
gwen.web.chrome.mobile.pixelRatio = 3.0
gwen.web.chrome.mobile.touch = true
gwen.web.chrome.path
Overrides the path to the default system Chrome browser binary.
gwen.web.chrome.path
Supported values
The path the the Chrome application.
- On macOS, this should be the actual binary, not just the app (e.g., /Applications/Google Chrome.app/Contents/MacOS/Google Chrome).
- conf
- json
- properties
Example
gwen {
web {
chrome {
path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
}
}
Example
{
"gwen": {
"web": {
"chrome": {
"path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
}
}
}
Example
gwen.web.chrome.path = /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
gwen.web.chrome.prefs
A chrome preference value.
gwen.web.chrome.prefs
Supported values
Notes
- conf
- json
- properties
Example
gwen {
web {
chrome {
prefs {
download {
default_directory = path/to/dir
prompt_for_download = false
}
}
}
}
}
Example
{
"gwen": {
"web": {
"chrome": {
"prefs": {
"download": {
"default_directory": "path/to/dir",
"prompt_for_download": false
}
}
}
}
}
}
Example (multiple values comma separated)
gwen.web.chrome.prefs = download.default_directory=path/to/dir,download.prompt_for_download=false
gwen.web.chrome.pref.<name>
Sets a Chrome preference.
gwen.web.chrome.pref.<name>
Where
<name>
is a supported Chrome preference name
Supported values
- A preference value
- conf
- json
- properties
Use gwen.web.chrome.prefs
instead.
Use gwen.web.chrome.prefs
instead.
Example
gwen.web.chrome.pref.download.default_directory = path/to/dir
gwen.web.chrome.pref.download.prompt_for_download = false
Edge
gwen.web.edge.args
A chrome preference value.
gwen.web.edge.args
Supported values
Notes
- conf
- json
- properties
Example
gwen {
web {
edge {
args = [
"--ignore-certificate-errors"
"--incognito"
]
}
}
}
Example
{
"gwen": {
"web": {
"edge": {
"args": [
"--ignore-certificate-errors",
"--incognito"
]
}
}
}
}
Example (multiple values comma separated)
gwen.web.edge.args = --ignore-certificate-errors,--incognito
gwen.web.edge.args.<seqNo>
Passes an argument to the Edge web driver.
gwen.web.edge.args.<seqNo>
Where
<seqNo>
is a unique sequence number
Supported values
- conf
- json
- properties
Use gwen.web.edge.args
instead.
Use gwen.web.edge.args
instead.
Example
gwen.web.edge.args.1=--ignore-certificate-errors
gwen.web.edge.args.2=--window-size=1920,1080
gwen.web.edge.extensions
A chrome preference value.
gwen.web.edge.extensions
Supported values
- A relative or absolute file path to an extension (.crx) file or directory
Notes
- conf
- json
- properties
Example
gwen {
web {
edge {
extensions = [
"path/to/extenstion.crx"
]
}
}
}
Example
{
"gwen": {
"web": {
"edge": {
"extensions": [
"path/to/extenstion.crx"
]
}
}
}
}
Example (use comma seaprated value for multiple entries)
gwen.web.edge.extensions = path/to/extenstion.crx
gwen.web.edge.mobile.<emulation>
Mobile emulation for Edge.
gwen.web.edge.mobile.<emulation>
Where
<emulation>
can be one or more of:deviceName
for the device namewidth
for the device widthheight
for the device heightpixelRatio
for the device pixel ratiotouch
for the device touch modeuserAgent
for the device user agent
- conf
- json
- properties
Example emulating by name
gwen {
web {
edge {
mobile {
deviceName = "Pixel 2"
}
}
}
}
Example emulating by metrics
gwen {
web {
edge {
mobile {
width = 360
height = 640
pixelRatio = 3.0
touch = true
}
}
}
}
Example emulating by name
{
"gwen": {
"web": {
"edge": {
"mobile": {
"deviceName": "Pixel 2"
}
}
}
}
}
Example emulating by metrics
{
"gwen": {
"web": {
"edge": {
"mobile": {
"width": 360,
"height": 640,
"pixelRatio": 3.0,
"touch": true
}
}
}
}
}
Example emulating by name
gwen.web.edge.mobile.deviceName = Pixel 2
Example emulating by metrics
gwen.web.edge.mobile.width = 360
gwen.web.edge.mobile.height = 640
gwen.web.edge.mobile.pixelRatio = 3.0
gwen.web.edge.mobile.touch = true
gwen.web.edge.path
Overrides the path to the default system Edge browser binary.
gwen.web.edge.path
Supported values
The path the the Edge application.
- On macOS, this should be the actual binary.
- conf
- json
- properties
Example
gwen {
web {
edge {
path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
}
}
Example
{
"gwen": {
"web": {
"edge": {
"path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
}
}
}
Example
gwen.web.edge.path = C:/Program Files (x86)/Microsoft/Edge Dev/Application/msedge.exe
gwen.web.edge.prefs
A chrome preference value.
gwen.web.edge.prefs
Supported values
Notes
- conf
- json
- properties
Example
gwen {
web {
edge {
prefs {
download {
default_directory = path/to/dir
prompt_for_download = false
}
}
}
}
}
Example
{
"gwen": {
"web": {
"edge": {
"prefs": {
"download": {
"default_directory": "path/to/dir",
"prompt_for_download": false
}
}
}
}
}
}
Example (multiple values comma separated)
gwen.web.edge.prefs = download.default_directory=path/to/dir,download.prompt_for_download=false
gwen.web.edge.pref.<name>
Sets a Edge preference.
gwen.web.edge.pref.<name>
Where
<name>
is a supported Edge preference name
Supported values
- A preference value
- conf
- json
- properties
Use gwen.web.edge.prefs
instead.
Use gwen.web.edge.prefs
instead.
Example
gwen.web.edge.pref.download.default_directory = path/to/dir
gwen.web.edge.pref.download.prompt_for_download = false
Firefox
gwen.web.firefox.prefs
A chrome preference value.
gwen.web.firefox.prefs
Supported values
- Firefox preferences (for full list, visit
about:config
in your Firefox browser)
Notes
- conf
- json
- properties
Example
gwen {
web {
firefox {
prefs {
browser {
download {
useDownloadDir = false
loglevel = Error
}
}
}
}
}
}
Example
{
"gwen": {
"web": {
"firefox": {
"prefs": {
"browser": {
"download": {
"useDownloadDir": false,
"loglevel": "Error"
}
}
}
}
}
}
}
Example (multiple values comma separated)
gwen.web.firefox.prefs = browser.download.useDownloadDir=false,browser.download.loglevel=Error
gwen.web.firefox.pref.<name>
Sets a Firefox preference.
gwen.web.firefox.pref.<name>
Where
<name>
is a Firefox preference name
Supported values
- Firefox preferences (for full list, visit
about:config
in your Firefox browser)
- conf
- json
- properties
Use gwen.web.firefox.prefs
instead.
Use gwen.web.firefox.prefs
instead.
Example
gwen.web.firefox.pref.browser.download.useDownloadDir = false
gwen.web.firefox.pref.browser.download.loglevel = Error
gwen.web.suppress.images
Controls whether or not image rendering should be suppressed in the browser (firefox only).
gwen.web.suppress.images
Masked Settings
Since v2.48.0
It is a common security practice to never log sensitive data. To support this practice, Gwen will hide all settings that you flag as "masked" by logging their values as *****
in all logs, reports, error messages and console outputs.
Flagging masked settings
To flag a setting as masked, append :masked
to its defined name.
For example, to access a password stored in an environment variable named USER_PASSOWRD
, you can read it into a masked setting named user.password
as follows:
- conf
- json
- properties
user {
"password:masked" = "${env.USER_PASSWORD}"
}
{
"user": {
"password:masked": "${env.USER_PASSWORD}"
}
}
user.password\:masked = ${env.USER_PASSWORD}
Note: You will need to escape :
as \:
in properties files
Using masked settings
To use a masked setting, just reference it anywhere you need to using it's name (excluding the :masked
suffix).
Example:
When I enter "${user.password}" in the password field
When evaluated, the above will be logged as follows in all outputs:
When I enter "*****" in the password field
Console output
HTML report output
It is your resposibility to enter sensitive data such as passwords into password protected fields to prevent them from being displayed in the browser.
Custom mask character
You can change the default mask character from *
to another character of your choice by assigning it to the gwen.mask.char
setting.
Masked Data Bindings
Values returned by data bindings in the following DSLs can also be masked with the @Masked
annotation:
<name> is defined by <javascript|js> "<script>"
<name> is defined by <javascriptRef> applied to "<argument>"
<name> is defined by <javascriptRef> applied to "<arguments>" delimited by "<delimiter>"
<name> is defined by system process "<expression>"
<name> is defined by system process "<expression>" delimited by "<delimiters>"
<name> is defined by unix system process "<expression>"
<name> is defined by the <nodeType> in <xmlRef> by xpath "<expression>"
<name> is defined in <textRef> by regex "<expression>"
<name> is defined in <jsonRef> by json path "<expression>"
<name> is defined in the <dbName> database by sql "<selectStmt>"
JSONArray Notation
Since v3.53.0
Lists can be stored in settings in various ways. For example, a list of values could be stored in your settings file as follows:
- conf
- json
- properties
my {
values = [
"Gwen"
"Jenkins"
"Yarn"
"Docker"
]
}
{
"my": {
"values": [
"Gwen",
"Jenkins",
"Yarn",
"Docker"
]
}
}
my.values = Gwen,Jenkins,Yarn,Docker
To access a list of values configured in your settings as a JSON array, append :JSONArray
to its setting name in the placeholder references in your feature or meta steps. A JSON array literal containing the values will then be expanded inline.
Example 1
The following will bind the JSON Array ["Gwen","Jenkins","Yarn","Docker"]
to the values
variable in the current scope:
Given values is "${my.values:JSONArray}"
Will expand to:
Given values is "["Gwen","Jenkins","Yarn","Docker"]"
Example 2
The following will inline the JSON Array into a JavaScript expression to get the length and store that in the length
variable in the current scope:
Given length is defined by js "${my.values:JSONArray}.length"
Then length should be "4"
Will expand to:
Given length is defined by js "["Gwen","Jenkins","Yarn","Docker"].length"
Then length should be "4"