Commit graph

62 commits

Author SHA1 Message Date
Bartosz Dziewoński 0d23ba8bbe Fix browser tests
Some browser tests were broken by 945fccf009.
The badge element is now technically rendered offscreen, with only the
:before and :after pseudoelements being onscreen. Because of this, Selenium
thinks that the badges are invisible, and this breaks various things in
totally unexpected ways.

* article_page.rb: Store references to the parent <li> elements of badges.
  This might not be necessary but I don't know how to access them otherwise.
* badge_steps.rb: When clicking the badges, click the parent <li> element
  rather than the not-really-invisible <a>. Effectively, the <a> gets
  clicked anyway, since they overlap.
* no_javascript.feature/no_javascript.rb: Wait for page load before
  checking that we're on the right page. The wait is no longer
  implicit, since Selenium thinks we're clicking the <li> rather than
  <a> (links are special-cased).
* notification_steps.rb:
  * Check whether the badges exist on the page, rather than whether they
    are visible.
  * Use a weird hack to read badge text. Apparently you can't read the text
    of elements that Selenium thinks are invisible.
    http://stackoverflow.com/questions/20888592/gettext-method-of-selenium-chrome-driver-sometimes-returns-an-empty-string

Bug: T161941
Change-Id: Ic6bcd1088249109e49a47cc9007e6ee002d3d8ba
2017-04-19 22:27:02 +02:00
Ed Sanders d4d325e7e6 Use words for describing notification counts in HTML text node
The text is hidden by CSS so this will not affect regular users.

Bug: T160277
Change-Id: Iabb557a6ea2de82b488a5a40c9b5fd966270f1b0
2017-03-12 19:37:23 +00:00
Stephane Bisson b3c07eedeb Remove etp_user
Target page entries used to exist for each user
that was notified for an event. They were
removed as the notifications were marked as read.

Now they remain so that the association between
pages and events can be used for moderation
regardless of the notifications read status.

This patch removes everything about
echo_target_page.etp_user from sql and php code.

Bug: T143959
Change-Id: Ib57510e6b0e9202a7e035f8ea59955dca8a0b24a
2016-09-09 09:32:28 -04:00
Stephane Bisson f3874126b9 Browser tests: update to mw-selenium 1.7.2 and https
Bug: T129483
Change-Id: Id33398d0615da77be0136f8680e56edc13f4e635
2016-08-11 15:47:42 -04:00
Moriel Schottlender 9ab351352f Redo the notification badges
Bug: T115845
Bug: T140900
Depends-On: Ic666540d70de52f
Change-Id: I34e2736490319989a3a251a43fbe8080ab960b00
2016-07-27 11:51:05 -07:00
Stephane Bisson 69f5f0d39a Browser tests: update local url
Change-Id: I9284acd37bfba51a53ddc1385eaad626e5592fa0
2016-07-25 15:52:58 -04:00
Željko Filipin ef7e22786e Do not run broken Selenium test in CI
Bug: T128190
Change-Id: Iadaede037ed0d4560c56ed9f06bcd96eff1e9f58
2016-04-26 15:51:15 +00:00
jenkins-bot 29b0fb5688 Merge "Migration of browsertests* Jenkins jobs to selenium* jobs" 2016-04-25 16:12:17 +00:00
Željko Filipin 269d965a4a Migration of browsertests* Jenkins jobs to selenium* jobs
selenium* jobs are a new way of running Ruby based Selenium tests. The
jobs are triggered daily.
Bug: T128190
Change-Id: If240d2da8f0c55ed46f1f2f34c6aca05bcba09ac
2016-04-25 17:54:45 +02:00
Stephane Bisson f9d2aacd67 Browser tests: fix nojs tests
Since 79e095fd8a609b71937057034ff5801c13180137,
modern js experience is mostly controlled by feature
detection instead of user agent sniffing.

This broke the Echo nojs browser tests and the
mwext-mw-selenium job is now failing on ALL Echo patches.

This change introduces a user agent string that is
both still considered a nojs browser by RL and a
desktop browser by MF.

Change-Id: I34e8d9f0d879b404d95e674814744562fd57b397
2016-04-19 14:43:15 +00:00
Željko Filipin 189d606fe0 Fix Cucumber tags for Selenium tests
no_javascript.feature was not running for Chrome, but it works fine.
Fixed.

We are no longer running any Echo tests in Internet Explorer. Fixed.

