0

I am using behat 2.4(stable), and I am trying to pass parameters into class's, that extends BehatContext class, constructor. However I get 'Unrecognized options "suites" under "behat"', with the following set up.

I am using the following behat.yml file:

default:
  suites:
    default:
      contexts:
        exampleContext:
          browser: http://localhost:8080
          browser_version: /var/tmp
  paths:
    features: %behat.paths.base%/../../
    bootstrap: %behat.paths.base%/../../
  extensions:   
    Behat\MinkExtension\Extension:
       # base_url is the URL to your dev site. Make sure you include
       # the port at the end. e.g.
       base_url: http://example.web01.com
       default_session: selenium2
       browser_name: 'chrome'
       selenium2:                    
         capabilities: { "browser": "firefox", "version": "14"}
       sites/all/libraries/extensions/DrupalBehatExtension.php: ~
  filters:
    # The default profile does not rebuild from nothing so do not run tests
    # that require a rebuild from nothing.
    tags: ~@require-rebuild
  context:
    class: DrupalContext
    parameters:
      # If you'd like to test on a clone of the actual site data set to true.
      use_test_database: false
      # If an existing test database exists then it will be used unless reset_database is set to true.
      reset_database: false
      # If you would like to clear the db and run site install on every feature
      # set to the name of an install profile, otherwise set to false.
      # If you do set this you should also set use_test_database to true.
      rebuild_on_feature: false
      # If you would like to enable a module after running site install
      rebuild_module: false
      # Set the name of the site folder to use for settings.php.
      site: dev.example.com

My class implementation is

class exampleContext extends BehatContext {


public function __construct($browser = 'ie', $browser_version = '8') {
  ...
}

How can I achieve this? The only answer I've found is the one that demands to take out the DrupalContext which is rather important.

How can i get the Parameters from Behat.yml to a php file?

Community
  • 1
  • 1
Potney Switters
  • 2,394
  • 3
  • 27
  • 45

2 Answers2

3

suites option was added in behat3. You should update version.

l3l0
  • 3,303
  • 17
  • 19
1

Try this. This is for Behat 2 not 3 though!

mySymfonyProject/composer.json:

"require": {
    "behat/behat": "2.5.*@stable",
    "behat/behat-bundle": "1.0.0",
    "behat/symfony2-extension": "1.1.2",
    "behat/mink": "1.5.0",
    "behat/mink-extension": "~1.3",
    "behat/mink-selenium2-driver": "1.1.1",
    "behat/mink-goutte-driver": "1.0.9"
},
"config": {
    "bin-dir": "bin"
},
"minimum-stability": "dev",

behat.yml

default:
    context:
        class: FeatureContext
        parameters:
            browser: 'ie'
            browser_version: '8'
    extensions:
        Behat\Symfony2Extension\Extension:
            mink_driver: true
            kernel:
                env: test
                debug: true
        Behat\MinkExtension\Extension:
            base_url: 'http://mysymfonyproject.local/app_test.php/'
            javascript_session: selenium2
            browser_name: firefox
            goutte: ~
            selenium2: ~
    paths:
        features: %behat.paths.base%/src
        bootstrap: %behat.paths.features%/Context

CONTEXT FEATURE

mySymfonyProject/src/Site/CommonBundle/Features/Context/FeatureContext.php

<?php

namespace Site\CommonBundle\Features\Context;

use Behat\MinkExtension\Context\MinkContext;

class FeatureContext extends MinkContext
{
    public function __construct($browser, $browser_version)
    {
        // Do whatever you wish with params
    }

    //And your own methods
}

TESTS

When you have feature files you can run them like this (this runs all in one go. for more info read behat doc):

bin/behat @SiteCommonBundle
BentCoder
  • 10,692
  • 17
  • 82
  • 143