Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Web Acceptance Testing For Grumpy Programmers
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Chris Hartjes
May 15, 2013
Programming
460
3
Share
Web Acceptance Testing For Grumpy Programmers
How you can bend Behat + Mink + PhantomJS to your will to create web acceptance tests
Chris Hartjes
May 15, 2013
More Decks by Chris Hartjes
See All by Chris Hartjes
Confessions of a not-so-accidental leader
grumpycanuck
0
250
Lessons Learned From 10 Years Of Testing
grumpycanuck
4
150
Learn To Test Like A Grumpy Programmer
grumpycanuck
0
260
Time Management For Grumpy Programmers
grumpycanuck
0
230
Learn To Test Like A Grumpy Programmer
grumpycanuck
1
270
Learn To Test Like A Grumpy Programmer
grumpycanuck
2
220
Grumpy Testing Patterns
grumpycanuck
1
1k
Embrace Your Inner Grumpy: Metatesting in 2016
grumpycanuck
0
160
Smelly Tests
grumpycanuck
0
110
Other Decks in Programming
See All in Programming
JAWS-UG横浜 #100 祝・第100回スペシャルAWS は VPC レスの時代へ
maroon1st
0
150
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
3k
Claude Code × Gemini × Ebitengine ゲーム制作素人WebエンジニアがGoでゲームを作った話
webzawa
0
140
SkillがSkillを生む:QA観点出しを自動化した
sontixyou
6
3.4k
AWSコミュニティ活動は顧客のクラウド推進に効くのか / Do AWS community activities help customers adopt the cloud?
seike460
PRO
0
140
HTML-Aware ERB: The Path to Reactive Rendering @ RubyKaigi 2026, Hakodate, Japan
marcoroth
0
140
Back to the roots of date
jinroq
0
100
「Linuxサーバー構築標準教科書」を読んでみた #ツナギメオフライン.7
akase244
0
1.4k
Claude Codeをカスタムして自分だけのClaude Codeを作ろう
terisuke
0
140
AI時代のPhpStorm最新事情 #phpcon_odawara
yusuke
0
190
Programming with a DJ Controller — not vibe coding
m_seki
3
110
ハーネスエンジニアリングにどう向き合うか 〜ルールファイルを超えて開発プロセスを設計する〜 / How to approach harness engineering
rkaga
23
13k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.3k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
330
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
480
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
120
Ruling the World: When Life Gets Gamed
codingconduct
0
210
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
260
Crafting Experiences
bethany
1
110
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
230
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
Transcript
Web Acceptance Testing For Grumpy Programmers php|tek 2013 May 15,
2013 Chris Hartjes
whoami
Test vs. Test
A New Test Type
A New Test Type “BDD is a second-generation, outside–in, pull-based,
multiple-stakeholder, multiple- scale, high-automation, agile methodology. It describes a cycle of interactions with well- defined outputs, resulting in the delivery of working, tested software that matters”
A New Test Type
A New Test Type Behavior-driven development specifies that tests of
any unit of software should be specified in terms of the desired behavior of the unit.
What’s The Scenario Given I am in a talk When
the speaker is presenting And he glares at me I remain quiet
What’s The Scenario Tests are readable by people first Non-technical
people can be taught the DSL
Getting Started?
Behat
What Is It? “A PHP framework for testing your business
expectations” http://behat.org
How Do I Use It 1. Install it via Composer
2. ??? 3. Profit!
How Do I Use It? 1. Install via Composer 2.
Create a Feature with a Scenario 3. Run your test 4. Profit!
Installing
Create Your Feature File
What Is A Scenario? A test that covers specific behavior
you wish to test
What Is A Scenario?
First Run
Steps To Implement
Steps To Implement
Write Some Code
Scenario Passes!
What About Web Testing?
Mink Framework for doing web acceptance testing Sits between Behat
and browser emulator http://mink.behat.org
Installing
Browser Emulation
How does it help? Provides a common API for browser
interaction Provides built-in functionality for common tasks
Goutte Pure PHP browser emulator Great for testing non-Javascript functionality
Installing Goutte
Behat + Goutte Config
Sample Mink Feature
Proof!
What About JavaScript?
PhantomJS
PhantomJS Headless browser based on WebKit Node app (don’t worry,
npm will save you)
Installing PhantomJS Good instructions at http://slid.es/gimler/behat-mink-phantomjs Install npm (Node Package
Manager) `npm install -g phantomjs`
Selenium2 + PHPUnit
Why Selenium2? PhantomJS can pretend to be a standalone Selenium2
server Configure Behat to send JavaScript scenarios to it
Behat + PhantomJS
Behat + PHPUnit Adds support for generic assertions
Adding in PHPUnit
Run PhantomJS `phantomjs --phantomjs --webdriver=8643`
Our first JS Scenario
Proof!
Now it gets grumpier
CSS Selectors Best way to locate specific elements on a
page If you disliked CSS before, this might push you over the edge
Y U MAD CHRIS? 'html body div.container div.row div.span9 section#modals
div#myModal.modal div.modal-header h3#myModalLabel' TOTALLY INTUITIVE Learn your browser debugger tools well
Pro Tip #1 Give all your elements ID’s Make it
easier for CSS selectors to find them
Waiting For JavaScript Behat steps will need wait() commands for
JS Gives time for browser to render Acceptance tests are not supposed to be fast
Pro Tip #2 Be conservative in your waiting estimates
Breaking down the steps
Breaking down the steps
Lessons Learned WAT is definitely “test-after” Learn CSS really well
or else Twitter Rage ensues Good ratio is 90% unit - 10% WAT
Lessons Learned Keep your feature files focused to scenario groups
Create app-critical scenarios
Advanced Level Different Behat configuration files for different environments `behat
---config <path to config file>`
Advanced Level Use Behat Gearman extension to run scenarios in
parallel http://extensions.behat.org/gearman/
Building Testable Apps http://grumpy-testing.com
PHPUnit Cookbook http://grumpy-phpunit.com
Testing Screencasts
Thank You! https://github.com/chartjes/wat-tek13 https://joind.in/8167 @grmpyprogrammer