diff --git a/doc/index.rst b/doc/index.rst index d5483f8..62d535c 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -9,48 +9,24 @@ and languages provide functional testing tools. Today we’ll talk about how to use Behat for functional testing of web applications. `Mink `_ is a tool exactly for that and this extension provides integration for it. -Basically, MinkExtension is an integration layer between Behat 2.4+ and Mink 1.4+ +Basically, MinkExtension is an integration layer between Behat 3.0+ and Mink 1.4+ and it provides: * Additional services for Behat (``Mink``, ``Sessions``, ``Drivers``). * ``Behat\MinkExtension\Context\MinkAwareContext`` which provides ``Mink`` - instance for your contexts or subcontexts. + instance for your contexts. * 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. + even used as context on its own. Installation ------------ This extension requires: -* Behat 2.4+ +* Behat 3.0+ * Mink 1.4+ -Through PHAR -~~~~~~~~~~~~ - -You should first download 3 phar archives: - -* `behat.phar `_ - Behat itself -* `mink.phar `_ - Mink framework -* `mink_extension.phar `_ - - integration extension - -After downloading and placing them into project directory, you need to -activate ``mink_extension.phar`` in your ``behat.yml``: - -.. code-block:: yaml - - # behat.yml - default: - # ... - extensions: - mink_extension.phar: - mink_loader: 'mink-VERSION.phar' - base_url: 'http://example.com' - goutte: ~ - Through Composer ~~~~~~~~~~~~~~~~ @@ -61,10 +37,10 @@ The easiest way to keep your suite updated is to use `Composer useContext('mink', new MinkContext); - } - } + default: + suites: + my_suite: + contexts: + - FeatureContext + - Behat\MinkExtension\Context\MinkContext .. note:: @@ -161,17 +122,10 @@ After installing extension, there would be 6 usage options available for you: It will cause ``RedundantException``. So, you can inherit from ``MinkContext`` only with one of your context/subcontext classes. - .. note:: - - Here, we are also extending our main context from ``RawMinkContext`` class. - This class doesn't provide any definitions or hooks - just helper methods - for you to interact with Mink. It means, that you could extend ``RawMinkContext`` - with as many context classes in your suite as you want. - -5. If you're on the php 5.4+, you can simply use ``Behat\MinkExtension\Context\MinkDictionary`` - trait inside your ``FeatureContext`` 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. +4. If you're on the php 5.4+, you can simply use ``Behat\MinkExtension\Context\MinkDictionary`` + trait inside your ``FeatureContext``. 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, and it cannot be used at the same time than the ``MinkContext``. .. code-block:: php @@ -193,10 +147,9 @@ After installing extension, there would be 6 usage options available for you: } } -6. Implementing ``Behat\MinkExtension\Context\MinkAwareContext`` with your context or its - subcontexts. +5. Implementing ``Behat\MinkExtension\Context\MinkAwareContext`` with your context. -There's common things between last 5 methods. In each of those, target context will implement +There's common things these 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 @@ -212,7 +165,7 @@ Drivers ~~~~~~~ First of all, there's drivers enabling configuration. MinkExtension comes -with support for 5 drivers out of the box: +with support for 6 drivers out of the box: * ``GoutteDriver`` - default headless driver. It is used by default, which means that if you didn't changed ``default_session`` (another parameter) - you should @@ -252,6 +205,20 @@ the following parameters to avoid the validation error triggered by Guzzle : Behat\MinkExtension\Extension: selenium2: ~ +* ``SaucelabsDriver`` - special flavor of the Selenium2Driver configured to use the + selenium2 hosted installation of saucelabs.com. You could use it by setting it in + ``javascript_session`` to ``saucelabs`` and by marking scenarios as ``@javascript`` + or simply by marking scenarios with ``mink:saucelabs`` (no need to switch + ``javascript_session`` in this case). In order to enable it, modify your ``behat.yml`` + profile: + + .. code-block:: yaml + + default: + extensions: + Behat\MinkExtension\Extension: + saucelabs: ~ + * ``SeleniumDriver`` - another javascript driver. You could use it by setting it in ``javascript_session`` to ``selenium`` and by marking scenarios as ``@javascript`` or simply by marking scenarios with ``mink:selenium`` (no need to switch @@ -300,7 +267,7 @@ the following parameters to avoid the validation error triggered by Guzzle : - GoutteDriver - ``behat/mink-goutte-driver`` - SeleniumDriver - ``behat/mink-selenium-driver`` - - WebDriver - ``behat/mink-selenium2-driver`` + - Selenium2Driver (also used for Saucelabs) - ``behat/mink-selenium2-driver`` - SahiDriver - ``behat/mink-sahi-driver`` - ZombieDriver - ``behat/mink-zombie-driver`` @@ -326,10 +293,16 @@ There's other useful parameters, that you can use to configure your suite: currently opened page into temporary file and opens it with some browser utility (for debugging). This option defines command to be used for opening. For example: ``show_cmd: 'firefox %s'``. -* ``browser_name`` - metaoption, that defines which browser to use for Sahi, +* ``show_tmp_dir`` - the temporary folder used to show the opened page (defaults + to the system temp dir) +* ``show_auto`` - Whether the opened page should be shown automatically when + a step fails. +* ``browser_name`` - meta-option, that defines which browser to use for Sahi, Selenium and Selenium2 drivers. * ``default_session`` - defines default session (driver) to be used for all - untagged scenarios. Could be any enabled driver name. + untagged scenarios. Could be any enabled driver name. Defaults to ``goutte`` * ``javascript_session`` - defines javascript session (driver) (the one, which will be used for ``@javascript`` tagged scenarios). Could be any enabled driver - name. + name. Defaults to ``selenium2`` +* ``mink_loader`` - path to a file loaded to make Mink available (useful when + using the PHAR archive for Mink, useless when using Composer)