Top Banner
behat
102

Behat 3.0 meetup (March)

May 10, 2015

Download

Technology

Slides from the presentation of behat v3 in London
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Behat 3.0 meetup (March)

behat

Page 2: Behat 3.0 meetup (March)

current state

Page 3: Behat 3.0 meetup (March)

468 631 installssince v2.2 (2011-12-14)

Page 4: Behat 3.0 meetup (March)

SyliusOpenSource E-commerce framework

Page 5: Behat 3.0 meetup (March)

akeneoOpenSource PIM framework

Page 6: Behat 3.0 meetup (March)

OpenScholarOpenSource site builder for academic institutions

Page 7: Behat 3.0 meetup (March)

Drupal.orgBig migration driven by Melissa Anderson

Page 8: Behat 3.0 meetup (March)

INVIQAEnterprise OpenSource agency

Page 9: Behat 3.0 meetup (March)

The BDD in PHP is big!

Page 10: Behat 3.0 meetup (March)

Behat

Page 11: Behat 3.0 meetup (March)
Page 12: Behat 3.0 meetup (March)
Page 13: Behat 3.0 meetup (March)
Page 14: Behat 3.0 meetup (March)
Page 15: Behat 3.0 meetup (March)

1. parallel execution

Page 16: Behat 3.0 meetup (March)
Page 17: Behat 3.0 meetup (March)

2. growing contexts

Page 18: Behat 3.0 meetup (March)

– Me

“Context class is your domain dictionary for a specific actor”

Page 19: Behat 3.0 meetup (March)

– Me

“There’s only one context class for all your features.”

Page 20: Behat 3.0 meetup (March)
Page 21: Behat 3.0 meetup (March)

3. actor-based definitions

Page 22: Behat 3.0 meetup (March)

3 problems, 1 solution

Page 23: Behat 3.0 meetup (March)

you should be able to test features against different

contexts

Page 24: Behat 3.0 meetup (March)

v2.x architecture

Page 25: Behat 3.0 meetup (March)

profile

Page 26: Behat 3.0 meetup (March)

profile

.feature #1

Page 27: Behat 3.0 meetup (March)

profile

.feature #1

.feature #2

.feature #3

Page 28: Behat 3.0 meetup (March)

profile

.feature #1

.feature #2

.feature #3

Your Context class (+ Sub-Context classes)

Page 29: Behat 3.0 meetup (March)

Context class !

definitions transformations

hooks

Page 30: Behat 3.0 meetup (March)

Context class !

definitions transformations

hooksBehat

Page 31: Behat 3.0 meetup (March)

Context class !

definitions transformations

hooksBehat

Page 32: Behat 3.0 meetup (March)
Page 33: Behat 3.0 meetup (March)

profile

Page 34: Behat 3.0 meetup (March)

profile

suite #1

Page 35: Behat 3.0 meetup (March)

profile

suite #1

suite #2

Page 36: Behat 3.0 meetup (March)

Suite is a collection of features and their

test configuration

Page 37: Behat 3.0 meetup (March)

profile

suite #1

suite #2

.feature #1

.feature #2

Your Context class

Page 38: Behat 3.0 meetup (March)

profile

suite #1

suite #2

.feature #1

.feature #2

Your Context class

.feature #3

.feature #4

Your other Context class

Page 39: Behat 3.0 meetup (March)

profile

suite #1

suite #2

.feature #1

.feature #2

Your Context class

.feature #1

.feature #2

Your other Context class

Page 40: Behat 3.0 meetup (March)

suite configthrough behat.yml

Page 41: Behat 3.0 meetup (March)

suite configthrough behat.yml

Page 42: Behat 3.0 meetup (March)

stop! demo time.

Page 43: Behat 3.0 meetup (March)

contexts

Page 44: Behat 3.0 meetup (March)

profile

suite #1

suite #2

.feature #1

.feature #2

Your Context class

.feature #1

.feature #2

Your other Context class

Page 45: Behat 3.0 meetup (March)

profile

suite #1

suite #2

.feature #1

.feature #2

Your Context classes

.feature #1

.feature #2

Your other Context classes

Page 46: Behat 3.0 meetup (March)

contexts configthrough behat.yml

Page 47: Behat 3.0 meetup (March)

contexts configthrough behat.yml

Page 48: Behat 3.0 meetup (March)

demo

Page 49: Behat 3.0 meetup (March)

definitions matching

Page 50: Behat 3.0 meetup (March)

