The document discusses Cucumber, a tool for writing acceptance tests in a business-readable domain-specific language called Gherkin. It touches on how Cucumber supports over 28 languages by compiling Gherkin grammars into the target language. It also provides examples of tagging scenarios and features in Cucumber to enable focused testing. Finally, it recommends further reading resources for learning more about Cucumber.
Outside-in Development with Cucumber and RspecJoseph Wilk
Ā
Talk given by Joseph Wilk at Scotland on Rails 2009. Examines how Cucumber and Rspec fit together in the testing workflow, how and why Cucumber is useful and how it works. Walks through a simple example based on renting DVDs showing how to use Cucumber and some of the best practices. Looks at how Webrat can drive Selenium to in-turn drive Cucumber features through the browser.
Describes Outside-In development and Behvaiour Driven Development. Illustrates basic Cucumber usage within a Rails app and then goes over more advanced topics such as JS as web services.
Jenkins User Conference 2012
Only by the third plugin do you get the hang of writing a plugin. I thought as a developer coming to the build side of things it'd be easy to jump in and write some plugins. I was wrong. Don't be fooled by the extremely friendly Jenkins community, writing a plugin from scratch is harder than they let on. This talk will explain the hurdles that I had to cross to make writing plugins easy.
If you are new to WordPress, but already know how to program, the typical "Hello, World" examples aren't helpful. You need to know how to make the right API calls, and where to find documentation about the actions and filters that WordPress makes available to you.
This presentation is a brief introduction skimming the surface of the API hook system in WordPress. It does not go into deep detail, but gives brief "real world" examples of how to use filters and actions, along with pointers on where to find the main documentation that will help you get started on your own plugins.
Outside-in Development with Cucumber and RspecJoseph Wilk
Ā
Talk given by Joseph Wilk at Scotland on Rails 2009. Examines how Cucumber and Rspec fit together in the testing workflow, how and why Cucumber is useful and how it works. Walks through a simple example based on renting DVDs showing how to use Cucumber and some of the best practices. Looks at how Webrat can drive Selenium to in-turn drive Cucumber features through the browser.
Describes Outside-In development and Behvaiour Driven Development. Illustrates basic Cucumber usage within a Rails app and then goes over more advanced topics such as JS as web services.
Jenkins User Conference 2012
Only by the third plugin do you get the hang of writing a plugin. I thought as a developer coming to the build side of things it'd be easy to jump in and write some plugins. I was wrong. Don't be fooled by the extremely friendly Jenkins community, writing a plugin from scratch is harder than they let on. This talk will explain the hurdles that I had to cross to make writing plugins easy.
If you are new to WordPress, but already know how to program, the typical "Hello, World" examples aren't helpful. You need to know how to make the right API calls, and where to find documentation about the actions and filters that WordPress makes available to you.
This presentation is a brief introduction skimming the surface of the API hook system in WordPress. It does not go into deep detail, but gives brief "real world" examples of how to use filters and actions, along with pointers on where to find the main documentation that will help you get started on your own plugins.
Testing web front ends is a pain, partly because we end up testing the back end with them. Selenium helps by automating the input, but the selenium driver code lacks high-level interfaces for things like "find_and_click" or "find_and_key". Adding these with a wrapper makes data-driven selenium testing via Object::Exercise easy.
Concise guide to starting with Behat.
Covers:
* What is Behat?
* How do you get started with Behat?
* How to write tests?
* How to write good tests!
How to write portable tests, and other common problems.
"Managing API Complexity". Matthew Flaming, TembooYandex
Ā
APIs are proliferating on the web, providing app developers with ready access to a wide range of data and services, yet very few apps take advantage of more than one or two API providers. Arbitrary inconsistencies between APIs -- from authentication to input/output formats to details as small as timestamps or pagination -- mean every new API brings its own unnecessarily redundent learning curve, draining developer's most precious resource: time.
Temboo is part of an emerging class of services for managing and scaling API usage. By NORMALIZING access to APIs (as well as their associated documentation and credentials) these services do for development what PaaS and server virtualization have already done for app deployment and infrastructure. "Code virtualization", whereby all the tedious details of API access are abstracted away in standardized cloud-based processes, will free developers to spend their time writing only the code that actually makes their app unique. And that means more unique apps for everyone.
Does Behaviour Driven Development have a role in the infrastructure world? Enter Behaviour Driven Infrastructure where systems administrators can apply some simple open source tools and BDD principles to make infrastructure management more powerful, more insightful and deliver more value to their customers.
The typical enterprise monitoring and configuration management set-up for a website is:
- Is the Apache package installed and the appropriate version?
- Is the Apache service running?
- Can I connect to the HTTP port and is HTML returned?
- Multiply this by a few hundred iterations of hosts and types of services and youāre probably looking at your typical Nagios, Puppet, Cfengine, Hyperic set-up.
All this monitoring misses something critical though ā weāre not actually monitoring that the service does what it should. Yes, it matters whether Apache is installed, the Apache service is running, and you can connect to HTTP but does this actually prove anything about the availability of the service weāre managing and providing for our customers? Nopeā¦
We need to demonstrate more than just a check that says the Apache server is up. We need to demonstrate that the service delivered by that infrastructure was available to our customers AND functioning as intended.
Enter Behaviour Driven Infrastructure or BDI which applies the principles of Behavioural Driven Development to the management of infrastructure. In this presentation youāll learn:
- How Behaviour Driven Development works
- What makes a behavioural test
- How to install and use Cucumber to perform BDI
- Practical examples of behavioural tests in Cucumber, and
- How to integrate BDI into your work flow and your enterprise monitoring and configuration management frameworks.
Presented at WordCamp Montreal 2014
Do you ever browse the WordPress Plugin Directory and wish you could see your creations up there? Have you ever written code for a personal site or customer and thought that others could benefit from having access to your work? āSo, you want to be a plugin developer?ā covers numerous aspects of plugin development, including finding an idea for your plugin and securing a space for it in the directory, programming resources and code quality guidelines to make sure your add-on is top-notch, and more business-oriented topics like monetization and promotion. With all of these tips and tools in hand, your next idea could be the next great WordPress plugin.
This is the first presentation I have made in my company, it is useful to the guys who know little about Watir. It provides a direction about the whole Watir flow, including details and frame, including theory and practice. Expect it can kind of help you guys on the way of Watir.
Testing web front ends is a pain, partly because we end up testing the back end with them. Selenium helps by automating the input, but the selenium driver code lacks high-level interfaces for things like "find_and_click" or "find_and_key". Adding these with a wrapper makes data-driven selenium testing via Object::Exercise easy.
Concise guide to starting with Behat.
Covers:
* What is Behat?
* How do you get started with Behat?
* How to write tests?
* How to write good tests!
How to write portable tests, and other common problems.
"Managing API Complexity". Matthew Flaming, TembooYandex
Ā
APIs are proliferating on the web, providing app developers with ready access to a wide range of data and services, yet very few apps take advantage of more than one or two API providers. Arbitrary inconsistencies between APIs -- from authentication to input/output formats to details as small as timestamps or pagination -- mean every new API brings its own unnecessarily redundent learning curve, draining developer's most precious resource: time.
Temboo is part of an emerging class of services for managing and scaling API usage. By NORMALIZING access to APIs (as well as their associated documentation and credentials) these services do for development what PaaS and server virtualization have already done for app deployment and infrastructure. "Code virtualization", whereby all the tedious details of API access are abstracted away in standardized cloud-based processes, will free developers to spend their time writing only the code that actually makes their app unique. And that means more unique apps for everyone.
Does Behaviour Driven Development have a role in the infrastructure world? Enter Behaviour Driven Infrastructure where systems administrators can apply some simple open source tools and BDD principles to make infrastructure management more powerful, more insightful and deliver more value to their customers.
The typical enterprise monitoring and configuration management set-up for a website is:
- Is the Apache package installed and the appropriate version?
- Is the Apache service running?
- Can I connect to the HTTP port and is HTML returned?
- Multiply this by a few hundred iterations of hosts and types of services and youāre probably looking at your typical Nagios, Puppet, Cfengine, Hyperic set-up.
All this monitoring misses something critical though ā weāre not actually monitoring that the service does what it should. Yes, it matters whether Apache is installed, the Apache service is running, and you can connect to HTTP but does this actually prove anything about the availability of the service weāre managing and providing for our customers? Nopeā¦
We need to demonstrate more than just a check that says the Apache server is up. We need to demonstrate that the service delivered by that infrastructure was available to our customers AND functioning as intended.
Enter Behaviour Driven Infrastructure or BDI which applies the principles of Behavioural Driven Development to the management of infrastructure. In this presentation youāll learn:
- How Behaviour Driven Development works
- What makes a behavioural test
- How to install and use Cucumber to perform BDI
- Practical examples of behavioural tests in Cucumber, and
- How to integrate BDI into your work flow and your enterprise monitoring and configuration management frameworks.
Presented at WordCamp Montreal 2014
Do you ever browse the WordPress Plugin Directory and wish you could see your creations up there? Have you ever written code for a personal site or customer and thought that others could benefit from having access to your work? āSo, you want to be a plugin developer?ā covers numerous aspects of plugin development, including finding an idea for your plugin and securing a space for it in the directory, programming resources and code quality guidelines to make sure your add-on is top-notch, and more business-oriented topics like monetization and promotion. With all of these tips and tools in hand, your next idea could be the next great WordPress plugin.
This is the first presentation I have made in my company, it is useful to the guys who know little about Watir. It provides a direction about the whole Watir flow, including details and frame, including theory and practice. Expect it can kind of help you guys on the way of Watir.
Behavior driven development with calabash for androidTeresa Holfeld
Ā
We all want to use some sort of agile process. There we usually have a Product Owner who sets the acceptance criteria for the tickets. After implementing it, we developers should show that what we did matches the acceptance criteria, ideally with some automated tests. Behavior Driven Development with Calabash is a way we can use natural language acceptance criteria as UI tests, and make both our life and the life of our Product Owner easier.
Programming languages must be implemented in Java or C, everybody knows this. Sure, a prototype in Ruby, but that would be unusable. After all, Ruby is made for web development, right? Hard tasks, like implementing a compiler, have to happen in far more manly languages. But wait, the Rubinius compiler is written completely in Ruby, and it seems to get pretty decent performance, maybe we can use that.
In this talk, we will explore the possibilities of using the Rubinius compiler tool chain to implement our own programming language targeting the Rubinius VM. We get all the hard work that went into Rubinius for free and above all, can do the heavy lifting in Ruby, everyone's favorite programming language.
As an example we'll use Reak, a Smalltalk implementation running on Rubinius.
Do you have multiple configuration management languages in production simultaneously? Do you find yourself having to accommodate for multiple deployment flows, dependencies, code structures and syntax for tools that do similar tasks? This talk will consist of demos, stories and structures to help you quantify and define what is slowing your flow, recognize equivalencies between languages for translation, and help you map the way to successfully iterate towards unity of tooling with Puppet. In this session, I will: *Discuss causes and prevention of duplicate tooling *Quantify resource cost of duplicate tooling *Define existing language roles *Identify similarities in language structure *Discuss and demonstrate conversion techniques
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Ā
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Ā
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Ā
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overviewā
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
Ā
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
DevOps and Testing slides at DASA ConnectKari Kakkonen
Ā
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Ā
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But thereās more:
In a second workflow supporting the same use case, youāll see:
Your campaign sent to target colleagues for approval
If the āApproveā button is clicked, a Jira/Zendesk ticket is created for the marketing design team
Butāif the āRejectā button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Ā
Are you looking to streamline your workflows and boost your projectsā efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, youāre in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part āEssentials of Automationā series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Hereās what youāll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
Weāll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Donāt miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Ā
Clients donāt know what they donāt know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clientsā needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Ā
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
8. Scenario: Ecstatic Underground attendees
Given people turned up
When Joseph talks
Then everyone should learn something new
And no-one should fall asleep
And no cucumbers should be thrown
14. Outside-in
User
Browser
Views
Controllers
Models
15. āI believe that the hardest part of software projects, the
most common source of project failure, is
communication with the customers and users of
that software.
By providing a clear yet precise language to deal
with domains, a DSL can help improve this
communication.ā
Martin Fowler
24. For Cuke Sake Why?
ā¢ Token Conversation
ā¢ Acceptance Criteria
ā¢ Design
ā¢ Documentation
ā¢ Functional test
ā¢ Integration test
25. Cucumber Feature
Feature: Be awesome Not
Narrative executed
Example of
Scenario: title
behaviour
which rocks
Given <some context>
And <yet more context>
When <some action>
Steps
And <more actions>
Then <some outcome>
And <more outcomes>
26. Cucumber Feature
Feature: Be awesome Not
Narrative executed
Example of
Scenario: title
behaviour
which rocks
Given <some context>
And <yet more context>
When <some action>
Steps
And <more actions>
Then <some outcome>
And <more outcomes>
28. Plaintext
Step Given a foaming cuke
Ruby Plaintext
Plaintext
Ruby
Ruby
29. Plaintext
Step Given a foaming cuke
Ruby Plaintext
Plaintext
Given /^a foaming (.*)$/i do |fruit|
Step fruit.should == 'cukes'
#assert_equal(fruit, 'cukes')
deļ¬nition end
Ruby
Ruby
30. Plaintext
Step Given a foaming cuke
regexp match
Ruby Plaintext
Plaintext
Given /^a foaming (.*)$/i do |fruit|
Step fruit.should == 'cukes'
#assert_equal(fruit, 'cukes')
deļ¬nition end
Ruby
Ruby
35. Š¾Š³ŃŃŠµŃ Russian
concombre French
Japanese
OkurkovĆ½ Czech
Gurke German
Cucumber English
pepino Spanish
cetriolo Italian
agurk Danish
ā«ļŗļ³ļ»“ļŗļŗā¬ Arabic
ketimun Indonesian
ā«×Ö°×Öøפְפֹ××ā¬ Hebrew
Cogombre Catalan
CUCUMBR LOLCats
Agurk Norwegian
36. Š¾Š³ŃŃŠµŃ Russian Korean
concombre French
gurka Swedish
Japanese
castravete Romanian
OkurkovĆ½ Czech
ogĆ³rek Polish
Gurke German
Cucumber English Kurk Estonian
pepino Spanish dĘ°a chuį»t Vietnamese
cetriolo Italian uhorka Slovak
agurk Danish gurÄ·is Latvian
ā«ļŗļ³ļ»“ļŗļŗā¬ Arabic Agurkas Lithuanian
ketimun Indonesian SalƔtauborka Hungarian
ā«×Ö°×Öøפְפֹ××ā¬ Hebrew
Kurkku Finnish
Cogombre Catalan
ŠŃŠ°ŃŃŠ°Š²ŠøŃŠ° Bulgarian
CUCUMBR LOLCats
Agurk Norwegian Pepino Portuguese
37. # language: en-au
Crikey: Eating
Mate: cucumbers
Ya now how I have 3 cucumbers
When I eat 2 cucumbers
Ya gotta have 2 cucumbers in the belly
N I have 1 cucumber left
YaNowHow /^I have (d+) cucumbers$/ do |n|
@basket = Basket.new(n.to_i)
end
When /^I eat (d+) cucumbers$/ do |n|
@belly = Belly.new
@belly.eat(@basket.take(n.to_i))
end
YaGotta /^have (d+) cucumbers in the belly$/ do |n|
@belly.cukes.should == n.to_i
end
48. Story
Story: Film Member selects a movie to rent with priority
As a Film member
I want to add movies to my rental list with a priority
So that ...
49. Story
Story: Film Member selects a movie to rent with priority
As a Film member
I want to add movies to my rental list with a priority
So that ...
Give me the movie
NOW!
50. Feature Injection
Feature: Film Member selects a movie to rent with priority
In order to maximise allocation of films
The Stock department
Wants Film members to add movies to their rental list with
a priority
51. Feature Injection
Value
Feature: Film Member selects a movie to rent with priority
In order to maximise allocation of films
The Stock department
Wants Film members to add movies to their rental list with
a priority
52. Feature Injection
Value
Feature: Film Member selects a movie to rent with priority
In order to maximise allocation of films
The Stock department
Wants Film members to add movies to their rental list with
Role a priority
53. Feature Injection
Value
Feature: Film Member selects a movie to rent with priority
In order to maximise allocation of films
The Stock department
Wants Film members to add movies to their rental list with
Role a priority
Role
54. Feature Injection
Value
Feature: Film Member selects a movie to rent with priority
In order to maximise allocation of films
The Stock department
Wants Film members to add movies to their rental list with
Role a priority
Role Feature
55. Are we
Acceptance
done yet?
Deļ¬nition of Done.
56. Scenarios
Feature: Film Member selects a movie to rent with priority
In order to maximise allocation of films
The Stock department
Wants Film members to add movies to their rental list with
a priority
Scenario: High priority
57. Scenarios
Feature: Film Member selects a movie to rent with priority
In order to maximise allocation of films
The Stock department
Wants Film members to add movies to their rental list with
a priority
Scenario: High priority
Given I'm logged in
And I am viewing the movie "Casshern"
When I choose "High priority"
And I press "Rent"
Then I should see "My rental list"
And I should see "Casshern" in my rental list
And "Casshern" should be marked as "High priority"
65. The Art of
War Plaintext
, ,
@"===, ,_____cctI
"?AAAAAAAAAAAAAAAA,,,,,,,,,,,,,,,,,,,,,;LLLLLLLLLL
~",,, 1""""""""""""###OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
'"EEEEE, !'"***"~~~~~~"OOOIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
,EEEEE)>"'''???????"WWW!MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
"E.,)+="WWW~~~~~~#"OOO1OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
,~:#")LLL!"+++???????"$$$1==========##/
&LLLLLLLLL;;;;;;;;;;;;,,,/
1#LLLLLLLLLLLLLLLLLLLLLL!
,!###LLLLLL"'EEEE,'"LLLLL!
!######LLL" "EEE" "LLLL"
!#########L! "EEJ. "LL!
!##########1 "JJ*,l"
!############"! ,l"
1##########" 1"~~,~~"
!##########"
!###########!
!###########1
!############!
1#############
!"#############"
!##############!
1##########"' A magnum, By calendron
1#####"'
"""""
66. Donāt force
Feature: Title
In order to <value>
As a <role>
structure I want <feature>
67. Avoid Noise!
Given I am able to login
Given I am able to login
68. Avoid Given I login
Given I authenticate
Inconsistency Given I gain access
69. Given I go to the login page
Balance
And I fill in "username" with "cuke"
And I fill in "password" with "cuker"
And I click "login"
Abstraction Given I'm logged in
70. Use Language
Building blocks
Given /Iām logged in/ do
User.create!(:user => 'josephwilk', :password => "pass")
Given 'I fill in "password" with "josephwilk"'
Given 'I fill in "password" with "pass"'
Given 'I click "login"'
end
71. Email Email-spec
Webpages Webrat
Forms Webrat
Java/Swing Swinger
72. Gherkin Metrics?
Lack of narrative
# language: en-au
Crikey: Eating
Mate: cucumbers Number
Ya now how I have 3 cucumbers
When I eat 2 cucumbers of steps
Ya gotta have 2 cucumbers in the belly
N I have 1 cucumber left
Number of Semantically
noise words similar words
74. Spork
require 'rubygems'
require 'spork'
# Sets up the Rails environment for Cucumber
ENV["RAILS_ENV"] ||= "cucumber"
Spork.prefork do
$ spork cuc
# Load all the heavy stuff...
end
Spork.each_run do
$ cucumber --drb ...
# Load the stuff just for this run...
Before do
Pages.delete_all
end
end
79. Tag Hooks Before(ā@teleportā) do
teleport.prepare
Attach code to tags end
80. Focused Testing
@teleport
Feature: Invent teleportation
Run just enough tests @money
Feature: Make lots of money
81. Continuous Integration(WIP)
Fail
Work in Pass
Done
Pending
progress
add list $ cucumber --wip
movies movies
--tags @WIP
features/
edit
movies
delete
movies
82. Limiting Tags in Flow
Work in
Done
progress
add add add add
movies movies
movies movies $ cucumber --tags @WIP:3
features/
add add add edit
movies movies
movies movies limit 3 tags
add add add
delete
movies movies
movies movies