2012-05-07 14:16:05 +02:00
2012-05-06 21:13:51 +02:00
2012-05-06 21:24:26 +02:00
2012-05-06 21:13:51 +02:00
2012-05-07 10:31:51 +02:00
2012-05-06 21:53:36 +02:00
2012-05-06 21:53:36 +02:00

MinkExtension

Provides integrartion layer:

  • Additional services for Behat (Mink, Sessions, Drivers).
  • Behat\MinkExtension\Context\MinkAwareContextInterface which provides Mink 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+.

Installation

This extension requires:

  • Behat 2.4+
  • Mink 1.4+

While there is no stable versions for those packages, you could download betas from:

After downloading and placing them into project directory, you need to download and activate MinkExtension:

  1. Download extension

  2. Put downloaded phar package into folder with Behat and Mink

  3. Tell Behat about extensions with behat.yml configuration:

    # behat.yml
    defaults:
      # ...
      extensions:
        mink_extension.phar:
          mink_loader:        mink-VERSION.phar
          base_url:           http://example.com
    
          javascript_session: selenium2
    
          goutte:             ~
          selenium2:          ~
    

    For all configuration options, check extension configuration class.

Usage

After installing extension, there would be 3 usage options available for you:

  • Subcontexting/extending Behat\MinkExtension\Context\RawMinkContext in your feature suite. This will give you ability to use preconfigured Mink instance altogether with some convenience methods:

    • getSession($name = null)
    • assertSession($name = null)

    And autohook, which will switch current session based on scenario tags.

  • 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.

  • Implementing Behat\MinkExtension\Context\MinkAwareContextInterface 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 those 3 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");
    }
}

Copyright (c) 2012 Konstantin Kudryashov (ever.zet). See LICENSE for details.

Contributors

  • Konstantin Kudryashov everzet [lead developer]
  • Pascal Cremer b00giZm [ZombieDriver creator]
  • Alexandre Salomé alexandresalome [SeleniumDriver creator]
  • Pete Otaqui pete-otaqui [Selenium2Driver creator]

Sponsors

Description
Fork of FriendsOfBehat MinkExtension with Behat 4 / Symfony 8 compatibility work
Readme MIT 603 KiB
Languages
PHP 99.4%
Gherkin 0.6%