@When /^(?:|I )fill in "(?P<field>(?:[^"]|\\")*)" with "(?P<value>(?:[^"]|\\")*)"$/

Page 51: Behat 3.0 meetup (March)

regexp’s are hard

Page 52: Behat 3.0 meetup (March)

TurnipGherkin extension for RSpec

Page 53: Behat 3.0 meetup (March)

Turnip matchingthrough placeholders

Page 54: Behat 3.0 meetup (March)

@Given there is a monster called :name

Page 55: Behat 3.0 meetup (March)

@Given there is a monster called :nameGiven there is a monster called “Jake”

Page 56: Behat 3.0 meetup (March)

@Given there is a monster called :nameGiven there is a monster called “Jake” Given there is a monster called ‘Jake’

Page 57: Behat 3.0 meetup (March)

@Given there is a monster called :nameGiven there is a monster called “Jake” Given there is a monster called ‘Jake’ Given there is a monster called Jake

Page 58: Behat 3.0 meetup (March)

@Given there is a monster called :nameGiven there is a monster called “Jake” Given there is a monster called ‘Jake’ Given there is a monster called Jake

Given there is a monster called 23

Page 59: Behat 3.0 meetup (March)

@Given there is/are :count monster(s)

Page 60: Behat 3.0 meetup (March)

@Given there is/are :count monster(s)Given there is 1 monster

Page 61: Behat 3.0 meetup (March)

@Given there is/are :count monster(s)Given there is 1 monster

Given there are 5 monsters

Page 62: Behat 3.0 meetup (March)

@Given there is/are :count monster(s)Given there is 1 monster

Given there are 5 monsters Given there are no monsters

Page 63: Behat 3.0 meetup (March)

Turnip is a new default

Page 64: Behat 3.0 meetup (March)

both turnip and regex are supported

Page 65: Behat 3.0 meetup (March)

both turnip and regex are supported

inside same context class

Page 66: Behat 3.0 meetup (March)

SnippetsAcceptingContext

Page 67: Behat 3.0 meetup (March)

demo

Page 68: Behat 3.0 meetup (March)

Hooks are the 1st class citizens

Page 69: Behat 3.0 meetup (March)

hooks blowupin v2.x

Page 70: Behat 3.0 meetup (March)

demo

Page 71: Behat 3.0 meetup (March)

Formatters

Page 72: Behat 3.0 meetup (March)

rewritten from scratch

Page 73: Behat 3.0 meetup (March)

outline shows step that failed

Page 74: Behat 3.0 meetup (March)

outline steps expand

Page 75: Behat 3.0 meetup (March)

and 1000 other small improvements

Page 76: Behat 3.0 meetup (March)

output buffering

Page 77: Behat 3.0 meetup (March)

$this->printDebug(‘…’)

Page 78: Behat 3.0 meetup (March)

demo

Page 79: Behat 3.0 meetup (March)

Error handling levels

Page 80: Behat 3.0 meetup (March)

-v

Page 81: Behat 3.0 meetup (March)

exception handlingwith Mink or other integrations

Page 82: Behat 3.0 meetup (March)

exception handlingwith standard exceptions

Page 83: Behat 3.0 meetup (March)

-v is not --vv

Page 84: Behat 3.0 meetup (March)

how

Page 85: Behat 3.0 meetup (March)

continuous integrationthrough TravisCI

Page 86: Behat 3.0 meetup (March)

continuous integrationthrough Scrutinizer

Page 87: Behat 3.0 meetup (March)

v3in one picture

Page 88: Behat 3.0 meetup (March)

Testwork

Page 89: Behat 3.0 meetup (March)

last demo

Page 90: Behat 3.0 meetup (March)

next steps

Page 91: Behat 3.0 meetup (March)

3.0.0 rc3 releasedand it is gold version

Page 92: Behat 3.0 meetup (March)

behat.orgv2.0 is coming

Page 93: Behat 3.0 meetup (March)

extensionsupgrade

Page 94: Behat 3.0 meetup (March)

and release…

Page 95: Behat 3.0 meetup (March)

20 april

Page 96: Behat 3.0 meetup (March)

20 april 2014

Page 97: Behat 3.0 meetup (March)

big thanks to

Page 98: Behat 3.0 meetup (March)

Aslak Hellesøy

Creator of Cucumber

Page 99: Behat 3.0 meetup (March)

Christophe Coevoet

@stof

Page 100: Behat 3.0 meetup (March)
Page 101: Behat 3.0 meetup (March)
Page 102: Behat 3.0 meetup (March)

Questions?