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

Reply via email to