to solve this it's possible to:
- Define master and slaves URL in a machine dependent files or environment variables. For example, behat.yml can be customized for every machine, with some extra params:
default: context: parameters: master_url: 'http://master_site.workstation1' slave1_url: 'http://.slave1.master_site.workstation1' slave2_url: 'http://.slave2.master_site.workstation1' extensions: Behat\MinkExtension\Extension: slave1_url: 'http://.slave1.master_site.workstation1' goutte: ~ selenium2: ~
Then, include defined param into your own FeatureContext class:
class FeatureContext extends MinkContext
{
/**
* Initializes context.
* Every scenario gets it's own context object.
*
* @param array $parameters context parameters (set them up through behat.yml)
*/
public function __construct(array $parameters)
{
$this->site_urls = array(
'master' => $parameters['master_url'],
'slave1' => $parameters['slave_url1'],
'slave2' => $parameters['slave_url2'],
);
}
Finally, define your own step:
/**
* @Then /^I should be logged in master$/
*/
public function iShouldBeLoggedInMaster()
{
$this->visit($this->site_urls['master']);
$this->assertPageContainsText('Close session');
}
An scenario with this step check with base_url for a slave site could be:
Scenario: Login as normal user
Given I am on "/user/login"
When I fill in "name" with "username"
And I fill in "pass" with "password"
And I press "Login"
Then I should see "My account"
And I should be logged in master
Then, include a new step to check if user is logged in master.