-
Notifications
You must be signed in to change notification settings - Fork 34
Flows
- Flows move through a Site’s Pages
- Flows help DRY up test code
- Flows can take a hash to pass in values
If you had the following code in a whole lot of places in your tests:
Google.new do |google|
google.home_page do |home_page|
home_page.search_field.set "ruby ruby ruby"
home_page.search_button.click
end
end
Then it would make sense to pull this out into a method, but methods could have multiple intentions. In this case the abstract intention is to move through the Google site. Taza provides the convention of flows. To pull out the above code into a flow perform the following steps(assuming you’ve created a google Sites already):
$ ./script/generate flow search google
- open ./lib/sites/google/flows/search.rb
- Do something like
module Google class Google < ::Taza::Site def search_flow(params={}) home_page.search_field.set params[:query] home_page.search_button.click end end end
- Rip out the duplicated code and replace it with the flow call
Google.new do |google| google.search_flow :query => "ruby ruby ruby" end
Flows tend to work best not to hide code or DRY it up, but rather to express steps of a test which are not important to the actual tests assertion point. For example, if you want to test the Google Search Results page then it is important to know that a search must be performed but not necessarily how it is performed. Sometimes it is best to keep test code moist instead of completely DRY.