SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
1
BDD with Behat &
Drupal
Alessio Piazza
Software Developer @SparkFabrik
(twinbit + agavee)
twitter: @alessiopiazza
I do stuff with Drupal
SPARKFABRIK
3
• Behaviour Driven Development
• a software development process that emerged
from TDD (Test Driven Development)
• Behaviour driven development specifies that
tests of any unit of software should be specified
in terms of the desired behaviour of the unit
BDD
SPARKFABRIK
WHY BDD? or TDD?
• You must test your application
• Save your self from regressions (fix one thing,
break another one)
• Save your self from misunderstanding between
you and your client
• Your tests become specification
4
SPARKFABRIK
BDD Workflow
1. Write a specification feature
2. Implement its test
3. Run test and watch it FAIL
4. Change your app to make test PASS
5. Run test and watch it PASS
6. Repat from 2-5 until all GREEN
5
SPARKFABRIK
BDD: HOW IT WORKS?
6
HOW IT WORKS?
7
Write a specification feature
8
Feature: Download Drupal 8
In order to use Drupal 8
as a user
i should be able to download it from drupal.org
Scenario: Download Drupal 8 from Drupal.org
Given i am on the homepage
When i Click “Download and Extend”
Then I should see the link “Download Drupal 8.0.0”
Scenario: …
SPARKFABRIK
SCENARIO STRUCTURE
9
Scenario: Download Drupal 8 from Drupal.org
Given I am on drupal.org homepage
When I Click “Download and Extend”
Then I should see the link “Download Drupal 8.0.0”
SPARKFABRIK
SCENARIO STRUCTURE
10
Given i am on drupal.org homepage
And i Click “Download and Extend”
Then I should see the link “Download Drupal 8.0.0”
Scenario: Download Drupal 8 from Drupal.org
Keyword Description
SPARKFABRIK
SCENARIO STRUCTURE
11
Given i am on drupal.org homepage
And i Click “Download and Extend”
Then I should see the link “Download Drupal 8.0.0”
Scenario: Download Drupal 8 from Drupal.org
Keyword Description
Steps
Given I am on drupal.org homepage
When I Click “Download and Extend”
Then I should see the link “Download …”
SPARKFABRIK
STEPS: Keywords
12
Given -> To put the system in a known state
Given I am an anonymous user
SPARKFABRIK
Given
STEPS: Keywords
13
When -> To describe the key action to performs
When I click on the link
SPARKFABRIK
Given
STEPS: Keywords
14
When
Then -> To to observe outcomes
Then I should see the text “Hello”
SPARKFABRIK
Given
STEPS: Keywords
15
When
Then
And / But -> To make our scenario more readable
SPARKFABRIK
STEPS: Keywords
16
Scenario: Download Drupal 8 from Drupal.org
Given I am on drupal.org homepage
Given I am an anonymous user
When I Click “Download and Extend”
When I Click “Download Drupal 8.0.0”
Then I should see the link “Drupal Core 8.0.0”
SPARKFABRIK
STEPS: Keywords
17
Scenario: Download Drupal 8 from Drupal.org
Given I am on drupal.org homepage
And I am an anonymous user
When I Click “Download and Extend”
And I Click “Download Drupal 8.0.0”
Then I should see the link “Drupal Core 8.0.0”
SPARKFABRIK
GHERKIN
• It is a Business Readable, Domain Specific
Language
• Lets you describe software’s behaviour without
detailing how that behaviour is implemented.
• Gherkin is the language that BEHAT
understands.
18
SPARKFABRIK
BEHAT
docs.behat.org/en/v3.0/
Open source Behavior Driven Development
framework for PHP (5.3+)
Inspired from Cucumber (Ruby)
www.cucumber.io
From version 3 BEHAT it’s an official
Cucumber implementation in PHP
Let us write tests based on our scenarios
19
SPARKFABRIK
HOW BEHAT READS
GHERKIN?
20
Given I am an anonymous user
SPARKFABRIK
HOW BEHAT READS
GHERKIN?
21
/**
* @Given I am an anonymous user
*/
public function assertAnonymousUser() {
// Verify the user is logged out.
if ($this->loggedIn()) {
$this->logout();
}
}
Given I am an anonymous user
SPARKFABRIK
HOW BEHAT READS
GHERKIN?
22
Then I should not see the text :text
SPARKFABRIK
HOW BEHAT READS
GHERKIN?
23
/**
* @Then I should not see the text :text
*/
public function assertNotTextVisible($text) {
// Use the Mink Extension step definition.
$this->assertPageNotContainsText($text);
}
Then I should not see the text :text
SPARKFABRIK
STEP RESULTS
24
/**
* @Then I should not see the text :text
*/
public function assertNotTextVisible($text) {
// This step will fail.
throw new Exception(‘Test failed’);
}
• A step FAILS when an Exception is thrown
SPARKFABRIK
STEP RESULTS
25
/**
* @Then I will trigger a success
*/
public function triggerSuccess() {
// This step will pass.
print(‘Hello DrupalDay’);
}
• A step PASS when no Exception are raised
SPARKFABRIK
OTHER STEP RESULTS
26
• SUCCESSFUL
• FAILED
• PENDING
• UNDEFINED
• SKIPPED
• AMBIGUOUS
• REDUNDANT
SPARKFABRIK
WHERE ARE THESE
STEPS?
27
• STEPS are defined inside plain PHP Object
classes, called CONTEXTS
• MinkContext and DrupalContext give use a lot of
pre-defined steps ready to be used
• Custom steps can be defined inside
FeatureContext class
SPARKFABRIK
Sum Up
28
Give use the syntax
to write features and scenarios
Our framework that reads our
scenarios and run tests
Classes containing our step
definitions
GHERKIN
BEHAT
CONTEXTS
SPARKFABRIK
How we integrate Behat and
Drupal?
29
Behat Drupal Extension
An integration layer between
Drupal and Behat
https://www.drupal.org/project/drupalextension
https://github.com/jhedstrom/drupalextension
SPARKFABRIK
From your project root..
composer require drupal/drupal-extension
30
- Installing drupal/drupal-driver (v1.1.4)
Downloading: 100%
> DrupalCoreComposerComposer::vendorTestCodeCleanup
- Installing symfony/filesystem (v3.0.0)
Downloading: 100%
> DrupalCoreComposerComposer::vendorTestCodeCleanup
- Installing symfony/config (v2.8.0)
Downloading: 100%
> DrupalCoreComposerComposer::vendorTestCodeCleanup
- Installing behat/transliterator (v1.1.0)
Loading from cache
…
…
> DrupalCoreComposerComposer::vendorTestCodeCleanup
- Installing drupal/drupal-extension (v3.1.3)
Downloading: 100% SPARKFABRIK
Create file behat.yml
31
1 default:
2 suites:
3 default:
4 contexts:
5 - FeatureContext
6 - DrupalDrupalExtensionContextDrupalContext
7 - DrupalDrupalExtensionContextMinkContext
8 extensions:
9 BehatMinkExtension:
10 goutte: ~
11 base_url: http://d8.drupalday2015.sparkfabrik.loc # Replace with your site's URL
12 DrupalDrupalExtension:
13 blackbox: ~
see https://github.com/jhedstrom/drupalextension
SPARKFABRIK
Then --init your test suite
32
vendor/bin/behat --init
+d features - place your *.feature files here
+d features/bootstrap - place your context classes here
+f features/bootstrap/FeatureContext.php - place your
definitions, transformations and hooks here
SPARKFABRIK
Demo!
33
SPARKFABRIK
BROWSER INTERACTION
• With BDD we write clear, understandable
scenario
• Our scenario often describe an interaction with
the browser
34
WE NEED A BROWSER EMULATOR
SPARKFABRIK
BROWSER EMULATORS
• Headless browser emulators (Goutte)
• Browser controllers (Selenium2, SAHI)
• They do basically the same thing: control or
emulate browsers but they do them in different
ways
• They comes with their pro and cons
35
SPARKFABRIK
MINK!
http://mink.behat.org/en/latest/
• MINK removes API differences between different browser emulators
• MINK provides different drivers for every browser emulator
• MINK gives you an easy way to
1. control the browser
2. traverse pages
3. manipulate page elements
4. interact with page elements
36
SPARKFABRIK
37
/**
* @When /^(?:|I )move forward one page$/
*/
public function forward() {
$this->getSession()->forward();
}
MINK!
http://mink.behat.org/en/latest/
When I move forward one page
SPARKFABRIK
Wrap up
38
GHERKIN
BEHAT
CONTEXTS
MINK
Give use the syntax
to write features and scenarios
Our framework that reads our
scenarios and run the tests
Classes containing our step
definitions
Describe browser interaction
without worrying about the browser
SPARKFABRIK
39

