X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/52ecfbd9838f9f643de1e0bd579aaa3576db565d..8cd99fc692479db9c2aaa211d34ce7d62df47328:/apps/workbench/test/diagnostics_test_helper.rb diff --git a/apps/workbench/test/diagnostics_test_helper.rb b/apps/workbench/test/diagnostics_test_helper.rb index a78bf6649f..d53753dbed 100644 --- a/apps/workbench/test/diagnostics_test_helper.rb +++ b/apps/workbench/test/diagnostics_test_helper.rb @@ -1,22 +1,82 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'integration_helper' require 'yaml' +# Diagnostics tests are executed when "RAILS_ENV=diagnostics" is used. +# When "RAILS_ENV=test" is used, tests in the "diagnostics" directory +# will not be executed. + +# Command to run diagnostics tests: +# RAILS_ENV=diagnostics bundle exec rake TEST=test/diagnostics/**/*.rb + class DiagnosticsTest < ActionDispatch::IntegrationTest + # Prepends workbench URL to the path provided and visits that page + # Expects path parameters such as "/collections/" def visit_page_with_token token_name, path='/' - tokens = Rails.configuration.diagnostics_testing_user_tokens - visit page_with_token(tokens[token_name], path) + workbench_url = Rails.configuration.arvados_workbench_url + if workbench_url.end_with? '/' + workbench_url = workbench_url[0, workbench_url.size-1] + end + tokens = Rails.configuration.user_tokens + visit page_with_token(tokens[token_name], (workbench_url + path)) end - def diagnostic_test_pipeline_config pipeline_to_run - Rails.configuration.diagnostics_testing_pipeline_fields[pipeline_to_run] + def select_input look_for + inputs_needed = page.all('.btn', text: 'Choose') + return if (!inputs_needed || !inputs_needed.any?) + + look_for_uuid = nil + look_for_file = nil + if look_for.andand.index('/').andand.>0 + partitions = look_for.partition('/') + look_for_uuid = partitions[0] + look_for_file = partitions[2] + else + look_for_uuid = look_for + look_for_file = nil + end + + assert_triggers_dom_event 'shown.bs.modal' do + inputs_needed[0].click + end + + within('.modal-dialog') do + if look_for_uuid + fill_in('Search', with: look_for_uuid, exact: true) + wait_for_ajax + end + + page.all('.selectable').first.click + wait_for_ajax + # ajax reload is wiping out input selection after search results; so, select again. + page.all('.selectable').first.click + wait_for_ajax + + if look_for_file + wait_for_ajax + within('.collection_files_name', text: look_for_file) do + find('.fa-file').click + end + end + + find('button', text: 'OK').click + wait_for_ajax + end end + # Looks for the text_to_look_for for up to the max_time provided def wait_until_page_has text_to_look_for, max_time=30 max_time = 30 if (!max_time || (max_time.to_s != max_time.to_i.to_s)) + text_found = false Timeout.timeout(max_time) do - loop until page.has_text?(text_to_look_for) + until text_found do + visit_page_with_token 'active', current_path + text_found = has_text?(text_to_look_for) + end end end - end