X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/89096c06922b406f7157082de410e40960f5c73e..9b3223e5cbcd1eb89193e8421d430025ddf791d1:/apps/workbench/test/integration_helper.rb diff --git a/apps/workbench/test/integration_helper.rb b/apps/workbench/test/integration_helper.rb index ed6f7c21ea..39fdf4b260 100644 --- a/apps/workbench/test/integration_helper.rb +++ b/apps/workbench/test/integration_helper.rb @@ -4,6 +4,21 @@ require 'capybara/poltergeist' require 'uri' require 'yaml' +POLTERGEIST_OPTS = { + window_size: [1200, 800], + phantomjs_options: ['--ignore-ssl-errors=true'], + inspector: true, +} + +Capybara.register_driver :poltergeist do |app| + Capybara::Poltergeist::Driver.new app, POLTERGEIST_OPTS +end + +Capybara.register_driver :poltergeist_without_file_api do |app| + js = File.expand_path '../support/remove_file_api.js', __FILE__ + Capybara::Poltergeist::Driver.new app, POLTERGEIST_OPTS.merge(extensions: [js]) +end + module WaitForAjax Capybara.default_wait_time = 5 def wait_for_ajax @@ -17,11 +32,69 @@ module WaitForAjax end end +module AssertDomEvent + # Yield the supplied block, then wait for an event to arrive at a + # DOM element. + def assert_triggers_dom_event events, target='body' + magic = 'received-dom-event-' + rand(2**30).to_s(36) + page.evaluate_script < api_token) - "#{path}#{sep}#{q_string}" + path_parts.insert(1, "#{sep}#{q_string}") + path_parts.join("") end # Find a page element, but return false instead of raising an @@ -49,11 +124,17 @@ class ActionDispatch::IntegrationTest end end - @@screenshot_count = 0 + @@screenshot_count = 1 def screenshot - image_file = "./tmp/workbench-fail-#{@@screenshot_count += 1}.png" - page.save_screenshot image_file - puts "Saved #{image_file}" + image_file = "./tmp/workbench-fail-#{@@screenshot_count}.png" + begin + page.save_screenshot image_file + rescue Capybara::NotSupportedByDriverError + # C'est la vie. + else + puts "Saved #{image_file}" + @@screenshot_count += 1 + end end teardown do @@ -63,5 +144,6 @@ class ActionDispatch::IntegrationTest if Capybara.current_driver == :selenium page.execute_script("window.localStorage.clear()") end + Capybara.reset_sessions! end end