Weitere ähnliche Inhalte

Was ist angesagt?

Django app deployment in Azure By Saurabh Agarwal
Django app deployment in Azure By Saurabh AgarwalDjango app deployment in Azure By Saurabh Agarwal
Django app deployment in Azure By Saurabh Agarwalratneshsinghparihar
 
Build website in_django
Build website in_django Build website in_django
Build website in_django swee meng ng
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesTikal Knowledge
 
Intro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentIntro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentBrad Williams
 
Quick flask an intro to flask
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flaskjuzten
 
Web application development with Django framework
Web application development with Django frameworkWeb application development with Django framework
Web application development with Django frameworkflapiello
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture IntroductionHaiqi Chen
 
PloneNG: What's new in Plone 4.2, 4.3, and beyond
PloneNG: What's new in Plone 4.2, 4.3, and beyondPloneNG: What's new in Plone 4.2, 4.3, and beyond
PloneNG: What's new in Plone 4.2, 4.3, and beyondDavid Glick
 
Introduction to building joomla! components using FOF
Introduction to building joomla! components using FOFIntroduction to building joomla! components using FOF
Introduction to building joomla! components using FOFTim Plummer
 
How to create a joomla component from scratch
How to create a joomla component from scratchHow to create a joomla component from scratch
How to create a joomla component from scratchTim Plummer
 
