website design singapore,graphic designer in singapore,singapore mobile app developer,singapore website design,website designer singapore,singapore app developer,web design services singapore,mobile apps singapore,design agency singapore,mobile developer singapore,android developer singapore,web designer singapore,website developer singapore,singapore web development,app developer singapore,ios app development singapore,website development singapore,web application singapore,ios developer singapore,web development company singapore,web design singapore,ruby on rails developer singapore,app development singapore,singapore web design,design firms in singapore,mobile app developer singapore,mobile apps development singapore,mobile game developer singapore,singapore web design services,mobile application development singapore,developer in singapore,developers in singapore,mobile app development singapore,web design company singapore,singapore mobile application developer,mobile application developer singapore,web development singapore

Testing for javascript alerts with Cucumber & Capybara

Using Cumcumber + Capybara to run automated testing is a TRENDY now. But you might have trouble finding a way to assert a javascript alert, for e.g. a link created by the link_to … :confirm => “Are you sure?” and similar.

Don’t worry, here is a work around to confirm Javascript alert and dialog in your Capybara tests, simply override alert and confirm methods:

Given /^I will confirm on next step$/ do
begin
evaluate_script(“window.alert = function(msg) { return true; }”)
evaluate_script(“window.confirm = function(msg) { return true; }”)
rescue Capybara::NotSupportedByDriverError
end
end

Rescue here is added in case, you run want to run your tests without javascript (e.g. default capybara driver). If you run feature without javascript simply nothing will happen.

Moreover, using this technique you can simulate moving mouse over some elements. It is useful, when you have links that appears when certain div is under the mouse cursor.

Then /^I move mouse over “([^”]*)”$/ do |label|
begin
Capybara.current_session.driver.browser.execute_script(“$(‘#{label}’).mouseover();”)
rescue Capybara::NotSupportedByDriverError
end
end

That’s it. Happy testing !

%d bloggers like this:
WordPress