Set "wd_host" directly in "behat.yml" instead of through "BEHAT_PARAMS"
The "wd_host" parameter of Selenium2 sessions specify the URL used by the Selenium driver to connect with the Selenium server. Thus, when the Selenium server is at a different host or port than the default one (for example, when run on Drone) the "wd_host" parameter must be set for each of the Selenium2 sessions defined in "behat.yml". The "BEHAT_PARAMS" environment variable, which extends the "behat.yml" configuration file, was used for that. However, this required adding to the "BEHAT_PARAMS" in "run-local.sh" each new session added to "behat.yml", including those added in the acceptance tests of apps. To address that limitation, this commit introduces a simulated variable, "selenium.server"; just before the acceptance tests are run the "selenium.server" variable in the "wd_host" parameter is replaced in the "behat.yml" file used by the acceptance tests. Note that the file that is modified is the one inside the Docker container used to run the acceptance tests, so the original file is not touched. Note that a simulated variable is needed because Behat does not support overridding nor setting configuration parameters with environment variables. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
parent
082646f7e5
commit
d70b6bc94b
|
@ -27,14 +27,18 @@ default:
|
|||
Behat\MinkExtension:
|
||||
sessions:
|
||||
default:
|
||||
selenium2: ~
|
||||
selenium2:
|
||||
wd_host: %selenium.server%
|
||||
John:
|
||||
selenium2: ~
|
||||
selenium2:
|
||||
wd_host: %selenium.server%
|
||||
Jane:
|
||||
selenium2: ~
|
||||
selenium2:
|
||||
wd_host: %selenium.server%
|
||||
Rubeus:
|
||||
# Rubeus uses a browser that has CSS grid support.
|
||||
selenium2:
|
||||
wd_host: %selenium.server%
|
||||
capabilities:
|
||||
firefox:
|
||||
profile: %paths.base%/firefox-profiles/css-grid-enabled.zip
|
||||
|
|
|
@ -172,32 +172,19 @@ FILE_CONTENTS=$(<$ACCEPTANCE_TESTS_CONFIG_DIR/behat.yml)
|
|||
echo "${FILE_CONTENTS//$ORIGINAL/$REPLACEMENT}" > $ACCEPTANCE_TESTS_CONFIG_DIR/behat.yml
|
||||
|
||||
if [ "$SELENIUM_SERVER" != "$DEFAULT_SELENIUM_SERVER" ]; then
|
||||
# Set the Selenium server to be used by Mink; this extends the default
|
||||
# configuration from "config/behat.yml".
|
||||
export BEHAT_PARAMS='
|
||||
{
|
||||
"extensions": {
|
||||
"Behat\\MinkExtension": {
|
||||
"sessions": {
|
||||
"default": {
|
||||
"selenium2": {
|
||||
"wd_host": "http://'"$SELENIUM_SERVER"'/wd/hub"
|
||||
}
|
||||
},
|
||||
"John": {
|
||||
"selenium2": {
|
||||
"wd_host": "http://'"$SELENIUM_SERVER"'/wd/hub"
|
||||
}
|
||||
},
|
||||
"Jane": {
|
||||
"selenium2": {
|
||||
"wd_host": "http://'"$SELENIUM_SERVER"'/wd/hub"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
# Set the Selenium server to be used by Mink. Although Mink sessions can be
|
||||
# extended through BEHAT_PARAMS this would require adding here too each new
|
||||
# session added to "behat.yml", including those added in the acceptance
|
||||
# tests of apps. Instead, the default "behat.yml" configuration file is
|
||||
# adjusted to replace the simulated "selenium.server" variable by its value
|
||||
# before the configuration file is parsed by Behat.
|
||||
ORIGINAL="wd_host: %selenium.server%"
|
||||
REPLACEMENT="wd_host: http://$SELENIUM_SERVER/wd/hub"
|
||||
# As the substitution does not involve regular expressions or multilines it
|
||||
# can be done just with Bash. Moreover, this does not require escaping the
|
||||
# regular expression characters that may appear in the URL, like "/".
|
||||
FILE_CONTENTS=$(<$ACCEPTANCE_TESTS_CONFIG_DIR/behat.yml)
|
||||
echo "${FILE_CONTENTS//$ORIGINAL/$REPLACEMENT}" > $ACCEPTANCE_TESTS_CONFIG_DIR/behat.yml
|
||||
fi
|
||||
|
||||
composer install
|
||||
|
|
Loading…
Reference in New Issue