Composer & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupaldrubb
 
Django - Python MVC Framework
Django - Python MVC FrameworkDjango - Python MVC Framework
Django - Python MVC FrameworkBala Kumar
 
Build Automation of PHP Applications
Build Automation of PHP ApplicationsBuild Automation of PHP Applications
Build Automation of PHP ApplicationsPavan Kumar N
 
Headless Drupal
Headless DrupalHeadless Drupal
Headless Drupaldrubb
 
Python/Flask Presentation
Python/Flask PresentationPython/Flask Presentation
Python/Flask PresentationParag Mujumdar
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersRosario Renga
 

Was ist angesagt? (20)

Ant User Guide
Ant User GuideAnt User Guide
Ant User Guide
 
Django app deployment in Azure By Saurabh Agarwal
Django app deployment in Azure By Saurabh AgarwalDjango app deployment in Azure By Saurabh Agarwal
Django app deployment in Azure By Saurabh Agarwal
 
Build website in_django
Build website in_django Build website in_django
Build website in_django
 
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With DeadlinesJBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
JBUG 11 - Django-The Web Framework For Perfectionists With Deadlines
 
Intro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentIntro to WordPress Plugin Development
Intro to WordPress Plugin Development
 
Quick flask an intro to flask
Quick flask   an intro to flaskQuick flask   an intro to flask
Quick flask an intro to flask
 
Web application development with Django framework
Web application development with Django frameworkWeb application development with Django framework
Web application development with Django framework
 
