Search code examples
behatbrowserstack

Unrecognized options "suites" under "behat"


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?


Solution

  • 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