All scenarios run just fine when targeting mediawiki-vagrant machine
with echo role, so I have added @vagrant tag to both feature files.

Bug: T94152
Change-Id: I2c206048c615583bacc9d6c5f5c2e6ffeaea3462
2016-02-22 13:51:17 +00:00
jenkins-bot 1c187bbf76 Merge "Add @integration tag to browser tests" 2016-01-19 02:18:07 +00:00
Kunal Mehta 4139806924 Add @integration tag to browser tests
Bug: T109679
Change-Id: I54653c0ab90e634b49516d9840c862dd91702be7
2016-01-19 02:11:19 +00:00
Željko Filipin a7a391c4d2 Update mediawiki_selenium Ruby gem to the latest version
Bug: T114241
Change-Id: I7056dd7113791ece87cecb968e60ee88969f6d1a
2015-12-16 16:39:54 +01:00
Moriel Schottlender 4bbaf77c2a Change the naming of 'notification option' to 'notification item' widgets
This is in preparation of adding more item models and widget types,
and in preparation of switching the notification widget away from being
a select widget.

Change-Id: I518fb3d80f4f67d677c21ca5593638269acfa544
2015-11-19 16:52:04 -08:00
Stephane Bisson 10c4ed6f49 Browser Tests: fix
* extract notifications to components/notifications.rb
* wait for the flyout to be loaded before counting
  the unread notifications
* remove popup.feature because it is redudant with
  notifications.feature and too low-level
  for acceptance testing