Django Architecture Introduction
Django Architecture IntroductionDjango Architecture Introduction
Django Architecture Introduction
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
PloneNG: What's new in Plone 4.2, 4.3, and beyond
PloneNG: What's new in Plone 4.2, 4.3, and beyondPloneNG: What's new in Plone 4.2, 4.3, and beyond
PloneNG: What's new in Plone 4.2, 4.3, and beyond
 
Introduction to building joomla! components using FOF
Introduction to building joomla! components using FOFIntroduction to building joomla! components using FOF
Introduction to building joomla! components using FOF
 
Flask
FlaskFlask
Flask
 
How to create a joomla component from scratch
How to create a joomla component from scratchHow to create a joomla component from scratch
How to create a joomla component from scratch
 
Composer & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupal
 
Django - Python MVC Framework
Django - Python MVC FrameworkDjango - Python MVC Framework
Django - Python MVC Framework
 
Build Automation of PHP Applications
Build Automation of PHP ApplicationsBuild Automation of PHP Applications
Build Automation of PHP Applications
 
Headless Drupal
Headless DrupalHeadless Drupal
Headless Drupal
 
Python/Flask Presentation
Python/Flask PresentationPython/Flask Presentation
Python/Flask Presentation
 
Django Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python DevelopersDjango Framework Overview forNon-Python Developers
Django Framework Overview forNon-Python Developers
 
Django Documentation
Django DocumentationDjango Documentation
Django Documentation
 

Ähnlich wie Behaviour Driven Development con Behat & Drupal

Voiture tech talk
Voiture tech talkVoiture tech talk
Voiture tech talkHoppinger
 
Virtual Environment and Web development using Django
Virtual Environment and Web development using DjangoVirtual Environment and Web development using Django
Virtual Environment and Web development using DjangoSunil kumar Mohanty
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
‘Hello, world!’ application how to dockerize golang application
‘Hello, world!’ application how to dockerize golang application‘Hello, world!’ application how to dockerize golang application
‘Hello, world!’ application how to dockerize golang applicationKaty Slemon
 
Ultimate Survival - React-Native edition
Ultimate Survival - React-Native editionUltimate Survival - React-Native edition
Ultimate Survival - React-Native editionRichard Radics
 
Write your first WordPress plugin
Write your first WordPress pluginWrite your first WordPress plugin
Write your first WordPress pluginAnthony Montalbano
 
Bugzilla Installation Process
Bugzilla Installation ProcessBugzilla Installation Process
Bugzilla Installation ProcessVino Harikrishnan
 
20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdevFrank Rousseau
 
Spring Live Sample Chapter
Spring Live Sample ChapterSpring Live Sample Chapter
Spring Live Sample ChapterSyed Shahul
 
Hands on Docker - Launch your own LEMP or LAMP stack
Hands on Docker -  Launch your own LEMP or LAMP stackHands on Docker -  Launch your own LEMP or LAMP stack
Hands on Docker - Launch your own LEMP or LAMP stackDana Luther
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupalDay
 
Docker for Ruby Developers
Docker for Ruby DevelopersDocker for Ruby Developers
Docker for Ruby DevelopersAptible
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
 
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...Обход проверки безопасности в магазинах мобильных приложений при помощи платф...
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...Positive Hack Days
 
Development Setup of B-Translator
Development Setup of B-TranslatorDevelopment Setup of B-Translator
Development Setup of B-TranslatorDashamir Hoxha
 
DockerCon EU 2018 - Dockerfile Best Practices
DockerCon EU 2018 - Dockerfile Best PracticesDockerCon EU 2018 - Dockerfile Best Practices
DockerCon EU 2018 - Dockerfile Best PracticesTibor Vass
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDocker, Inc.
 
Docker Introduction.pdf
Docker Introduction.pdfDocker Introduction.pdf
Docker Introduction.pdfOKLABS
 

