From: radhika Date: Sat, 16 Aug 2014 01:09:15 +0000 (-0400) Subject: 3112: update tests to test ajax success and associated popup changes when a report... X-Git-Tag: 1.1.0~2266^2~38 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/d4cc835615a729c33460c6bb2ad8976808674a5c 3112: update tests to test ajax success and associated popup changes when a report is sent. --- diff --git a/apps/workbench/test/integration/application_layout_test.rb b/apps/workbench/test/integration/application_layout_test.rb index a4b30f232b..78ed2365e2 100644 --- a/apps/workbench/test/integration/application_layout_test.rb +++ b/apps/workbench/test/integration/application_layout_test.rb @@ -19,45 +19,45 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest profile_config = Rails.configuration.user_profile_form_fields if !user - assert page.has_text? 'Please log in' - assert page.has_text? 'The "Log in" button below will show you a Google sign-in page' - assert page.has_no_text? 'My projects' - assert page.has_link? "Log in to #{Rails.configuration.site_name}" + assert page.has_text?('Please log in'), 'Not found text - Please log in' + assert page.has_text?('The "Log in" button below will show you a Google sign-in page'), 'Not found text - google sign in page' + assert page.has_no_text?('My projects'), 'Found text - My projects' + assert page.has_link?("Log in to #{Rails.configuration.site_name}"), 'Not found text - log in to' elsif profile_config && !has_profile && user['is_active'] add_profile user elsif user['is_active'] - assert page.has_text? 'My projects' - assert page.has_text? 'Projects shared with me' - assert page.has_no_text? 'Save profile' + assert page.has_text?('My projects'), 'Not found text - My projects' + assert page.has_text?('Projects shared with me'), 'Not found text - Project shared with me' + assert page.has_no_text?('Save profile'), 'Found text - Save profile' elsif invited - assert page.has_text? 'Please check the box below to indicate that you have read and accepted the user agreement' - assert page.has_no_text? 'Save profile' + assert page.has_text?('Please check the box below to indicate that you have read and accepted the user agreement'), 'Not found text - Please check the box below . . .' + assert page.has_no_text?('Save profile'), 'Found text - Save profile' else - assert page.has_text? 'Your account is inactive' - assert page.has_no_text? 'Save profile' + assert page.has_text?('Your account is inactive'), 'Not found text - Your account is inactive' + assert page.has_no_text?('Save profile'), 'Found text - Save profile' end within('.navbar-fixed-top') do if !user - assert page.has_link? 'Log in' + assert page.has_link?('Log in'), 'Not found link - Log in' else # my account menu - assert page.has_link? "#{user['email']}" + assert page.has_link?("#{user['email']}"), 'Not found link - email' find('a', text: "#{user['email']}").click within('.dropdown-menu') do if user['is_active'] - assert page.has_no_link? ('Not active') - assert page.has_no_link? ('Sign agreements') + assert page.has_no_link?('Not active'), 'Found link - Not active' + assert page.has_no_link?('Sign agreements'), 'Found link - Sign agreements' - assert page.has_link? ('Manage account') + assert page.has_link?('Manage account'), 'No link - Manage account' if profile_config - assert page.has_link? ('Manage profile') + assert page.has_link?('Manage profile'), 'No link - Manage profile' else - assert page.has_no_link? ('Manage profile') + assert page.has_no_link?('Manage profile'), 'Found link - Manage profile' end end - assert page.has_link? ('Log out') + assert page.has_link?('Log out'), 'No link - Log out' end end end @@ -68,11 +68,11 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest within('.navbar-fixed-top') do page.find("#arv-help").click within('.dropdown-menu') do - assert page.has_link? 'Tutorials and User guide' - assert page.has_link? 'API Reference' - assert page.has_link? 'SDK Reference' - assert page.has_link? 'Show version / debugging info' - assert page.has_link? 'Report a problem' + assert page.has_link?('Tutorials and User guide'), 'No link - Tutorials and User guide' + assert page.has_link?('API Reference'), 'No link - API Reference' + assert page.has_link?('SDK Reference'), 'No link - SDK Reference' + assert page.has_link?('Show version / debugging info'), 'No link - Show version / debugging info' + assert page.has_link?('Report a problem'), 'No link - Report a problem' # check show version info link click_link 'Show version / debugging info' @@ -80,16 +80,16 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end within '.modal-content' do - assert page.has_text? 'Version / debugging info' - assert page.has_no_text? 'Report a problem' - assert page.has_text? 'Server version' - assert page.has_text? 'Server restarted at' - assert page.has_text? 'Workbench version' - assert page.has_text? 'Arvados base' - assert page.has_text? 'Additional info' - assert page.has_no_text? 'Found a problem?' - assert page.has_button? 'Close' - assert page.has_no_button? 'Report issue' + assert page.has_text?('Version / debugging info'), 'No text - Version / debugging info' + assert page.has_no_text?('Report a problem'), 'Found text - Report a problem' + assert page.has_text?('Server version'), 'No text - Server version' + assert page.has_text?('Server restarted at'), 'No text - Server restarted at' + assert page.has_text?('Workbench version'), 'No text - Workbench version' + assert page.has_text?('Arvados base'), 'No text - Arvados base' + assert page.has_text?('Additional info'), 'No text - Additional info' + assert page.has_no_text?('Found a problem?'), 'Found text - Found a problem' + assert page.has_button?('Close'), 'No button - Close' + assert page.has_no_button?('Report issue'), 'Found button - Report issue' click_button 'Close' end @@ -102,24 +102,31 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end within '.modal-content' do - assert page.has_text? 'Report a problem' - assert page.has_no_text? 'Version / debugging info' - assert page.has_text? 'Server version' - assert page.has_text? 'Server restarted at' - assert page.has_text? 'Workbench version' - assert page.has_text? 'Arvados base' - assert page.has_text? 'Additional info' - assert page.has_text? 'Found a problem?' - assert page.has_no_button? 'Close' - assert page.has_button? 'Report issue' - assert page.has_button? 'Cancel' + assert page.has_text?('Report a problem'), 'No text - Report a problem' + assert page.has_no_text?('Version / debugging info'), 'Found text - Version / debugging info' + assert page.has_text?('Server version'), 'No text - Server version' + assert page.has_text?('Server restarted at'), 'No text - Server restarted at' + assert page.has_text?('Workbench version'), 'No text - Workbench version' + assert page.has_text?('Arvados base'), 'No text - Arvados base' + assert page.has_text?('Additional info'), 'No text - Additional info' + assert page.has_text?('Found a problem?'), 'No text - Found a problem' + assert page.has_no_button?('Close'), 'Found button - Close' + assert page.has_button?('Report issue'), 'No button - Report issue' + assert page.has_button?('Cancel'), 'No button - Cancel' # enter a report text and click on report page.find_field('report_issue_text').set 'my test report text' click_button 'Report issue' - end - assert page.has_no_text? 'Version / debugging info' + # ajax success updated button texts and added footer message + assert page.has_no_button?('Report issue'), 'Found button - Report issue' + assert page.has_no_button?('Cancel'), 'Found button - Cancel' + assert page.has_text?('Report sent'), 'No text - Report sent' + assert page.has_button?('Close'), 'No text - Close' + assert page.has_text?('Thanks for reporting this issue'), 'No text - Thanks for reporting this issue' + + click_button 'Close' + end end def verify_system_menu user @@ -129,21 +136,21 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest page.find("#system-menu").click if user['is_admin'] within('.dropdown-menu') do - assert page.has_text? 'Groups' - assert page.has_link? 'Repositories' - assert page.has_link? 'Virtual machines' - assert page.has_link? 'SSH keys' - assert page.has_link? 'API tokens' + assert page.has_text?('Groups'), 'No text - Groups' + assert page.has_link?('Repositories'), 'No link - Repositories' + assert page.has_link?('Virtual machines'), 'No link - Virtual machines' + assert page.has_link?('SSH keys'), 'No link - SSH keys' + assert page.has_link?('API tokens'), 'No link - API tokens' find('a', text: 'Users').click look_for_add_new = 'Add a new user' end else within('.dropdown-menu') do - assert page.has_no_text? 'Users' - assert page.has_no_link? 'Repositories' - assert page.has_no_link? 'Virtual machines' - assert page.has_no_link? 'SSH keys' - assert page.has_no_link? 'API tokens' + assert page.has_no_text?('Users'), 'Found text - Users' + assert page.has_no_link?('Repositories'), 'Found link - Repositories' + assert page.has_no_link?('Virtual machines'), 'Found link - Virtual machines' + assert page.has_no_link?('SSH keys'), 'Found link - SSH keys' + assert page.has_no_link?('API tokens'), 'Found link - API tokens' find('a', text: 'Groups').click look_for_add_new = 'Add a new group' @@ -154,7 +161,7 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest assert page.has_text? look_for_add_new end else - assert page.has_no_link? '#system-menu' + assert page.has_no_link?('#system-menu'), 'Found link - system menu' end end @@ -169,29 +176,29 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end # now in manage account page - assert page.has_text? 'Virtual Machines' - assert page.has_text? 'Repositories' - assert page.has_text? 'SSH Keys' - assert page.has_text? 'Current Token' + assert page.has_text?('Virtual Machines'), 'No text - Virtual Machines' + assert page.has_text?('Repositories'), 'No text - Repositories' + assert page.has_text?('SSH Keys'), 'No text - SSH Keys' + assert page.has_text?('Current Token'), 'No text - Current Token' - assert page.has_text? 'The Arvados API token is a secret key that enables the Arvados SDKs to access Arvados' + assert page.has_text?('The Arvados API token is a secret key that enables the Arvados SDKs to access Arvados'), 'No text - Arvados API token' click_link 'Add new SSH key' within '.modal-content' do - assert page.has_text? 'Public Key' - assert page.has_button? 'Cancel' - assert page.has_button? 'Submit' + assert page.has_text?('Public Key'), 'No text - Public Key' + assert page.has_button?('Cancel'), 'No button - Cancel' + assert page.has_button?('Submit'), 'No button - Submit' page.find_field('public_key').set 'first test with an incorrect ssh key value' click_button 'Submit' - assert page.has_text? 'Public key does not appear to be a valid ssh-rsa or dsa public key' + assert page.has_text?('Public key does not appear to be a valid ssh-rsa or dsa public key'), 'No text - Public key does not appear to be a valid' public_key_str = api_fixture('authorized_keys')['active']['public_key'] page.find_field('public_key').set public_key_str page.find_field('name').set 'added_in_test' click_button 'Submit' - assert page.has_text? 'Public key already exists in the database, use a different key.' + assert page.has_text?('Public key already exists in the database, use a different key.'), 'No text - Public key already exists' new_key = SSHKey.generate page.find_field('public_key').set new_key.ssh_public_key @@ -200,30 +207,30 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end # key must be added. look for it in the refreshed page - assert page.has_text? 'added_in_test' + assert page.has_text?('added_in_test'), 'No text - added_in_test' end end # Check manage profile page and add missing profile to the user def add_profile user - assert page.has_no_text? 'My projects' - assert page.has_no_text? 'Projects shared with me' + assert page.has_no_text?('My projects'), 'Found text - My projects' + assert page.has_no_text?('Projects shared with me'), 'Found text - Projects shared with me' - assert page.has_text? 'Profile' - assert page.has_text? 'First name' - assert page.has_text? 'Last name' - assert page.has_text? 'Identity URL' - assert page.has_text? 'Email' - assert page.has_text? user['email'] + assert page.has_text?('Profile'), 'No text - Profile' + assert page.has_text?('First name'), 'No text - First name' + assert page.has_text?('Last name'), 'No text - Last name' + assert page.has_text?('Identity URL'), 'No text - Identity URL' + assert page.has_text?('Email'), 'No text - Email' + assert page.has_text?(user['email']), 'No text - user email' # Using the default profile which has message and one required field # Save profile without filling in the required field. Expect to be back in this profile page again click_button "Save profile" - assert page.has_text? 'Profile' - assert page.has_text? 'First name' - assert page.has_text? 'Last name' - assert page.has_text? 'Save profile' + assert page.has_text?('Profile'), 'No text - Profile' + assert page.has_text?('First name'), 'No text - First name' + assert page.has_text?('Last name'), 'No text - Last name' + assert page.has_text?('Save profile'), 'No text - Save profile' # This time fill in required field and then save. Expect to go to requested page after that. profile_message = Rails.configuration.user_profile_form_message @@ -237,18 +244,18 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end end - assert page.has_text? profile_message[0,25] - assert page.has_text? required_field_title + assert page.has_text?(profile_message[0,25]), 'No text - configured profile message' + assert page.has_text?(required_field_title), 'No text - configured required field title' page.find_field('user[prefs][:profile][:'+required_field_key+']').set 'value to fill required field' click_button "Save profile" # profile saved and in profile page now with success - assert page.has_text? 'Thank you for filling in your profile' + assert page.has_text?('Thank you for filling in your profile'), 'No text - Thank you for filling' click_button 'Access Arvados Workbench' # profile saved and in home page now - assert page.has_text? 'My projects' - assert page.has_text? 'Projects shared with me' + assert page.has_text?('My projects'), 'No text - My projects' + assert page.has_text?('Projects shared with me'), 'No text - Projects shared with me' end # test the search box @@ -261,7 +268,7 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end # we should now be in the user's page as a result of search - assert page.has_text? user['first_name'] + assert page.has_text?(user['first_name']), 'No text - user first name' # let's search again for an invalid valid uuid within('.navbar-fixed-top') do @@ -272,21 +279,30 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end # we should see 'not found' error page - assert page.has_text? 'Not Found' - assert page.has_link? 'Report problem' + assert page.has_text?('Not Found'), 'No text - Not Found' + assert page.has_link?('Report problem'), 'No text - Report problem' click_link 'Report problem' within '.modal-content' do - assert page.has_text? 'Report a problem' - assert page.has_no_text? 'Version / debugging info' - assert page.has_text? 'Server version' - assert page.has_text? 'Server restarted at' - assert page.has_text? 'Found a problem?' - assert page.has_button? 'Report issue' - assert page.has_button? 'Cancel' + assert page.has_text?('Report a problem'), 'No text - Report a problem' + assert page.has_no_text?('Version / debugging info'), 'No text - Version / debugging info' + assert page.has_text?('Server version'), 'No text - Server version' + assert page.has_text?('Server restarted at'), 'No text - Server restarted at' + assert page.has_text?('Found a problem?'), 'No text - Found a problem' + assert page.has_button?('Report issue'), 'No button - Report issue' + assert page.has_button?('Cancel'), 'No button - Cancel' # enter a report text and click on report page.find_field('report_issue_text').set 'my test report text' click_button 'Report issue' + + # ajax success updated button texts and added footer message + assert page.has_no_button?('Report issue'), 'Found button - Report issue' + assert page.has_no_button?('Cancel'), 'Found button - Cancel' + assert page.has_text?('Report sent'), 'No text - Report sent' + assert page.has_button?('Close'), 'No text - Close' + assert page.has_text?('Thanks for reporting this issue'), 'No text - Thanks for reporting this issue' + + click_button 'Close' end # let's search for the anonymously accessible project @@ -299,9 +315,9 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end within '.modal-content' do - assert page.has_text? 'All projects' - assert page.has_text? 'Search' - assert page.has_text? 'Cancel' + assert page.has_text?('All projects'), 'No text - All projects' + assert page.has_text?('Search'), 'No text - Search' + assert page.has_text?('Cancel'), 'No text - Cancel' assert_selector('div', text: publicly_accessible_project['name']) find(:xpath, '//div[./span[contains(.,publicly_accessible_project["uuid"])]]').click @@ -309,8 +325,8 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest end # seeing "Unrestricted public data" now - assert page.has_text? publicly_accessible_project['name'] - assert page.has_text? publicly_accessible_project['description'] + assert page.has_text?(publicly_accessible_project['name']), 'No text - publicly accessible project name' + assert page.has_text?(publicly_accessible_project['description']), 'No text - publicly accessible project description' end end diff --git a/apps/workbench/test/integration/errors_test.rb b/apps/workbench/test/integration/errors_test.rb index 631de5e118..b5156b41bc 100644 --- a/apps/workbench/test/integration/errors_test.rb +++ b/apps/workbench/test/integration/errors_test.rb @@ -114,6 +114,15 @@ class ErrorsTest < ActionDispatch::IntegrationTest # enter a report text and click on report page.find_field('report_issue_text').set 'my test report text' click_button 'Report issue' + + # ajax success updated button texts and added footer message + assert page.has_no_button?('Report issue'), 'Found button - Report issue' + assert page.has_no_button?('Cancel'), 'Found button - Cancel' + assert page.has_text?('Report sent'), 'No text - Report sent' + assert page.has_button?('Close'), 'No button - Close' + assert page.has_text?('Thanks for reporting this issue'), 'No text - Thanks for reporting this issue' + + click_button 'Close' end # out of the popup now and should be back in the error page