website designer singapore,design firms in singapore,design agency singapore,mobile apps development singapore,website developer singapore,web application singapore,app developer singapore,developer in singapore,web design singapore,mobile app development singapore,mobile developer singapore,mobile application development singapore,graphic designer in singapore,web design company singapore,ios app development singapore,ios developer singapore,web development company singapore,web designer singapore,singapore app developer,mobile game developer singapore,android developer singapore,ruby on rails developer singapore,mobile apps singapore,singapore mobile app developer,singapore web design services,website design singapore,singapore website design,singapore web development,singapore web design,mobile application developer singapore,mobile app developer singapore,website development singapore,singapore mobile application developer,web development singapore,web design services singapore,developers in singapore,app 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 !

Malcare WordPress Security