Ähnlich wie Behaviour Driven Development con Behat & Drupal (20)

Voiture tech talk
Voiture tech talkVoiture tech talk
Voiture tech talk
 
Virtual Environment and Web development using Django
Virtual Environment and Web development using DjangoVirtual Environment and Web development using Django
Virtual Environment and Web development using Django
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
‘Hello, world!’ application how to dockerize golang application
‘Hello, world!’ application how to dockerize golang application‘Hello, world!’ application how to dockerize golang application
‘Hello, world!’ application how to dockerize golang application
 
Ultimate Survival - React-Native edition
Ultimate Survival - React-Native editionUltimate Survival - React-Native edition
Ultimate Survival - React-Native edition
 
Write your first WordPress plugin
Write your first WordPress pluginWrite your first WordPress plugin
Write your first WordPress plugin
 
Bugzilla Installation Process
Bugzilla Installation ProcessBugzilla Installation Process
Bugzilla Installation Process
 
20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev
 
Spring Live Sample Chapter
Spring Live Sample ChapterSpring Live Sample Chapter
Spring Live Sample Chapter
 
Hands on Docker - Launch your own LEMP or LAMP stack
Hands on Docker -  Launch your own LEMP or LAMP stackHands on Docker -  Launch your own LEMP or LAMP stack
Hands on Docker - Launch your own LEMP or LAMP stack
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Learning Docker with Thomas
Learning Docker with ThomasLearning Docker with Thomas
Learning Docker with Thomas
 
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
 
Docker for Ruby Developers
Docker for Ruby DevelopersDocker for Ruby Developers
Docker for Ruby Developers
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
 
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...Обход проверки безопасности в магазинах мобильных приложений при помощи платф...
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...
 
Development Setup of B-Translator
Development Setup of B-TranslatorDevelopment Setup of B-Translator
Development Setup of B-Translator
 
DockerCon EU 2018 - Dockerfile Best Practices
DockerCon EU 2018 - Dockerfile Best PracticesDockerCon EU 2018 - Dockerfile Best Practices
DockerCon EU 2018 - Dockerfile Best Practices
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best Practices
 
Docker Introduction.pdf
Docker Introduction.pdfDocker Introduction.pdf
Docker Introduction.pdf
 

Mehr von sparkfabrik

KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on KubernetesKCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetessparkfabrik
 
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...sparkfabrik
 
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirtIAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirtsparkfabrik
 
2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pagessparkfabrik
 
2023 - TAC23 - Agile HR - Racconti dal fronte
2023 - TAC23 - Agile HR - Racconti dal fronte2023 - TAC23 - Agile HR - Racconti dal fronte
2023 - TAC23 - Agile HR - Racconti dal frontesparkfabrik
 
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...sparkfabrik
 
What is the Secure Supply Chain and the Current State of the PHP Ecosystem
What is the Secure Supply Chain and the Current State of the PHP EcosystemWhat is the Secure Supply Chain and the Current State of the PHP Ecosystem
What is the Secure Supply Chain and the Current State of the PHP Ecosystemsparkfabrik
 
UX e Web sostenibile (UXday 2023).pdf
UX e Web sostenibile (UXday 2023).pdfUX e Web sostenibile (UXday 2023).pdf
UX e Web sostenibile (UXday 2023).pdfsparkfabrik
 
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...sparkfabrik
 
Deep dive nella supply chain della nostra infrastruttura cloud
Deep dive nella supply chain della nostra infrastruttura cloudDeep dive nella supply chain della nostra infrastruttura cloud
Deep dive nella supply chain della nostra infrastruttura cloudsparkfabrik
 
KCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with CrossplaneKCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with Crossplanesparkfabrik
 
Come Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagineCome Drupal costruisce le tue pagine
Come Drupal costruisce le tue paginesparkfabrik
 
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernosparkfabrik
 
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)sparkfabrik
 
Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!sparkfabrik
 
Progettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWSProgettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWSsparkfabrik
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedsparkfabrik
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIssparkfabrik
 
Cloud-Native Drupal: a survival guide
Cloud-Native Drupal: a survival guideCloud-Native Drupal: a survival guide
Cloud-Native Drupal: a survival guidesparkfabrik
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 

Mehr von sparkfabrik (20)

KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on KubernetesKCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
KCD Italy 2023 - Secure Software Supply chain for OCI Artifact on Kubernetes
 
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
 
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirtIAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
IAD 2023 - 22 Years of Agile and all I got is this lousy t-shirt
 
2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages2023 - Drupalcon - How Drupal builds your pages
2023 - Drupalcon - How Drupal builds your pages
 
2023 - TAC23 - Agile HR - Racconti dal fronte
2023 - TAC23 - Agile HR - Racconti dal fronte2023 - TAC23 - Agile HR - Racconti dal fronte
2023 - TAC23 - Agile HR - Racconti dal fronte
 
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
CodeMotion 2023 - Deep dive nella supply chain della nostra infrastruttura cl...
 
What is the Secure Supply Chain and the Current State of the PHP Ecosystem
What is the Secure Supply Chain and the Current State of the PHP EcosystemWhat is the Secure Supply Chain and the Current State of the PHP Ecosystem
What is the Secure Supply Chain and the Current State of the PHP Ecosystem
 
UX e Web sostenibile (UXday 2023).pdf
UX e Web sostenibile (UXday 2023).pdfUX e Web sostenibile (UXday 2023).pdf
UX e Web sostenibile (UXday 2023).pdf
 
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
Drupal Dev Days Vienna 2023 - What is the secure software supply chain and th...
 
Deep dive nella supply chain della nostra infrastruttura cloud
Deep dive nella supply chain della nostra infrastruttura cloudDeep dive nella supply chain della nostra infrastruttura cloud
Deep dive nella supply chain della nostra infrastruttura cloud
 
KCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with CrossplaneKCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with Crossplane
 
Come Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagineCome Drupal costruisce le tue pagine
Come Drupal costruisce le tue pagine
 
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
 
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
 
Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!Do you know what your Drupal is doing_ Observe it!
Do you know what your Drupal is doing_ Observe it!
 
Progettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWSProgettare e sviluppare soluzioni serverless con AWS
Progettare e sviluppare soluzioni serverless con AWS
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
 
Headless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIsHeadless Drupal: A modern approach to (micro)services and APIs
Headless Drupal: A modern approach to (micro)services and APIs
 
Cloud-Native Drupal: a survival guide
Cloud-Native Drupal: a survival guideCloud-Native Drupal: a survival guide
Cloud-Native Drupal: a survival guide
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 

Kürzlich hochgeladen

Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...Nitya salvi
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 

Kürzlich hochgeladen (20)

Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 

Behaviour Driven Development con Behat & Drupal

  • 1. 1
  • 2. BDD with Behat & Drupal Alessio Piazza Software Developer @SparkFabrik (twinbit + agavee) twitter: @alessiopiazza I do stuff with Drupal SPARKFABRIK
  • 3. 3 • Behaviour Driven Development • a software development process that emerged from TDD (Test Driven Development) • Behaviour driven development specifies that tests of any unit of software should be specified in terms of the desired behaviour of the unit BDD SPARKFABRIK
  • 4. WHY BDD? or TDD? • You must test your application • Save your self from regressions (fix one thing, break another one) • Save your self from misunderstanding between you and your client • Your tests become specification 4 SPARKFABRIK
  • 5. BDD Workflow 1. Write a specification feature 2. Implement its test 3. Run test and watch it FAIL 4. Change your app to make test PASS 5. Run test and watch it PASS 6. Repat from 2-5 until all GREEN 5 SPARKFABRIK
  • 6. BDD: HOW IT WORKS? 6
  • 8. Write a specification feature 8 Feature: Download Drupal 8 In order to use Drupal 8 as a user i should be able to download it from drupal.org Scenario: Download Drupal 8 from Drupal.org Given i am on the homepage When i Click “Download and Extend” Then I should see the link “Download Drupal 8.0.0” Scenario: … SPARKFABRIK
  • 9. SCENARIO STRUCTURE 9 Scenario: Download Drupal 8 from Drupal.org Given I am on drupal.org homepage When I Click “Download and Extend” Then I should see the link “Download Drupal 8.0.0” SPARKFABRIK
  • 10. SCENARIO STRUCTURE 10 Given i am on drupal.org homepage And i Click “Download and Extend” Then I should see the link “Download Drupal 8.0.0” Scenario: Download Drupal 8 from Drupal.org Keyword Description SPARKFABRIK
  • 11. SCENARIO STRUCTURE 11 Given i am on drupal.org homepage And i Click “Download and Extend” Then I should see the link “Download Drupal 8.0.0” Scenario: Download Drupal 8 from Drupal.org Keyword Description Steps Given I am on drupal.org homepage When I Click “Download and Extend” Then I should see the link “Download …” SPARKFABRIK
  • 12. STEPS: Keywords 12 Given -> To put the system in a known state Given I am an anonymous user SPARKFABRIK
  • 13. Given STEPS: Keywords 13 When -> To describe the key action to performs When I click on the link SPARKFABRIK
  • 14. Given STEPS: Keywords 14 When Then -> To to observe outcomes Then I should see the text “Hello” SPARKFABRIK
  • 15. Given STEPS: Keywords 15 When Then And / But -> To make our scenario more readable SPARKFABRIK
  • 16. STEPS: Keywords 16 Scenario: Download Drupal 8 from Drupal.org Given I am on drupal.org homepage Given I am an anonymous user When I Click “Download and Extend” When I Click “Download Drupal 8.0.0” Then I should see the link “Drupal Core 8.0.0” SPARKFABRIK
  • 17. STEPS: Keywords 17 Scenario: Download Drupal 8 from Drupal.org Given I am on drupal.org homepage And I am an anonymous user When I Click “Download and Extend” And I Click “Download Drupal 8.0.0” Then I should see the link “Drupal Core 8.0.0” SPARKFABRIK
  • 18. GHERKIN • It is a Business Readable, Domain Specific Language • Lets you describe software’s behaviour without detailing how that behaviour is implemented. • Gherkin is the language that BEHAT understands. 18 SPARKFABRIK
  • 19. BEHAT docs.behat.org/en/v3.0/ Open source Behavior Driven Development framework for PHP (5.3+) Inspired from Cucumber (Ruby) www.cucumber.io From version 3 BEHAT it’s an official Cucumber implementation in PHP Let us write tests based on our scenarios 19 SPARKFABRIK
  • 20. HOW BEHAT READS GHERKIN? 20 Given I am an anonymous user SPARKFABRIK
  • 21. HOW BEHAT READS GHERKIN? 21 /** * @Given I am an anonymous user */ public function assertAnonymousUser() { // Verify the user is logged out. if ($this->loggedIn()) { $this->logout(); } } Given I am an anonymous user SPARKFABRIK
  • 22. HOW BEHAT READS GHERKIN? 22 Then I should not see the text :text SPARKFABRIK
  • 23. HOW BEHAT READS GHERKIN? 23 /** * @Then I should not see the text :text */ public function assertNotTextVisible($text) { // Use the Mink Extension step definition. $this->assertPageNotContainsText($text); } Then I should not see the text :text SPARKFABRIK
  • 24. STEP RESULTS 24 /** * @Then I should not see the text :text */ public function assertNotTextVisible($text) { // This step will fail. throw new Exception(‘Test failed’); } • A step FAILS when an Exception is thrown SPARKFABRIK
  • 25. STEP RESULTS 25 /** * @Then I will trigger a success */ public function triggerSuccess() { // This step will pass. print(‘Hello DrupalDay’); } • A step PASS when no Exception are raised SPARKFABRIK
  • 26. OTHER STEP RESULTS 26 • SUCCESSFUL • FAILED • PENDING • UNDEFINED • SKIPPED • AMBIGUOUS • REDUNDANT SPARKFABRIK
  • 27. WHERE ARE THESE STEPS? 27 • STEPS are defined inside plain PHP Object classes, called CONTEXTS • MinkContext and DrupalContext give use a lot of pre-defined steps ready to be used • Custom steps can be defined inside FeatureContext class SPARKFABRIK
  • 28. Sum Up 28 Give use the syntax to write features and scenarios Our framework that reads our scenarios and run tests Classes containing our step definitions GHERKIN BEHAT CONTEXTS SPARKFABRIK
  • 29. How we integrate Behat and Drupal? 29 Behat Drupal Extension An integration layer between Drupal and Behat https://www.drupal.org/project/drupalextension https://github.com/jhedstrom/drupalextension SPARKFABRIK
  • 30. From your project root.. composer require drupal/drupal-extension 30 - Installing drupal/drupal-driver (v1.1.4) Downloading: 100% > DrupalCoreComposerComposer::vendorTestCodeCleanup - Installing symfony/filesystem (v3.0.0) Downloading: 100% > DrupalCoreComposerComposer::vendorTestCodeCleanup - Installing symfony/config (v2.8.0) Downloading: 100% > DrupalCoreComposerComposer::vendorTestCodeCleanup - Installing behat/transliterator (v1.1.0) Loading from cache … … > DrupalCoreComposerComposer::vendorTestCodeCleanup - Installing drupal/drupal-extension (v3.1.3) Downloading: 100% SPARKFABRIK
  • 31. Create file behat.yml 31 1 default: 2 suites: 3 default: 4 contexts: 5 - FeatureContext 6 - DrupalDrupalExtensionContextDrupalContext 7 - DrupalDrupalExtensionContextMinkContext 8 extensions: 9 BehatMinkExtension: 10 goutte: ~ 11 base_url: http://d8.drupalday2015.sparkfabrik.loc # Replace with your site's URL 12 DrupalDrupalExtension: 13 blackbox: ~ see https://github.com/jhedstrom/drupalextension SPARKFABRIK
  • 32. Then --init your test suite 32 vendor/bin/behat --init +d features - place your *.feature files here +d features/bootstrap - place your context classes here +f features/bootstrap/FeatureContext.php - place your definitions, transformations and hooks here SPARKFABRIK
  • 34. BROWSER INTERACTION • With BDD we write clear, understandable scenario • Our scenario often describe an interaction with the browser 34 WE NEED A BROWSER EMULATOR SPARKFABRIK
  • 35. BROWSER EMULATORS • Headless browser emulators (Goutte) • Browser controllers (Selenium2, SAHI) • They do basically the same thing: control or emulate browsers but they do them in different ways • They comes with their pro and cons 35 SPARKFABRIK
  • 36. MINK! http://mink.behat.org/en/latest/ • MINK removes API differences between different browser emulators • MINK provides different drivers for every browser emulator • MINK gives you an easy way to 1. control the browser 2. traverse pages 3. manipulate page elements 4. interact with page elements 36 SPARKFABRIK
  • 37. 37 /** * @When /^(?:|I )move forward one page$/ */ public function forward() { $this->getSession()->forward(); } MINK! http://mink.behat.org/en/latest/ When I move forward one page SPARKFABRIK
  • 38. Wrap up 38 GHERKIN BEHAT CONTEXTS MINK Give use the syntax to write features and scenarios Our framework that reads our scenarios and run the tests Classes containing our step definitions Describe browser interaction without worrying about the browser SPARKFABRIK
  • 39. 39