Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Web Acceptance Testing For Grumpy Programmers
Search
Chris Hartjes
May 15, 2013
Programming
480
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
280
Lessons Learned From 10 Years Of Testing
grumpycanuck
4
170
Learn To Test Like A Grumpy Programmer
grumpycanuck
0
280
Time Management For Grumpy Programmers
grumpycanuck
0
250
Learn To Test Like A Grumpy Programmer
grumpycanuck
1
300
Learn To Test Like A Grumpy Programmer
grumpycanuck
2
230
Grumpy Testing Patterns
grumpycanuck
1
1k
Embrace Your Inner Grumpy: Metatesting in 2016
grumpycanuck
0
160
Smelly Tests
grumpycanuck
0
130
Other Decks in Programming
See All in Programming
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
350
カツオ、ご期待ください
suneo3476
0
160
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
550
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
200
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
280
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
350
Simple Storage Service(S3) is not simple
iwatsukayura
0
250
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
150
気持ちぃ〜角丸 Squircle
ryu1013
0
220
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
220
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.2k
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
440
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
It's Worth the Effort
3n
188
29k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
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