Change-Id: If0b0286e8e98e379ae1d6d91db8084adda93b3f6
2015-11-12 15:17:07 -08:00
Stephane Bisson ba2d072255 Browser tests: using mw_selenium 1.5 because 1.6 is broken
mw_selenium errors out with undefined method `last_session_ids='
when run in jenkins.

Bug: T114368
Change-Id: Ie4d1b15be3b12694d9adba8747f1457f43ead57c
2015-10-23 11:53:34 -04:00
Moriel Schottlender 8b2c6355cc Add browser test for notifications in Echo
This browser test checks that mentions go to alerts and talk page
messages go to messages popup. This also upgrades the MW-Selenium
version in Echo tests to 1.6.1.

Depends on MW-Selenium version 1.6.1 (See T114061)

Bug: T113081
Change-Id: I40a17500cdfb838420c04dc0b9268ba56515cc2c
2015-10-04 22:23:51 -07:00
Željko Filipin 8afe4c1c15 Fixed Metrics/LineLength RuboCop offense
Bug: T114095
Change-Id: I598e4782e97c7b571f92a802c816db6567169d1d
2015-09-29 14:59:05 +02:00
Moriel Schottlender 3ea86361a4 Rewrite browser tests for Echo
The new oouified echo popup makes the tests invalid; this commit
rewrites those tests.

Also by doing this commit we are upgrading to Selenium 1.4.

Change-Id: I26215558768d55be449276c55b4b745c3a458ecb
2015-09-25 15:50:59 -07:00
Moriel Schottlender 1ac72cc01a Split alerts and messages in Echo
Split the notifications into 'alert' and 'message' badget with two
different flyouts. Also clean up styling and module behavior.

** Depends on ooui change Id4bbe14ba0bf6c for footers in popups.
** Depends on ooui change Ie93e4d6ed5637c for fixing a bug in
   inverted icons.

** MobileFrontend must also be updated to support the new modules
   in this patch  I168f485d6e54cb4067

In this change:
* Split notifcations into alert and messages and display those in
  two different badges.
* Create two separate flyout/popups for each category with their
  notifications.
* Create a view-model to control notification state and emit events
  for both the popup and the badge to intercept and react to.
* Clean up module load and distribution:
  * Create an ext.echo.ui module for javascript-ui support and ooui
    widgets.
  * Create an ext.echo.nojs module that unifies all base classes that
    are needed for both nojs and js support, that the js version
    builds upon.
  * Create a separate ext.echo.logger module as a singleton that can
    be called to perform all logging.
* Clean up style uses
  * Move the special page LESS file into nojs module so all styles
    load properly even in nojs mode.
  * Transfer some of the styling from JS to LESS for consistency.
  * Make the 'read more' button load already with the styles it
    needs to look like a button, since its behavior is similar in
    nojs and js vesions, but before its classes were applied only
    by the js, making it inconsistent and also making its appearance
    'jump' from a link to a button.
* Delete and clean up all old and unused files.
* Moved 'Help.png' icon from modules/overlay to modules/icons for
  later use.

Bug: T108190
Change-Id: I55f440ed9f64c46817f620328a6bb522d44c9ca9
2015-09-02 15:36:37 -07:00
Matthew Flaschen a6412a6d27 Fix typo in scenario name
Change-Id: I90cf03197c715dc7c786479056f95137245ef939
2015-06-11 23:02:12 -04:00
Cmcmahon 4631bc8d94 QA: insert one-second sleep for Chrome workaround
As of about 4 March, Chrome has begun failing to wait for javascript
event listeners on pages. The only workaround we've found is to
pause for a bit before clicking any element that brings up a WMF
"overlay"

This is the failure see at
https://integration.wikimedia.org/ci/view/BrowserTests/view/-All/job/browsertests-Echo-en.wikipedia.beta.wmflabs.org-linux-chrome-sauce/399/testReport/

Change-Id: I984f394a55423f17feae85236e18d16dd00239bc
2015-03-09 18:43:24 -04:00
Cmcmahon 68c8a7a65a QA: rubocop fixes broke the tests in the builds
regenerated rubocop config so those checks also stay green

Change-Id: Ib8a88c88c02d1638e758d62eb86f2ac59feefe5d
2015-02-23 09:44:41 -07:00
jenkins-bot f0cd4d5076 Merge "QA: update for rubocop offenses" 2015-02-20 17:02:37 +00:00
Cmcmahon 7d607dbfb6 QA: update for rubocop offenses
Do not name methods starting with "get"

Change-Id: If4adf0c775b031d6a462e00aed8b588077169413
2015-02-20 10:00:01 -07:00
jenkins-bot 5f93e4defe Merge "QA: more rubocop updates" 2015-02-20 16:57:10 +00:00
Cmcmahon 60a0e05c7c QA: more rubocop updates
No change to function at all

Change-Id: I150aed4379c75f716633cc4904cb9d8f388c9d45
2015-02-20 09:54:06 -07:00
jenkins-bot 1ae16a6358 Merge "QA: update for rubocop offenses" 2015-02-20 16:52:11 +00:00
Cmcmahon fcd695a076 QA: update for rubocop offenses
No change to function, just cleaning up

Change-Id: I1b0b4fe8e4f785cbeebc2d1415a45f831dc75f5c
2015-02-20 09:49:38 -07:00
Cmcmahon 46f2d7c46d QA: robustify Notification no-javascript test
Identify the first heading better

Change-Id: Idb029c43b20915022f4d566a7795c3e0ec55cea2
2015-02-09 13:48:02 -07:00
Cmcmahon bf9773e6ed QA update for single quote preference
Change-Id: I35d22c47abd78a588f622b9b7cd07444c345db5a
2014-11-10 14:21:28 -07:00
Cmcmahon 6468f8e575 QA update quotes for string interpolation
Change-Id: Ic74333eea147183f407ffbe2b5319bb4683b5833
2014-11-10 14:14:52 -07:00
Cmcmahon 1ac73fa54b QA: rubocop updates
Change-Id: I580ec597dbb0d1dcd0830233995f94bc27d10278
2014-11-10 10:50:10 -07:00
Cmcmahon 0bfd18dbc7 QA: rubocop config updated to baseline again
Change-Id: Ic399ef9bb681cfed25b0b775b0c430e338f11bd3
2014-11-07 14:19:31 -07:00
Željko Filipin 57241c6867 Prepare repository for running RuboCop after every push to Gerrit
For now ignoring all problems.

Bug: 69245
Change-Id: I0e411fba725ecd9aea0ef9d40a145efb62bbf0fa
2014-10-21 12:59:54 +02:00
jenkins-bot 94736491cb Merge "QA: replace hard-coded 7 seconds sleep with poll method" 2014-09-25 22:52:17 +00:00
jenkins-bot d3a093ae68 Merge "QA update feature descriptions for messages test" 2014-09-25 21:41:04 +00:00
Cmcmahon 530688aa39 QA: replace hard-coded 7 seconds sleep with poll method
The step formerly know as "I come back from grabbing a cup of coffee"
is replaced by a step that reloads the page a number of times, where
that number may be set by the user.  If the notification has arrived,
the polling stops and the test continues.

In practice with a local browser pointed to beta labs, the
notification is arriving in plenty of time for the first page load
and I do not see the page reloading at all.

Change-Id: I95dd77d4f5525645e46244e40bfcd86e9124f3b1
2014-09-24 15:07:10 -07:00
Cmcmahon 8f2681c01b QA update feature descriptions for messages test
Cucumber Scenario and Feature description are just plain text.
Instead of using comments, it is far better to describe in each
test step what should happen in each test step.

I believe I have described these test steps correctly. Please
advise if they need to be tweaked.

(The test itself seems to be fine, but feel free to review that
also)

Finally, since messages.feature uses the "I have no new notifications"
step, I updated those assertions for modern RSpec syntax

Change-Id: Ie884a85c1fc3f7045773a271a8d76fad6b0b3826
2014-09-24 11:50:18 -07:00
Cmcmahon 4961e32b53 QA: add modern assertions to flyout tests
"Then" steps should always contains RSpec assertions. In the
past this meant using some version of the word "should", but
the modern convention in RSpec is to use "expect()" as I
did here.

Change-Id: I1c438a310803e29c0985328a76d2ec08578e0cb0
2014-09-23 14:14:47 -07:00
Cmcmahon b3df4d0814 QA: Refactoring and making the nojs test dtrt
* add @custom_browser tag so we don't create an extra browser instance
* remove @chrome tag because this only works in Firefox
* alphabetize within G/W/T buckets in commons_steps.rb
* alphabetize flyout_steps.rb
* bring env.rb up to date with the modern situation
* make assertions about the URL and heading on the final destination page
* update Ruby gems, especially mediawiki-selenium with a @custom_browser improvement
** use modern RSpec assert syntax
*** we're going to have to update all the repos for this soon

Change-Id: I6cb20126a662bd2a20e2b4bbebe91e8f3b04c7df
2014-09-23 13:35:50 -07:00
Cmcmahon 50790b2965 QA: refactor for consistent Ruby practice
* use symbols not strings for element labels
* use double quotes except where single quotes required

Change-Id: I4eef50206c526611da535e529035c076d5bce266
2014-09-17 16:27:24 -07:00
S Page a1864d71c8 QA: Update selenium-webdriver so Firefox 32 works
I did `bundle update`.
Without this, browser tests on Firefox 32 fail with
`unable to obtain stable firefox connection in 60 seconds
(127.0.0.1:7055) (Selenium::WebDriver::Error::WebDriverError)`

Change I26190cca06ee gave Flow the same update, this Gemfile.lock is
identical except Echo has a "chunky_png" gem.

Change-Id: I0b62134d38f3262b734af83cc58b644040857645
2014-09-16 17:49:38 -07:00
Cmcmahon 7eacda1306 QA: get messages test to pass properly
This is lieu of

https://gerrit.wikimedia.org/r/#/c/159685/

If we merge this patch, we should abandon 159685

Change-Id: I84e0a1df6076a68ee7e97feb929195da9937c412
2014-09-15 11:07:45 -07:00
S Page b634890634 QA: Fix missing "Given I am logged in as a new user"
Echo browser tests pass, but are skipping
  Scenario: New user gets a sign up notification
because a step definition is missing.

I simply adapted
  ^I am logged in as a new user with no notifications$
and the scenario passes in chrome.

Change-Id: I9f2bd10d05b689eaacbf2890913786eb157d6af9
2014-09-10 15:26:53 +00:00
Cmcmahon 76665c552a QA: make Feature names easy to read
Don't duplicate "Notification types" Feature between tests. I
guess this was a copy/paste issue.

Change-Id: I032130024113bb326f0cfbbe09cd7455bdaf7ab5
2014-09-02 10:26:59 -07:00
jdlrobson d8702e46b4 QA: Add browser test for user rights change
Change-Id: I9cb453d1107d0fe961abb32d358a4c00bb9f40c8
2014-08-28 13:57:03 -07:00
Cmcmahon c982b0a4fa QA: update to fix deprecated API token call
Change-Id: I8046af1add07e26e40fc000a9feeab65b75e4b68
2014-08-27 08:57:45 -07:00
jdlrobson 5c73416b4c QA: Add missing browser test steps
Change-Id: I3a54902ae1cf2d2b7263243722bb0b7f57bcba95
2014-08-21 00:02:42 -07:00