jenkins-bot has submitted this change and it was merged. Change subject: QA: Updates to browser tests to avoid flakiness ......................................................................
QA: Updates to browser tests to avoid flakiness * Wait until the form submits successfully, verifying it worked by testing for the notification toast. * Drop sleep statements where possible - instead use when_present Use one when asserting something doesn't show to avoid false positives * Allow more time for the hovercard to show (5s) - API requests might take longer than default time. * Assert popups JavaScript loads before continuing with test. This helped trap a bug in testing and will be useful for future. Bug: T133019 Depends-On: Icb1e6ddc8f95da5e4b4de2916d292694c11ba731 Change-Id: Iacd3beedf44cadffcf0285231b2df7e5b64294f6 --- M tests/browser/features/popups_core.feature M tests/browser/features/support/pages/special_preferences_page.rb M tests/browser/features/support/step_definitions/common_steps.rb M tests/browser/features/support/step_definitions/popups_core.rb 4 files changed, 18 insertions(+), 4 deletions(-) Approvals: Bmansurov: Looks good to me, approved jenkins-bot: Verified diff --git a/tests/browser/features/popups_core.feature b/tests/browser/features/popups_core.feature index aa243ce..13b0893 100644 --- a/tests/browser/features/popups_core.feature +++ b/tests/browser/features/popups_core.feature @@ -5,6 +5,7 @@ And I am logged in And HoverCards is enabled as a beta feature And I am on the "Popups test page" page + And the Hovercards JavaScript module has loaded Scenario: Hover card is visible on mouse over And I hover over the first valid link diff --git a/tests/browser/features/support/pages/special_preferences_page.rb b/tests/browser/features/support/pages/special_preferences_page.rb index 897851e..cff4fa5 100644 --- a/tests/browser/features/support/pages/special_preferences_page.rb +++ b/tests/browser/features/support/pages/special_preferences_page.rb @@ -5,11 +5,16 @@ a(:beta_features_tab, css: '#preftab-betafeatures') text_field(:hovercards_checkbox, css: '#mw-input-wppopups') button(:submit_button, css: '#prefcontrol') + div(:notification, css: ".mw-notification") def enable_hovercards beta_features_tab_element.when_present.click return unless hovercards_checkbox_element.attribute('checked').nil? hovercards_checkbox_element.click submit_button_element.when_present.click + + # Note well that Element#wait_until_present is more semantic but is + # deprecated. Fortunately, #when_present simply wraps #wait_until_present. + notification_element.when_present end -end \ No newline at end of file +end diff --git a/tests/browser/features/support/step_definitions/common_steps.rb b/tests/browser/features/support/step_definitions/common_steps.rb index 0ad6985..008b7bf 100644 --- a/tests/browser/features/support/step_definitions/common_steps.rb +++ b/tests/browser/features/support/step_definitions/common_steps.rb @@ -9,3 +9,11 @@ Then(/^HoverCards is enabled as a beta feature$/) do visit(SpecialPreferencesPage).enable_hovercards end + +Given(/^the Hovercards JavaScript module has loaded$/) do + on(ArticlePage) do |page| + page.wait_until do + browser.execute_script("return mw.loader.getState('ext.popups.desktop') === 'ready'") + end + end +end diff --git a/tests/browser/features/support/step_definitions/popups_core.rb b/tests/browser/features/support/step_definitions/popups_core.rb index 23f061b..d1374c1 100644 --- a/tests/browser/features/support/step_definitions/popups_core.rb +++ b/tests/browser/features/support/step_definitions/popups_core.rb @@ -1,17 +1,17 @@ When(/^I hover over the page header$/) do on(ArticlePage).page_header_element.hover - sleep 1 # and dwell on it for a sec to give time for the visible hover card hide itself end When(/^I hover over the first valid link$/) do on(ArticlePage).first_valid_link_element.hover - sleep 1 # and dwell on it for a sec to give time for hover card to appear end Then(/^I should see a hover card$/) do - expect(on(ArticlePage).hovercard_element).to be_visible + expect(on(ArticlePage).hovercard_element.when_present(5)).to be_visible end Then(/^I should not see a hover card$/) do + # Requesting a hovercard hits API so wait time before asserting it did not show + sleep 5 expect(on(ArticlePage).hovercard_element).not_to be_visible end -- To view, visit https://gerrit.wikimedia.org/r/284449 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Iacd3beedf44cadffcf0285231b2df7e5b64294f6 Gerrit-PatchSet: 8 Gerrit-Project: mediawiki/extensions/Popups Gerrit-Branch: master Gerrit-Owner: Bmansurov <bmansu...@wikimedia.org> Gerrit-Reviewer: Bmansurov <bmansu...@wikimedia.org> Gerrit-Reviewer: Jdlrobson <jrob...@wikimedia.org> Gerrit-Reviewer: Phuedx <g...@samsmith.io> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits