Skip to content
This repository has been archived by the owner on May 21, 2020. It is now read-only.

Commonly used Behat testing featurs, contexts, etc.

License

Notifications You must be signed in to change notification settings

OpenBuildings/behat-common

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Behat Common

Collection of contexts and traits for writing Behat features in your Symfony projects.

Quick install:

1. Install the package through composer

Just run composer require --dev clippings/behat-common

2. Create a feature context like normal (extending RawMinkContext)

<?php

namespace AppBundle\Behat;

use TreeHouse\BehatCommon\AbstractBaseContext;
use TreeHouse\BehatCommon\CookieTrait;

class FeatureContext extends RawMinkContext
{
    // write your own step definitions here...
}

3. Configure your behat.yml to use these contexts:

default:
    # ...
    suites:
        acme:
            # ...
            contexts:
              - Behat\MinkExtension\Context\MinkContext
              - AppBundle\Behat\FeatureContext
              # Optionally, you could also include any of the following (and more!)...
              - TreeHouse\BehatCommon\CookieContext
              - TreeHouse\BehatCommon\FormContext:
                  field_container_class: my_field_container_class # defaults to 'controls' (symfony default)
              - TreeHouse\BehatCommon\MetaContext
              - TreeHouse\BehatCommon\SeoContext
              - TreeHouse\BehatCommon\SwiftmailerContext
              # Since you are using symfony you probably also need to persist some data with doctrine...?
              - TreeHouse\BehatCommon\DoctrineOrmContext:
                  default_prefix: AcmeBundle # defaults to 'AppBundle'
    extensions:
      Behat\Symfony2Extension: ~
      Behat\MinkExtension:
        base_url:         https://www.acme.dev
        sessions:
          default:
            symfony2:     ~

4. Write some scenarios:

Using the DoctrineOrmContext and SwiftmailerContext to test a sign-up scenario:

Scenario: Register an account
  When I go to "/sign-up/"
  And I fill in the following:
    | registration[email]    | foo@example.com |
    | registration[password] | 1234            |
  And I select "1" from "registration[date_of_birth][day]"
  And I select "jan." from "registration[date_of_birth][month]"
  And I select "1987" from "registration[date_of_birth][year]"
  # needed to track mails sent (see SwiftmailerContext)
  And I do not follow redirects
  And I press "Sign me up!"
  Then an email with subject "Please confirm your account" should have been sent to "foo@example.com"
  And the email body should contain "Before you can log-in, you need to confirm your e-mailaddress by clicking on the link below"
  And I should be redirected to "/login/"
  And the response status code should be 200
  And I should see "Your data has been processed, you should now click on the link in the e-mail we sent you to confirm your e-mailaddress."
  And the following user should exist:
    | email           | confirmed | profile.date_of_birth |
    | foo@example.com | 0         | 1987-01-01            |

NOTE: Both DoctrineOrmContext and PDOContext support the use of fakers in your fixtures (see https://github.com/fzaninotto/Faker), like so:

Scenario: Login with a valid email/password combination
  Given the following users exist:
    | email     | password | confirmed | first_name    | last_name    |
    | <email()> | 1234     | 1         | <firstName()> | <lastName()> |
  # ...

5. Run behat!

bin/behat features/blog.feature

About

Commonly used Behat testing featurs, contexts, etc.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%