Provides integrartion layer:
- Additional services for Behat (
Mink
,Sessions
,Drivers
). Behat\MinkExtension\Context\MinkAwareInterface
which providesMink
instance for your contexts or subcontexts.- Base
Behat\MinkExtension\Context\MinkContext
context which provides base step definitions and hooks for your contexts or subcontexts. Or it could be even used as subcontext on its own.
between Behat 2.4+ and Mink 1.4+.
This extension requires:
- Behat 2.4+
- Mink 1.4+
You could download phars from:
After downloading and placing them into project directory, you need to download and
activate MinkExtension
:
-
Put downloaded phar package into folder with Behat and Mink
-
Tell Behat about extensions with
behat.yml
configuration:# behat.yml default: # ... extensions: mink_extension.phar: mink_loader: 'mink-VERSION.phar' base_url: 'http://example.com' goutte: ~ selenium2: ~
For all configuration options, check extension configuration class.
-
Set dependencies in your
composer.json
:{ "require": { ... "behat/mink-extension": "*" } }
-
Install/update your vendors:
$> curl http://getcomposer.org/installer | php $> php composer.phar install
-
Activate extension in your
behat.yml
:# behat.yml default: # ... extensions: Behat\MinkExtension\Extension: base_url: 'http://example.com' goutte: ~ selenium2: ~
After installing extension, there would be 5 usage options available for you:
- Writing features with bundled steps only. In this case, you don't need to create
boostrap/
folder or customFeatureContext
class - Behat will use defaultMinkContext
by default. - Subcontexting/extending
Behat\MinkExtension\Context\RawMinkContext
in your feature suite. This will give you ability to use preconfiguredMink
instance altogether with some convenience methods:getSession($name = null)
assertSession($name = null)
RawMinkContext
doesn't provide any hooks or definitions, so you can inherit from it in as many subcontexts as you want - you'll never getRedundantStepException
.
- Subcontexting/extending
Behat\MinkExtension\Context\MinkContext
in your feature suite. Exactly like previous option, but also provides lot of predefined step definitions out of the box. As this context provides step definitions and hooks, you can use it only once inside your feature context tree. - If you're on the php 5.4+, you can simply use
Behat\MinkExtension\Context\MinkDictionary
trait inside yourFeatureContext
or any of its subcontexts. This trait will provide all the needed methods, hooks and definitions for you to start. You can use this trait only once inside your feature context tree. - Implementing
Behat\MinkExtension\Context\MinkAwareInterface
with your context or its subcontexts. This will give you more customization options. Also, you can use this mechanism on multiple contexts avoiding the need to call parent contexts from subcontexts when only thing you need is mink instance.
There's common things between last 4 methods. In each of those, target context will implement
setMink(Mink $mink)
and setMinkParameters(array $parameters)
methods. Those methods would
be automatically called immediately after each context creation before each scenario. And
this $mink
instance will be preconfigured based on the settings you've provided in your
behat.yml
.
Concrete FeatureContext
example:
<?php
use Behat\MinkExtension\Context\MinkContext;
class FeatureContext extends MinkContext
{
/**
* @Then /^I wait for the suggestion box to appear$/
*/
public function iWaitForTheSuggestionBoxToAppear()
{
$this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");
}
}
Dictionary usage example:
<?php
use Behat\Behat\Context\BehatContext;
use Behat\MinkExtension\Context\MinkDictionary;
class FeatureContext extends BehatContext
{
use MinkDictionary;
/**
* @Then /^I wait for the suggestion box to appear$/
*/
public function iWaitForTheSuggestionBoxToAppear()
{
$this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");
}
}
For now exist 10 translated languages: cs
,de
,es
,fr
,ja
,nl
,pl
,pt
,ru
,sv
.
Note: The ja
,nl
,pt
and sv
are outdated.
If you want to translate another language, you can use as reference the ru
language file under
translations folder.
Important: The filename must match with the same translated language name in Behat and Gherkin in order to work correctly.
If the language does not exist in Gherkin. You should consider making a Pull Request to cucumber\gherkin i18n file.
Copyright (c) 2012 Konstantin Kudryashov (ever.zet). See LICENSE for details.
- Konstantin Kudryashov everzet [lead developer]
- Other awesome developers
- knpLabs knpLabs [main sponsor]