Skip to content

Instantly share code, notes, and snippets.

@awls99
Created January 15, 2014 17:41
Show Gist options
  • Save awls99/8440770 to your computer and use it in GitHub Desktop.
Save awls99/8440770 to your computer and use it in GitHub Desktop.
Notes on having more then one browser supported in cucumber at the same time.
########## CUCUMBER SAMPLE ###########
Given user "jon" goes to "google.com"
#turns into:
Given /^user "([^"]*)" goes to "([^"]*)"/ do |user_key, url|
@users[user_key].browse do |browser|
browser.goto url
end
end
######## HOOKS SAMPLE ###############
screenshot_files = Dir.glob File.join( Browser::PATH_TO_SCREENSHOT_FOLDER, '*.base64')
#no need to check if tests failed, screenshots are only created if they do!
screenshot_files.each do |file_path|
embed "data:image/png;base64,#{File.read( file_path )}", 'image/png'
File.delete file_path
end
######### BROWSER MODULE #############
require 'rubygems'
require 'selenium-webdriver'
require 'watir-webdriver'
module Browser
#CHANGE THIS PATH ACCORDING TO YOUR NEEDS!
PATH_TO_SCREENSHOT_FOLDER = File.join( File.dirname(__FILE__), '..','public' )
#SIMPLE SAMPLE
def browser
return @browser if @browser
@browser = Watir::Browser.new :firefox
end
def browse close_at_end = false, &block
error = nil
begin
yield self.browser
rescue => e
error = e
$stderr.puts 'HTML:'
$stderr.puts self.browser.html
File.open( File.join( PATH_TO_SCREENSHOT_FOLDER,"errorshot#{Time.now.to_i.to_s}.base64" ), 'w') do |file|
file.write self.browser.screenshot.base64
end
ensure
self.close if close_at_end
raise error if error
end
end
def close
@browser.close
@browser = false
return true
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment