Commit graph

256 commits

Author SHA1 Message Date
jdlrobson cb2634a78b Constraint page issues CSS selector
The 2 selector approach is flawed as the .ambox element matches a
hidden element in the old treatment which is not clickable.

I suspect this change will fix the failing browser test on the beta
cluster. Integration tests will continue to test the new selector
in the mean time.

Change-Id: I44a873b2e89069c4a47a428c528592159520568c
2019-01-08 20:23:37 +00:00
Stephen Niedzielski 672df850cb Hygiene: revise A/B test terminology
Improve the comments and APIs provided by AB.js:

- Control becomes unsampled.
- A becomes control.
- B becomes treatment.

This code does not appear to be in use presently, so it's a great time
to change it.

Change-Id: I31d619f889ee45102a4aed774a6ec41f0d95ba7d
2019-01-08 15:08:50 +00:00
jenkins-bot 9258806a0f Merge "pageIssuesOverlay is a factory function that returns an Overlay" 2019-01-04 15:39:48 +00:00
jdlrobson d29eca2bc8 pageIssuesOverlay is a factory function that returns an Overlay
This experiments with making PageIssuesOverlay an Overlay with
various options.

The appending of children is a little messy and points at a need
to standardise this some way
(see https://phabricator.wikimedia.org/T209647)

TODO:
* Remove the iconString property on PageIssueSummary which is no longer
needed

Bug: T209647
Change-Id: Iadd798a820dca6bbb31edc9a8570b6db7aac237a
2019-01-03 08:31:39 -08:00
jdlrobson c73ff1f7a5 Composition: DownloadIcon
The DownloadIcon is reduced to a factory function that
returns an instance of Icon

Depends-On: I4d703eef68d51bbe0b03579c5cca0845e17b8c9d
Depends-On: I4a4129b2cac7c7c49559beef0b8780f3211edf9c
Bug: T205592
Change-Id: Ib87390d17bef6f50842f52cd84c9ce2b162aaff0
2019-01-02 13:16:09 -08:00
Nicholas Ray 5bfd949f9a Remove usage of global event emitter from Minerva
This patch removes the remaining usages of M.on/M.off/M.emit
(functionality derived from moduleLoader.js in MobileFrontend) in
Minerva and continues the work of
Id990b0e1a53221d5c1cb3e3012aed0e27d801fc2 (patch for MobileFrontend).

This patch and the patch for MobileFrontend should be merged together as
they both depend on eachother.

Depends-On: Id990b0e1a53221d5c1cb3e3012aed0e27d801fc2
Bug: T156186
Change-Id: I005d2fcdbf91c2f1ac98178dfa388aa8174e7530
2018-12-06 19:30:09 -07:00
jdlrobson c31da9a236 QA: Drop protected page test
* On commit it needs admin rights which it doesn't have
* On browser tests the toast flakes too much.

Bug: T208808
Change-Id: I1fa93c8f451f3f839030fa7a144b1cb285c4239d
2018-11-29 16:51:04 -08:00
jdlrobson f055f8d789 Drop toast tests from beta cluster
Given the fade in/out animation of the toasts and the instability of
the beta cluster and the round trips to Sauce labs, we're seeing lots
of false positives on our browser test reports

Running these per commit should ensure we see minimal regressions and
get some protection. We'll continue to test other scenarios which do not involve
the toast on beta cluster.

Provided we can rely on green browser tests, we will trust the browser
tests more and they will be more useful than they currently are.

Bug: T208808
Change-Id: Idc601ad462de36f2d6d52fe951194b429e6f824f
2018-11-29 16:40:02 -08:00
jdlrobson 0a41aa53ca QA: Browser tests should limit write operations
We use lots of write operations in Minerva browser tests. On the beta
cluster many of these are redundant, as the page already has the content
required or the page already exists

Limit where we do our creation... the less write operations we make the
more stable we can expect these browser tests to be.

Change-Id: If88b878e14bf4a0424fcf23213653cfc2cf8d87b
2018-11-29 07:34:41 -08:00
jdlrobson b71bb0cc8c QA: Tagging changes from beta cluster
* features/search_loggedin.feature
They run on integration and are not super-business-critical.
Given their flakiness and Cirrus's likelihood of being down,
don't run it on beta cluster
* tests/browser/features/language.feature
Tag is superfulous, all scenarios repeat it.
* tests/browser/features/toggling.feature
ocassionally fails on firefox. Limit to Chrome and integration
tests
* tests/browser/features/search.feature
Limit the tests that run against beta cluster to search for
partial text and clicking a search result, since these are
two things we want to check integration well with other extensions.
The rest being testing on the more stable @integration tests
should be more than enough.

Change-Id: Ia2e8d3726212fee30725fdb9167ea38aa41eacbf
2018-11-27 17:53:00 -08:00
jenkins-bot bce934c54d Merge "QA: Remove hacks introduced for T170890" 2018-11-23 19:08:05 +00:00
jdlrobson 6a7d350160 QA: Page issues browser test is ready for new treatment
The page issues browser test is now compatible with both the old
and new treatments.

For consistency, in integration tests it will be run always in
treatment B since that will be the new way to do this going forward.

The beta cluster will test issue treatment A while it continues to be
the default. So with this we enjoy the best of both worlds.

When we enable page issues, the beta cluster will inherit the config
from production and we can remove the treatment testing for treatment B.

A follow up patch, might add testing for a page issue on talk pages,
which will retain treatment A for completeness if this is deemed useful.

Bug: T206647
Change-Id: I586523e452a6809e310f65a2ed55c6771d1965b6
2018-11-20 23:38:04 +00:00
jdlrobson 2922cc6fd1 QA: Drop more toast notification tests from Firefox (logged in search)
Toast tests are often failing in Firefox build.
They are also tested and pass more consistently in Chrome

Stable browser tests means real bugs get caught more often
so let's disable this browser test against Firefox for the time
being.

Bug:  T208808
Change-Id: I05d77eb53657bb3ea0daaad7906a50db6aab66db
2018-11-16 20:41:17 +00:00
jdlrobson 0638296fb3 QA: Remove hacks introduced for T170890
These no longer seem to be achieving their original
intention and may even be causing the
flakiness we experience now.

Additional changes:
* Disable some more tests in Firefox job

Bug: T208808
Change-Id: I735ec0ff293cfd7aa60519c080a300bd40dc0abc
2018-11-15 14:59:08 -08:00
jdlrobson 5e9739b9ff QA: Drop some tests in Firefox
The toast tests are flaking quite a bit in Firefox but pass in Chrome.
Having them run in both Firefox and Chrome seems less important than
being able to have better confidence in non-flaking tests so I'm removing.

Bug: T208808
Change-Id: I306518a7f3eb375715f6b9d6d599bf4f711ab6aa
2018-11-15 20:53:17 +00:00
jdlrobson f5acba28f3 QA: Remove redundant test so beta cluster tests pass
Currently beta cluster tests are failing because of a single test.

The test for whether a "tagline" appears on special pages is outdated. We now
show taglines on all special pages (defaulting to empty)

Let's thus remove it.

Additional changes:
* Rephrase "wikidata description" as "tagline" - we use the tagline to display
things other than wikidata descriptions e.g. the tagline on Special:MobileOptions

Change-Id: Icb66563cb3a5e7043ca41f59c826bd4247d89d52
2018-11-14 22:39:06 +00:00
jdlrobson f2639e7a73 QA: Don't check when_visible twice
Instead check the element is in the DOM before testing its
visibility.

This might help T208808 but it's a stab in the dark.

Change-Id: If7ccf5f2f03073c247de7fa497b3a6e31b570918
2018-11-13 16:49:24 -08:00
Bartosz Dziewoński 7b5928d795 Merge remote-tracking branch 'gerrit/page-issues-cleanup'
Bug: T198765
Bug: T208514
Change-Id: I9467101c9b01cbd7682de859e43e04966760eea6
2018-11-08 16:00:39 +01:00
jenkins-bot b08643cbab Merge "Fix undefined NS issue with @coversDefaultClass" 2018-11-01 14:22:48 +00:00
Alangi Derick 679a45677e Explicitly use "MediaWiki\Minerva\SkinUserPageHelper;" on-top of file
To make things neat, use "MediaWiki\Minerva\SkinUserPageHelper;" at the top
of the file and then mock class directly (shorter and easily readable).

Change-Id: Ie2ee64e75c38fff77d41af20bdea01015ed39a87
2018-11-01 14:35:57 +01:00
Alangi Derick e2e5cbc3d7 Fix undefined NS issue with @coversDefaultClass
In skin MinervaNeue, correctly cover SkinUserPageHelper
namespace in SkilUserPageHelperTest.php

Change-Id: I8c8bd9986c2b3989f093bfb585d90647e8da60ef
2018-11-01 14:28:20 +01:00
jdlrobson 72cd31f221 Remove page issues instrumentation
Note, since the page issues code is not feature flagged,
the new treatment will only be accessible via query
string until T206179 is taken care of.

Bug: T206178
Change-Id: I5ab2f3396e642f7b973263e2bb3963e0e82721b3
2018-10-23 12:19:25 -07:00
jdlrobson cb2ad9374e extract moved to parser
The extractMessage function has a lot to do with parsing - so this
and its tests are moved into the pageIssuesParser.

Change-Id: I62d79fbba166eff2c3ca573ef94ff86a269a7f9a
2018-10-23 12:17:45 -07:00
jdlrobson 878989bd85 Merge PageIssue and IssueSummary type defs
We have two type defs - IssueSummary and PageIssue.
I'd like to consolidate these two types by making
IssueSummary a combination of the two

Change-Id: Ic831b463fa66b0cacdd0b9b79aff741e55c0ec24
2018-10-23 12:10:22 -07:00
Alangi Derick a2fd0b3c1f Add "Discussion" button to Main page on Mobile View
* Enable discussion button on main page in mobile view so users
  can view discussion topics related to the main page on mobile.
* Update test to make sure only 'talk' and 'switch-language' actions are
  enabled on the main page and 'edit' and 'watch' are disabled on the main
  page.
* Minor typo fix for doc type. Use "array" instead of "Array" and CSS
  alignment fix issue with Discussion button when displayed together with
  Language selector button.
* [Suggested by: @Jdlrobson] Use a generic "a" CSS selector to style the ".talk"
  and ".language-selector" classes on the main page. This also avoids fixing the
  CSS for future buttons if added (future proofing the code), so if any other
  button is added in the future, the same css rule will be applied to it at once.
  Very wise idea from @Jdlrobson, thanks!

Bug: T206406
Change-Id: Iedce84595adc357f3a707f8b94d23b2ffea3476c
2018-10-23 19:59:22 +01:00
jdlrobson 13aeb1e8f5 Merge remote-tracking branch 'origin/master' into HEAD
Change-Id: I2b15e07932e4fe8b2a49fa87bb6136a3b50b7786
2018-10-22 16:20:33 -07:00
jenkins-bot 53216161c6 Merge "Fix watch star browser test" 2018-10-19 18:27:53 +00:00
jdlrobson 1c034f1d73 Fix watch star browser test
In I06ef42cb1461fde7ca0aa903f174c3b1f39ab154 a button became an
a tag and somehow that got through the Jenkins censors.

With this change Jenkins on Minerva will be happy again

Bug: T207480
Change-Id: I3faedb10e46c3e3e237f5b90d71ffe20606fce6d
2018-10-19 11:00:19 -07:00
Stephen Niedzielski f07985c6de Hygiene: move page issue group parsing to parser
Separate the page issue grouping concern so that changes to parsing
don't concern everything else and vice-versa.

Bug: T203449, T202349
Change-Id: I7bddb0c53310805ece71b8f7821b1d6ce05cfae9
2018-10-16 18:20:38 +00:00
jdlrobson cbad0bd363 Merge skin option modules into a single ResourceLoader module and move enabled logic to client
It's presumed that skin options will eventually become the default or be removed from the skin.
While they are not the default, it would be helpful to package them in one single module - as ResourceLoader
modules are costly bloating the dependency graph in the MediaWiki startup module.

In T167713 we talked about grouping our entry points by page rather than feature, which this seems consistent
with. A page with special options enabled is different from a page without.

Change-Id: Id948f913d4743532ba3442d2059a03c122419ff2
2018-10-12 10:18:21 -07:00
Bartosz Dziewoński cada514ded Remove code related to no-anonymous-editing mode of MobileFrontend
All of this would only be used with the configuration setting
`$wgMFEditorOptions['anonymousEditing'] = false;`.

Removed features:
* Call-to-action popup in skins.minerva.editor (note that anonymous
  editors still get a CTA from MobileFrontend's EditorOverlay code)
* Pointer towards the edit button shown after registering via the CTA
  (entire skins.minerva.newusers module)

Bug: T205382
Change-Id: I66c7035f7a23581811dda87c911dea41d4a8e5da
2018-10-10 19:03:53 +00:00
Bartosz Dziewoński 13b60f6824 Remove user page CTA edit link browser test (move to MobileFrontend) [try #2]
This is a MobileFrontend feature, implemented
in ExtMobileFrontend::getUserPageContent().
Having the test for it in the Minerva repo made
it harder to make changes to it. Adding it there
in I6e763cd6b6763c60d2ad47bf384f739dfb1a07c0.

Depends-On: I6e763cd6b6763c60d2ad47bf384f739dfb1a07c0
Change-Id: Id1692b50f3f0d282c8aea4c45b63845f418e0970
2018-09-25 18:05:10 +00:00
Jdlrobson 39c5dbc94a Revert "Remove user page CTA edit link browser test (move to MobileFrontend)"
This reverts commit 6daf19dfb5.

Mobilefrontend change was reverted meaning this test should be
restored here so we continue to have coverage.

Change-Id: I2e8eeacaf01aa61040405501d69f329fe3a9bbd6
2018-09-25 15:47:36 +00:00
Bartosz Dziewoński 6daf19dfb5 Remove user page CTA edit link browser test (move to MobileFrontend)
This is a MobileFrontend feature, implemented
in ExtMobileFrontend::getUserPageContent().
Having the test for it in the Minerva repo made
it harder to make changes to it. Adding it there
in I7cac24cf64422212196439bf49598ed749d5fafa.

Depends-On I7cac24cf64422212196439bf49598ed749d5fafa
Change-Id: I93e0f195b3cad1ae83ee2ae3b5b4c5f08944882e
2018-09-24 22:37:20 +00:00
Jan Drewniak 2163d5f965 Rename QUnit test files from "test_" to "test.js"
Updates QUnit test files from starting with "test_" to ending with
"test.js" in accordance with the Readers Wed coding conventions.

https://www.mediawiki.org/wiki/Reading/Web/Coding_conventions

Bug: T197884
Change-Id: I98877e3fc432b6edd0c53d834ef23b3ef8fb7d6a
2018-09-19 08:01:31 -06:00
Stephen Niedzielski ba17b11987 Hygiene: fix line length violators
Change-Id: Ie1619acf5f319dafc2c9dc612335c1208522dab8
2018-09-13 09:33:20 -06:00
jenkins-bot 4c05ae758f Merge "Fix skipped tests" 2018-09-13 14:08:39 +00:00
jdlrobson 6ac46d5d56 Fix skipped tests
If18ad1ff9363fff65d3e347c01ce4bc0669b2a0e introduced some skipped
tests. This restores them.

* NotificationsBadge test was failing due to some failures to stub
* clicking on the product of createBanner failing due to no action occurring
in the test body.

Change-Id: I4c1f407912767737f7cd1e9884a2e7db0baabf75
2018-09-12 14:09:52 -07:00
jenkins-bot 3abd6ef9f0 Merge "build: Update linters" 2018-09-12 17:26:12 +00:00
Ed Sanders 04a2b27d7f build: Update linters
This exposes two broken tests:

* #setCount (Eastern Arabic numerals)
* clicking on the product of createBanner() should trigger a custom event

that were previously passing due to buggy assertions.

Change-Id: If18ad1ff9363fff65d3e347c01ce4bc0669b2a0e
2018-09-11 13:42:11 -07:00
jdlrobson f14d9514c6 Fix formatPageIssuesSeverity
The page-issues reducer function that retrieves the severityLevels
for issues was incorrectly comparing two values in the multiple-issues
scenario.

Instead of comparing the severity of the current issue with the previous
value in the accumulator, it was comparing the current issue with the
previous issue in the original array, thus ignoring the
previous `maxSeverity` value in the accumulator.

Tests added and function refactored with more explicit variable names.

Bug: T203725
Change-Id: Ia4c15cbf0c2457d68a7381e8ed04c1a6b3ae65d1
2018-09-07 11:25:16 +02:00
jenkins-bot 002160ae9c Merge "page-issues sectionNumbers consistency on modalClose event" 2018-09-05 20:02:35 +00:00
Jan Drewniak 1a9bcd1e8a page-issues sectionNumbers consistency on modalClose event
For the page-issues modalClose event, the number of values for `sectionNumbers`
and `issuesSeverity` should be the same, since `sectionNumbers` should describe
the the section of each visible issue in the modal, not the section of the
modal itself.

Bug: T203050
Change-Id: Ic58c5940a6059e71aa3aeed26232afbe8faf1618
2018-09-05 21:29:53 +02:00
jenkins-bot 7d87ec3b8f Merge "Replace ID selector with class selector (mw-notification-area)" 2018-09-03 16:18:45 +00:00
Ed Sanders 046e8072e7 Replace ID selector with class selector (mw-notification-area)
The former is deprecated.

Bug: T203259
Change-Id: Ie385f3820cc93931a6ccf2cf00e8457b0e48d3e0
2018-08-31 15:23:02 +00:00
Jan Drewniak 815f3d99ee For page-issues pageLoaded and editClicked events, treat
"multiple issues" templates as one issue.

When logging the `issuesSeverity` and `sectionNumbers` field,
any issues that are part of a "multiple issues" template only send
one value.

Adds an `isMultiple` property to IssueSummary to determine which
issues are part of a multiple-issues template.

Bug: T203050
Change-Id: I7d55dfead72439df4accadcdc8623a080e1321c2
2018-08-29 13:59:20 -07:00
Jan Drewniak 2cbd57c2f3 Consistent sectionNumbers and issuesSeverity for page-issues.
The value of `sectionNumbers` should be the section number of each issue
Not the number of the sections that have issues.

Bug: T203050
Change-Id: I6fd55c35b9e2ce35894259f36d1a50fb5dca5e43
2018-08-29 13:45:55 -07:00
jdlrobson 0acfda1931 Don't send NaN as a value for sectionNumbers
The keyword "all" was being parsed as an integer incorrectly. To avoid this

Bug: T202940
Change-Id: I5553a4bb50cd7639c879f2c6e812fba25a216175
2018-08-28 18:26:09 +00:00
Jan Drewniak ae19031f8e Log sectionNumbers in PageIssues schema
Adds logging for the sectionNumbers field in the PageIssues schema.

Additional changes:
* createBanner now requires section number to be a string - this ensures
consistency with how these are used.
* fix a bug which meant createBanner was being called with undefined
section number (due to table of contents)
* Fix some indents in some JSDoc blocks
* Change parameter in function signature from mixed type (int or string)
to explicit string
* update schema number

Depends-On: Ia2696b86c6855d7b46a3f668585377d106d7af23
Bug: T202098
Change-Id: I20511a77258ea245f3d6fe93ade238e5df397a71
2018-08-27 18:02:51 +00:00
jenkins-bot de28672cde Merge "QA: Run references test per commit" 2018-08-17 00:36:29 +00:00
jdlrobson 2ef12fb5e3 QA: Run references test per commit
Follow up to Id312638d86179e75bc670e72e5943f8c00232bbb
which switched the #content area from a div to a main
HTML element causing this to fail to match.

Test suite will now also run on @integration so that
this kind of issue is not caught too late in the beta
cluster.

Additional changes:
* Merge two similar tests

Bug: T201956
Change-Id: I1d402aaebc40dcca61979aa521cd8e1a1ce274d9
2018-08-16 16:52:22 -07:00
jdlrobson 40eca4e3f3 Hygiene: IssuesOverlay moved from MobileFrontend to Minerva
The CleanupOverlay is moved to Minerva and renamed the
IssuesOverlay to be consistent with current terminology

The new IssuesOverlay is defined inside the module
skins.minerva.scripts to which it now belongs.

Additional changes:
* various file renames
* overlay-cleanup renames overlay-issues
* cleanuptemplates renamed issues.js
* Add a test stub file to avoid the need to load templates inside
the test environment

After this change, I75f47622d94e504688e04dfb2892540473817053
should be merged to avoid confusion.

Change-Id: I08945a324a6b878abe56efed1e988466085b3018
2018-08-16 14:06:12 -07:00
jdlrobson 6a5b2e284d Allow subsection issues
Depends-On: Iaa35317cdd96a1ad306ab38dc3ab2f18cc7bb31f
Bug: T197932
Change-Id: I84649dc80192729934f7bbb23a8e78296717bf36
2018-08-16 11:51:10 -07:00
Stephen Niedzielski 22b2f0fd7c Hygiene: move page issues A/B test logging to file
Refactor the page issues A/B test logging implementation to a distinct
new file that only has the responsibility of tracking.

T191528 is referenced in this commit as I was having difficulty
answering the feedback and bugs reported in the current implementation
without working through and restructuring the flow as I understood it.
This refactor is merely a byproduct artifact of that effort to focus on
the parsing and presentation responsibilities.

Bug: T191528
Change-Id: If547a0a67fbc9a532f834fe374abf668309e73df
2018-08-14 20:49:06 +00:00
Jan Drewniak f67c410859 Page Issues AB test event-logging instrumentation
Uses `mw.trackSubscribe` to create an intermediary data handler
named `wikimedia.PageIssuesAB` which extends event-logging data
before passing it to the eventLogging through `wikimedia.event.PageIssues`.

Event hooks are placed where appropriate and the `CleanupOverlay`
class is extended to capture events from within the page issues
modal.

Additional changes:
* Merge two identical on click event handlers for
.edit-page, .edit-link elements
* change pageIssueParser.maxSeverity to accept an array of severity levels
instead of an array of pageIssues objects

Depends-On: Ic84e4a3286220407863167e0f57cef1b13a72964
Bug: T191532
Change-Id: I67fb6e448f6ecc97c89c1187e491ee05f7a312ef
2018-08-09 20:30:12 +00:00
jdlrobson b91dcdbd50 QA: Issues should be run on integration test
These are currently only being run in the daily build
but not on commits meaning this sneaked through our automated
QA into production causing
https://phabricator.wikimedia.org/T200867

Let's protection against this happening again.

Bug: T200867
Change-Id: I2ad6fab8fafa2125be45c5052add9605a9d8121b
2018-08-03 01:03:56 +00:00
jdlrobson 9644e5372b Add tests for page issues code
Bug: T191532
Change-Id: I5291b51ec32ab95ff1ec41e50b84fea4567f28cb
2018-07-31 11:42:09 +00:00
Jan Drewniak e27cbf2a49 Reading depth hook should send additional sampling bucket parameter
The hook that enables the Reading depth test should send an
additional paramter that specifies which test bucket the hook
being is calling from.

Bug: T191532
Change-Id: Ifd9f43220c476ece8a0c0cee46b62b58a717c616
2018-07-31 11:40:29 +00:00
jenkins-bot d763602ce5 Merge "Update: page issue icons" 2018-07-19 12:25:20 +00:00
Stephen Niedzielski d2f6c38fe7 Update: page issue icons
- Fix a bug where the all issues endpoint would incorrectly collect
  issues from all sections.

- Update the page issue iconography. This increases the size of the
  delivered code and images by 1743 B minified uncompressed according to
  mw.inspect() (from 16.4 KiB to 18.1 KiB).

- Add support for identifying page issue severity based on template CSS
  classes.

- For multiple issues templates, show the highest priority icon.

Bug: T191528
Change-Id: Ie0a4c83ec7cfb856ec581d058797109746e3cb99
2018-07-17 15:54:17 -05:00
Reedy 7db16b308d Replace foundationwiki url
Bug: T199812
Change-Id: Iec87e90ed3dd058a2b06b87278793dab5c16c0c9
2018-07-17 20:39:19 +00:00
Jan Drewniak 7617174d40 A/B test bucketing wrapper for page issues AB.
Provides a class that initiates AB-test bucketing and registers
as a MF module. Activates the reading depth test for users who are bucketed
in either buckets "A" or "B".

Does not add event-logging or visual style changes for page issues AB test.

Bug: T193584
Change-Id: If8504a35059c6d1b056cef063a595b1c2ffd351a
2018-06-13 15:43:08 -07:00
jdlrobson 8ad57f9b0e QA: Stabilise browser tests
Changes:
* Default skin is not configured so noticed on test runs it's using
Default skin for desktop mode. Given this has no footer and way to
switch to mobile this could be problematic in future.
* Remove empty README
* Drop suggested language integration test - setting up interwiki links currently
happens via InterwikiLoadPrefix hook however this seems to be unreliable. The beta
cluster is a much more reliable place to test language links so let's rely on that
instead.
* Drop unnecessary heading check from "Successful edit" scenario. It's unnecessary
and flakey (presumably given the title doesn't change)
* Rename test scenario and remove a duplicate scenario

Depends-On: I888b3c546f77fa350853a7bf9bfbfbeb8ed6de67
Change-Id: I45792a95df7fd4c3299accbffadfa447baefe0ce
2018-06-08 19:59:05 +00:00
RazeSoldier 91f285127e Use . operator instead of + operator
String concatenation should use . operator, not +, otherwise it will
report some Warning

Bug: T195645
Change-Id: Id27c981622e5ed87519324193abd2249aa1df7b6
2018-05-26 16:37:41 +08:00
Stephen Niedzielski 9ccad5a405 Hygiene: replace calledOnce / Twice w/ callCount
Replace all test assertions for calledOnce / Twice with callCount.
assert.ok( calledOnce / Twice ) only lets the dev know that a test
fails. assert.strictEqual( callCount, EXPECTATION ) starts the debugging
process when it fails since it provides the difference in the failure
output. strictEqual() was deliberately used since it's a saner default
and the codebase already favors === equivalency checks.

  find tests -name \*.js|
  xargs -rd\\n sed -ri '
    s%ok\(([^,]+)calledOnce%strictEqual(\1callCount, 1%g;
    s%ok\(([^,]+)calledTwice%strictEqual(\1callCount, 2%g;
  '

Change-Id: I5c4c595c4520cecfad46d652f639a63a1c2c00b4
2018-05-08 16:12:04 +00:00
Kunal Mehta 4da5567bd9 Simplify SkinUserPageHelper constructor
Instead of requiring a full IContextSource object and only using the
Title, only ask for the Title in the first place.

Change-Id: I33034193140ca53919f29f847a03caf26250ce54
2018-04-15 16:38:50 -07:00
Kunal Mehta 1b1c56c862 Fix some file names to match their class names
Change-Id: Ib1a12f8073a2d737c40c0b4d1dd64f9e55738019
2018-04-15 16:12:45 -07:00
jdlrobson acb0051bcd QA: Speed up browser tests by not unnecessarily opting into beta
We only need to opt into beta to test the beta indicator displays.
There is no need to do this anywhere else in our browser tests.

For the categories test we will enable the feature flag in test mode
and not run it against the beta cluster.

Bug: T174018
Change-Id: I83b5f24236cef6ddd6fc1882bdfff3618a8bf599
2018-04-04 15:07:30 -07:00
jdlrobson 0779626a21 QA: Remove test not adding value
* Drop special.feature - it checks a search box is present on
multiple pages. This dates back to when special pages and normal
pages did not use the same code path.

Bug: T174018
Change-Id: Icf59ff95135af91650f8cdeef79bbaed534165f0
2018-03-26 11:21:03 -07:00
jdlrobson cfd5fbbde8 Add icons for all the types of issues
More hackery!
This adds some tests and ensures that our own icons are mapped to the
existing template icons.

Bug: T187916
Change-Id: I49073f22995c6730369235d6039939915ba2079c
2018-03-15 15:02:05 -07:00
jdlrobson b020728668 Run browser test on per commit basis
Additional change
* Add it to the list of smoke tests

Depends-On: I731608412eb2ade95abb79ed8240cfec0f06fb98
Bug: T189194
Change-Id: If8a20202365d92766c52091d96633a74d72e480e
2018-03-08 23:04:57 +00:00
libraryupgrader c4eb15654e build: Updating mediawiki/mediawiki-codesniffer to 16.0.0
Change-Id: Ibb3b0d2f4713609cd43d8c411561ab0bcdf941ce
2018-02-15 17:17:29 +00:00
Timo Tijhof d5145178b9 Hygiene: Replace QuickTemplate test subclass with mock
Change-Id: I32aa9d5103f4b6790a5118d5cad2cd91d3ddc459
2018-02-03 03:11:14 +00:00
jdlrobson 326ec90cd5 Disable download button on Chrome like browsers
Add Dolphin, Opera and Maxthon to whitelist

Bug: T182059
Change-Id: I39bf9d016aba189016b2ce5b42a2e95b58cb33ce
2018-02-01 10:59:18 -08:00
petarpetkovic 413fcc12f6 Fix seen notifications appearing as unseen on mobile
Important note: Make sure to distinguish unseen from unread

One way to reproduce minerva and non-minerva notification inconsistencies:
- Have all your alerts and notices seen. This is displayed with grayed out
number on vector skin or no number at all, if you have (marked as) read.
- Generate new alert or notice (one is enough) in your preferred way.
- You can check minerva and non-minerva at this step. Both should be in sync.
But don't perform any additional action.
- Open the notification popup in some non-minerva skin (I have tried with
vector and monobook), marking it as seen.
- Check the notification icon in minerva. At this point, you should see
notification displayed as unseen.

The reason bug appeared in the first place is that alert/notice timestamps
were mixed up when seen time is obtained. We get seen time from
EchoSeenTime class, where we get smaller of the two timestamps,
using PHP method `min()`. See I27109ee6a248. Then, we get last unread
notification timestamp (which can be either alert or notice), and compare
that to seen time. That leads to the situation when you have only one of
alerts or notices with unread items, smaller timestamp is used for seen,
and most recent for unread, at which point we compare timestamps for
two separate things.

Previous behavior of getting seen timestamps (using max instead of min) would
probably solve the problem, but some other inconsistencies might arrise.
This should prevent any weird and unpredictable behavior to happen.

Bug: T183076
Change-Id: I20bbd6c590086b1c3eccf82983aad59eb3144a7a
2018-01-18 14:18:56 +01:00
Piotr Miazga 4ca5666c06 Show Download button only on Android >= 5 & Chrome >= 41
Changes:
 - moved DownloadButtton checks & initialization to separate function
 - introduced supportedNamespaces variable for better readability
 - reorganized huge if(){} statement to set of smaller if's with
 nice comments why this configuration is not supported
 - introduced getAndroidVersion and getChromeVersion helper functions
 - added check to not allow Android < 5 or Chrome < 41
 - added unit tests

Bug: T182059
Change-Id: Ib5064459ee56aed68179389f37b4bc3b5c2c4492
2018-01-16 22:15:07 +01:00
Umherirrender bf974861a2 Fix spacing of @covers
Change-Id: I61d2cd2cb4523433bda37f349cf5327bfb4c1b66
2017-12-29 21:26:59 +01:00
jdlrobson e87d838466 QA: Add additional steps to guard against slow test runs
Bug: T182202
Change-Id: If46620941924b86c5403c9e928911b1aa5845d7a
2017-12-11 21:51:40 +00:00
jdlrobson 89909ccf53 Fix broken QUnit test
Correct some options names and make minor adjustments to the
constructor function

Bug: T181348
Change-Id: Ia9fe9d2923b895d3dc530280e3987e27c88d3282
2017-11-28 11:46:55 -08:00
jdlrobson b05da8d49d Load all images during print action
When the print button is clicked, load all images from the page
before calling window.print

Add a timeout to make sure the user doesnt wait too long.

Change-Id: Ie922d239f9c5b5757237dc10b673fb500ff203ad
Depends-on: Id7f21606be3db22fe8dfde2db675f9905547cfea
Bug: T180058
2017-11-21 15:27:36 -08:00
jdlrobson d3318a9f85 Remove MobileFrontend's font changing code from Minerva
Fontchanger code now runs on all skins under the `mobile` target.
All the code will now live in MobileFrontend meaning developers
can operate inside one code base.

Depends-On: I857cfe2d9be9fe49c04c860bc234384c787239b2
Change-Id: I2759455cb6d7ddf13798e94452cb74baf502bafe
2017-10-30 19:11:16 +00:00
jdlrobson 12b49a70ad Notification icon should not show NaN for persian Wikipedia
Bug: T172755
Change-Id: I2884c8daed3fe0e0d05c746ec6319956b7426957
2017-10-26 20:27:12 +00:00
jdlrobson b93b7eda7c Render add discussion button in PHP not JS
The talk page JavaScript progressively enhances an
existing button in the page.

Remove the frontend logic and rely entirely on whether
the button is in the page or not.

Additional change:
* The browser tests incorrectly suggest a user needs
5 edits to be able to use the talk feature. This is not
true. They just need to be logged in. Update that logic.

Bug: T167728
Change-Id: Iacedea30bdd0775b3d785db5b143abafd7a18b39
2017-10-16 22:35:11 +00:00
jenkins-bot 7458b6dd16 Merge "Revert "Don't run diff test on beta cluster"" 2017-10-09 16:14:44 +00:00
Jdlrobson edc817cd03 Revert "Don't run diff test on beta cluster"
This reverts commit 23e9d66780.

Change-Id: I25b7a843178d0be42956847cc2f8c897ae521b5d
2017-10-09 16:08:08 +00:00
jdlrobson 0dd994edda Prepare to break the server side MobileFrontend dependency on Minerva
Changes:
* Minerva now maintains a MinervaUI - a simplified version of
MobileUI that provides iconClass and buttonClass helpers.
* Minerva now maintains its own ResourceLoaderParserMessageModule

Remaining issues:
* Main menu links to '#'
* Unknown dependency errors are thrown due to the missing
JS libraries e.g. mobile.watchstar
thus JS based UI components are unusable e.g. search autocomplete,
and edit button
* Language button navigates to a missing special page without
MobileFrontend (see T104660)

Bug: T169569
Change-Id: I89e2e15faabab73b0cba91afc2f2c5e785edef29
2017-09-27 21:21:59 +00:00
jdlrobson 23e9d66780 Don't run diff test on beta cluster
While T176637 is open we should only run this on integration.

Bug: T176637
Change-Id: I6be3b234d3084796b039bd6610364e1600e82157
2017-09-25 09:30:08 -05:00
jdlrobson db389f0bfd QA: User edit cta browser test should not run on beta cluster
On the beta cluster, the tests are run using "Selenium user" account.
There is a test which assumes the user's page is blank which is now
failing as a result of this edit:
https://en.m.wikipedia.beta.wmflabs.org/w/index.php?title=User:Selenium_user&oldid=371028

Test is now disabled there but will still run on commits via the
@integration tag.

Additional change:
* Drop the additional @login tag

Change-Id: Ie116caed32883c58edfa2ab3dfa47bbbefdd6f31
2017-09-25 09:03:58 -05:00
jdlrobson dcdee45861 Make Minerva QUnit tests v2 compatible
Drop the checks for number of assertions

Bug: T174598
Change-Id: I82728a389d733900144786c149239856562a8c46
2017-08-31 15:42:18 +00:00
jdlrobson cd22f736d7 QA: Do not run various toast notification browser tests on BC
These flake too much. We have coverage in @firefox or @integration
so let's remove these test runs from the beta cluster job.

All tests will run somewhere.

Bug: T170890
Change-Id: I269991a22ab5a2b54aed8ad453013bb9be648502
2017-08-22 09:40:47 -05:00
jdlrobson ccccffa9c0 QA: Simplify toast notification step some more
If mediawiki.notification has loaded that should be enough to assume
the toast is ready to have its text checked.

Change-Id: Ic546877eae0ea6dd59dbf88bf9267bcd1957f779
2017-08-09 14:56:36 -05:00
jdlrobson 30de345e97 QA: Disable browser tests in @chrome
These are failing consistently due to T172835. Let's not run it in the
@chrome job and just rely on the Firefox coverage. We'll keep one test
in @chrome as it runs in integration mode (per commit).

Change-Id: Ic417148574208389b66249b2d98e009beef70fa2
2017-08-09 16:54:45 +00:00
jdlrobson f6df202786 QA: Relax toast notification QA steps
It seems trying to test both the steps can cause
false positives. Relaxing these checks seems to make
our Jenkins job happy without breaking the tests themselves

Change-Id: I119111e97f23d2f0dac7cbb0e5b86c1df0562598
2017-08-08 11:56:21 -05:00
jdlrobson 96d4955834 QA: Adjustments to account for slow loading of mediawiki.notifications
Changes:
* Use css rather than class for finding toast
* Correct a test typo
* Add a step to wait until the mediawiki.notification module
has been loaded

Bug: T170890
Change-Id: I86e48e00ebb83772149da7c7f20097b5436a0cf5
2017-08-08 00:30:09 +00:00
jdlrobson ebef44d0fe QA: Make sure toast is not empty before checking text value
Copies approach for the text of the first heading should be
accounting for the fact that the toast can have an empty
message "" at any given time.

Bug: T170890
Change-Id: Iba8a503a2aea30cb46fba27f000843183e9c46f1
2017-08-01 12:59:54 -07:00
jdlrobson 0f93115725 QA: Minor tweaks to how we check toast notifications
A toast autohides within 5 seconds and its display properties are
inherited from #mw-notification-area. This slight tweak waits for
mw-notification-area to be visible before verifying toast and its
contents

Change-Id: I89beaf9d131155e958cc9aae84a9e30ffd8e9e4f
2017-07-31 15:13:00 -07:00
jdlrobson d5a60fdd43 Browser tests: Use generic toast step
Introduces a new generic
"I should see a toast with message ".*""
step reducing toast steps to two generic ones.

Change-Id: Ic8b91c78f6df088244f15223ee4ed658847a05b5
2017-07-27 13:41:54 -07:00
jdlrobson 47546207ad Hygiene: Remove and update references to MobileFrontend
Changes:
* Update docs
* Update browser test artifacts
* Update comments
* Update phpunit test groups
* Update phpunit test namespace
* Update `die` when MobileFrontend not installed
* Remove the migrate script which is no longer needed

Change-Id: I83432b3f7f0bcd07ed08259972b8ff89147104b6
2017-07-19 14:21:50 -07:00
Piotr Miazga 7536ca089a Enable PHPCS and lint checks via composer test
Sniffs that are currently failing are disabled in phpcs.xml.

Additional changes:
* Fix problem in test file

Change-Id: I53642e9d7bc1ef96e359cfe04a8f93dabbc977eb
2017-07-17 22:20:29 +00:00
Piotr Miazga d5461f55a1 Fix failing SkinMinerva unit test
Bug: T170624
Change-Id: I13fff8eba06abad43291e481f32d9eb30c0f031b
2017-07-17 23:39:53 +02:00
Piotr Miazga 9d90df7b0b SkinMinerva testGetContextSpecificModule test might use undefined title
Test scenario for getContextSpecificModules() mocks only Skin->getTitle()
behavior, but while executing isAllowedPageAction() Skin will create a
UserPageHelper with default RequestContext. As RequestContext is not mocked,
$context->getTitle() will return undefined what could lead to tests crash

Changes:
 - instead of mocking SkinMinerva::getTitle() pass test context with injected
title. Other tests will work properly as MediaWikiTestCase::tearDown() always
restes RequestContext to default

Bug: T170624
Change-Id: I872fddf8d9c52a6875bb6c69a12407a8125fba4c
2017-07-17 21:40:34 +02:00
jdlrobson 69306b0b68 QA: Fix a flakey test
This copies the approach taken in
I3161c64d68c09a9a8f7d00a27eddfbe37830fabd

Change-Id: Ifd62db9bf5862e0a524186de12f50d05f41b4799
2017-07-13 16:47:28 +00:00
jdlrobson 2cc9516cde Minerva is its own skin
This is programmatic output from python3 scripts/migrate.py

This will result in a Minerva skin dependent on MobileFrontend.

Post merge we will rename message keys to have minerva- prefix

Bug: T166748
Change-Id: Iff1f7e63e796cc5d4a6d2ab0370e0c33248d2fce
2017-07-12 08:12:40 -07:00
jdlrobson 7e1e5c85df QA: Add note about git history of browser tests in this repo
Bug: T168758
Change-Id: I8363eb3270f8660c0057fa42803577c9cdff400a
2017-07-11 14:57:27 -07:00
jdlrobson c0c90234d0 Port browser tests from MobileFrontend to Minerva
This moves all browser tests from MobileFrontend to the Minerva repo
in preparation for separating the two.

Note, this means browser tests will exist in both repositories for a
period of time. This is important and necessary to ensure we do not
break anything.

See:
https://lists.wikimedia.org/pipermail/mobile-l/2017-July/010536.html

Bug: T168758
Change-Id: I84ae3ea14191f672cabcd52020e80b0a40a72ce1
2017-07-11 14:11:03 -07:00
jdlrobson b4c7cd11e9 Placeholder to avoid failing browser tests
Change-Id: I694a28b364a6baadc948d0465db5f4ee91cebb61
2017-06-23 16:26:13 -07:00