Commit graph

158 commits

Author SHA1 Message Date
James D. Forrester
5a622b6a2e build: Upgrade eslint-config-wikimedia from 0.17.0 to 0.18.1
Change-Id: I5e3687be2b197134578126e1b890ee37dbc1bc1b
2021-02-18 08:39:09 -08:00
libraryupgrader
c08a03ee4f build: Updating npm dependencies
* ini: 1.3.5 → 1.3.8
  * https://npmjs.com/advisories/1589

Additional changes:
* Removed useless -p option to phpcbf in "composer fix" command.
* Set `root: true` in .eslintrc.json (T206485).

Change-Id: I0116578751fd73e43b07c2830adc629f4b85c784
2021-01-03 15:27:57 -08:00
Željko Filipin
6b77686cda Selenium: Delete tests/selenium/selenium.sh
Also remove selenium NPM script that calls the file.

There was a time when both the file and the script were used.
As far as I know, both the file and the script are no longer used.
Selenium tests are now using selenium-test NPM script, both in
core and in extensions and skins.

Bug: T270419
Change-Id: I817f64b6d0a0efd64cd3fd9334e51336ceb9865f
2020-12-23 18:01:48 +00:00
Željko Filipin
91b216f771 Selenium: fix selenium-daily NPM script
b8a2e21 removed hard-coded values for environment variables from
wdio.conf.js. That caused a couple of Jenkins jobs to fail because
MW_SCRIPT_PATH environment variable was not set.

This patch adds the variable to selenium-daily NPM script, executed by
the failing Jenkins jobs. The alternative is to add the variable to the
Jenkins job configuration.

Bug: T269755
Change-Id: I3c65db297b28449f000a8a79978ba777782f5ffa
2020-12-09 15:41:21 +01:00
Harriet Ayugi
b8a2e21eed Selenium: Target Mediawiki-Docker by default
Removed default values for MEDIAWIKI_USER, MEDIAWIKI_PASSWORD, MW_SERVER
and MW_SCRIPT_PATH in wdio.conf.js in order to use values from the .env file.

Bug: T247312
Change-Id: I728c705b476f7741982d7e7c3e0ed219f2fcd054
2020-12-08 15:38:25 +00:00
Ed Sanders
5dece5b27b Update stylelint-config-wikimedia to 0.10.3
Remove needless disables.

Change-Id: I324ab9d23a354cb0298a0714df2535f8e8850261
2020-11-19 23:13:37 +00:00
James D. Forrester
88e54de91d build: Upgrade grunt from 1.1.0 to 1.3.0
Change-Id: I3fdb8738963c222e1b17196951c5469baf037b37
2020-10-22 10:40:00 -07:00
alqaholic007
9e6c4ca9d7 Selenium: Bump wdio-video-reporter to v3.1.1
wdio-video-reporter resolves some important issues
related to not attaching non-jsonwire events to
screenshots. For more info refer:

https://github.com/presidenten/wdio-video-reporter/issues/45

Bug: T253113
Change-Id: Iecb156aec2106e92c66c78005866a7b77571b26f
2020-10-22 14:33:09 +00:00
alqaholic007
83a95208d4 build: Auto-fix npm audit issues
Bug: T262438
Change-Id: Ic463fede8c4a5c364ea05f9437e4a3cb4abcfa22
2020-09-10 16:23:31 +01:00
Ed Sanders
4fc3f3af24 build: Update eslint-config-wikimedia to 0.17.0
Fix remaining instances of variable shadowing.

Change-Id: I2a3840446f1fe138410249cc35be5ddf262d8e46
2020-08-20 12:45:09 +01:00
Nikki Nikkhoui
c26d64fc18 UserContributions endpoint add tags 'display' property
Add a property to the 'tags' object in the /user/{name}/contributions
REST endpoint named 'display' which shows the display
HTML for the tag which is either defined in i18n .json
files or overriden at MediaWiki:tag-$name

Bug: T259716
Depends-On: I57e2a7253944a3fde3f52f52bbf5fe8473c8a415
Change-Id: Id755adcab8b0115e19df2a6046643ebe97881e28
2020-08-19 06:04:50 -07:00
Nikki Nikkhoui
7452d8c067 REST /me/contributions: return change tags
The endpoint for user contributions should include change tags in the
result. Bump the version of npm module api-testing.

Bug: T252202
Change-Id: Iccc0c378bc65d0f34b38557f4c78f424d95a951f
2020-06-25 19:28:02 +02:00
Ed Sanders
ceb2cd2fe8 build: Update eslint-config-wikimedia to 0.16.2
Use jsduck config.

Change-Id: I3a1a0c8f0ca535c9661b3774498866fdb98a4255
2020-06-18 19:12:10 +00:00
Ed Sanders
08510de602 api-testing: Use wikimedia/mocha eslint config
Change-Id: Iec346d87f252c66fbff1e0fa522d7440df6f1764
2020-06-18 19:20:33 +01:00
alqaholic007
eed975d6e3 Selenium: Use wdio-video-reporter for recording test videos
Earlier versions of WebdriverIO lacked support for video recording.
Starting with WebdriverIO v5, a new package wdio-video-reporter
has been introduced which is used to replace ffmpeg and Xvfb.

Limitations:
- Alert messages and pop-ups do not get displayed in the videos.

New Packages:
- wdio-video-reporter

Bug: T255253
Change-Id: Id443779959bfac55eae42e16e10d1f20c25375bb
2020-06-15 13:32:02 +02:00
daniel
5ac84ffd12 REST /me/contributions: return revisions
This is part of a chain of patches to complete the REST User Contributions
endpoint. This change returns a list of the 2 (hard-coded for now) most
recent revisions for a given user.

Package.json was also updated for new api-testing module (v 1.1.0)

Bug: T252202
Change-Id: I42a5dfc0e1ff7600848e89ac2c4b002e8a3612df
2020-06-09 08:19:45 -07:00
Ed Sanders
8b720e9bd6 eslint: Update to eslint-config-wikimedia 0.16.0
* valid-jsdoc replaced with jsdoc plugin
* New /selenium config

Change-Id: I471eebac0312cb25c539c3f6a3ecfc7cfd4ed8d6
2020-06-02 21:32:56 +01:00
vidhi-mody
19ba555c71 Selenium: Update to WebdriverIO v6
Update NPM packages: @wdio/* and webdriverio.

Bug: T253306
Change-Id: Id073b4924a00af2078117191d27ba9443dbb67ec
2020-05-21 13:57:40 +00:00
Zfilipin
157a1e3829 Revert "Selenium: Use wdio-video-reporter to record videos of test run"
This reverts commit babbbbc6e5.

Reason for revert: Video recording only works with WebdriverIO v5. It doesn't work with v6.

Bug: T252523
Change-Id: I5dd0bb5ef03bcf5337207c63d26755e983634787
2020-05-20 10:37:09 +00:00
AlQaholic007
babbbbc6e5 Selenium: Use wdio-video-reporter to record videos of test run
Earlier versions of WebdriverIO lacked support for video recording.
Starting with WebdriverIO v5, a new package wdio-video-reporter
has been introduced which is used to replace ffmpeg and Xvfb.

Limitations:
- Alert messages and pop-ups do not get displayed in the videos.

Bug: T252523
Change-Id: I6c964467066eb30e28a3435ddf7831a4e296b8f5
2020-05-14 19:24:10 +02:00
James D. Forrester
31fbff8914 build: Upgrade karma-related devDependencies to latest
grunt-karma  3.0.2  →   4.0.0
 karma        4.4.1  →   5.0.4
 karma-qunit  4.0.0  →   4.1.0

Change-Id: I4e91df8076ab190d8655833c94332ca09f3efaa6
2020-05-04 13:54:20 -07:00
James D. Forrester
591ece50e0 build: Upgrade all regular linters to latest
Change-Id: Iab677e4c6c842b6a4d3fdd48f8b5d361d8acf365
2020-05-04 13:51:45 -07:00
James D. Forrester
9a868a0b99 resources: Upgrade qunit from 2.9.3 to 2.10.0
Change-Id: Ib0a0ab2465946fbedf120ebb506a038c526fc78e
2020-05-04 13:49:51 -07:00
Roan Kattouw
bed84e3281 build: Provide linting for .vue files from upstream
Was first attempted in f1eaa06d5e,
and reverted in 0b3fe4fe8c. Now this
is done in eslint-config-wikimedia for all repos.

Change-Id: I9ee735eef40085b6373b565838d67e186e438657
2020-04-15 17:40:31 -07:00
Catrope
0b3fe4fe8c Revert "build: Linting for .vue files"
This reverts commit f1eaa06d5e.

Reason for revert: accidentally allowed ES6 syntax.
Looking for a way to redo this that doesn't break our linting as badly.

Change-Id: I78974b97001bdbea9aff5717c69d71b8a2582ade
2020-03-30 18:08:22 -07:00
Timo Tijhof
0b4e24c995 build: Merge doc linting into 'npm test'
Whether JSDuck or JSDoc3, it's good to verify that there are no
regressions in the doc syntax. This has been enforced by WMF CI
for many years with a dedicated Jenkins job.

However, both 'grunt lint' and 'npm run doc' take a relatively
small amount of time in CI:

* grunt lint: ~ 35s (not incl 'npm install')
* npm run doc: ~ 10s (not incl 'npm install')

Bug: T225730
Change-Id: If22b7bc64266e43088c7dec8138d81c938687fb9
2020-03-18 18:40:57 +00:00
Željko Filipin
a43fd95e14 Selenium: fix Illegal option -o pipefail
47cc31d changed running selenium.sh using sh instead of bash. This
commit reverts back to bash, since sh does not support pipefail.

Bug: T247983
Change-Id: Ia2706051d40a6c26156fef77744cf5dff3a8cf95
2020-03-18 16:07:13 +01:00
AronDemian
47cc31de95 tests: Enable 'npm run selenium' on Windows
Run the script explictly via sh, the default is cmd.exe on Windows.
Also ported from bash to sh per Jforrester's request.

Change-Id: I96b66c6ae01a1761619955be2e8a3dbc64edff18
2020-03-15 21:46:50 +00:00
Timo Tijhof
4029fbf38a build: Remove unused 'jpeg-js' npm dev dependency
Follows-up 7d9e117d91, which added this for use in WikibaseMediaInfo,
which should have been added there instead of here.

This has since been fixed.

Change-Id: I6d5b0c93c3de457da0bf54859f05b1836eccc84f
2020-03-02 02:22:43 +00:00
James D. Forrester
0461692f45 build: Updating npm dependencies
* grunt-stylelint: 0.12.0 → 0.14.0
* stylelint-config-wikimedia: 0.7.0 → 0.9.0

Change-Id: Ia055fbfd75e1d3a8b771e08a6b0dbd7de61c7a98
2020-02-18 17:23:11 -08:00
Roan Kattouw
f1eaa06d5e build: Linting for .vue files
Install eslint-plugin-vue, which lints JS inside <script> blocks in
.vue files, and also lints Vue templates. Configure eslint and stylelint
to run on .vue files. stylelint automatically picks up on CSS in <style>
tags.

You may have to change a setting in your text editor or IDE to make it
run eslint and stylelint in .vue files. For eslint, see
https://eslint.vuejs.org/user-guide/#editor-integrations ; for
stylelint, I had to install the linter-stylelint-plus Atom plugin then
add source.css.embedded.html to the "Base Scopes" setting for that
plugin.

Change-Id: I7e6a13317792fc25c29106739b0c24864fd8d301
2020-02-05 18:51:39 -08:00
Clara Andrew-Wani
f07d7ba699 Move tests from api-testing repo into Core
Except for Search & Watchlist, which need fixes in gated extensions first.

Change-Id: I88d24dda4bc047868de3ff9dd4a5753b9c7b0f64
2020-02-05 16:07:54 -08:00
James D. Forrester
8c3f6440e4 build: Update qunit and all karma-related tools to latest
karma                   3.1.4  →  4.4.1
 karma-chrome-launcher   2.2.0  →  3.1.0
 karma-firefox-launcher  1.1.0  →  1.3.0
 karma-qunit             2.1.0  →  4.0.0
 qunit                   2.9.1  →  2.9.3

Bug: T222293
Change-Id: I76d9fe8b6b189a9a334411f3b62014c234002edc
2020-02-03 13:28:24 -08:00
Timo Tijhof
6143f757ea selenium: Replace wdio-chromedriver with ./selenium.sh script
This package was serving two purposes:

* Install chromedriver automatically.
* Start chromedriver automatically when using the
  'npm run selenium' entry point (e.g. for local development).

For the CI entry points (selenium-test, selenium-daily) the
chromedriver is skipped. For those, we expect the CI runner to
have started a chromedriver server already, which allows the
server to continue running between different the test suites
of different extensions etc.

By letting WDIO start the chromedriver for local development,
we had the benefit of 'npm run selenium' directly being an alias
to the 'wdio' command. This made it easy to pass additional
arguments like --spec or --mochaOpts for running specific tests
only and overall makes things easier to reason about from a
developer perspective with fewer (required) layers of
indirection you see and need to understand when debugging.

But, this has also caused problems. Specifically, it means
developers have to use the same version of Chrome locally
as we specify in package.json which isn't very flexible. While
we could try to keep this up-to-date roughly, that too isn't
an option because the secure environments we recommend for local
use (Quibble and Fresh-node) both use a Debian distro with
typically older versions of Chromium than your local auto-updating
Google Chrome.

For now, let's go back to moving the responsibility of installing
chromedriver together with the responsibility to install Chrome
itself.

== Changes ==

For CI, nothing changes (it already installs both).

For developers using Quibble, Vagrant or Fresh nothing changes
(already installs both).

For developers who make their own secure environment, they will
need to make sure chromedriver is installed, just as we required
between 2017 and Aug 2019 before my commit 1955a8aa56.

== How ==

wdio-chromedriver cannot start a foreign install because the
protocol can change between versions, so unfortunately together
with not using chromedriver from npm, we also can't use
the wdio-chromedriver autostart mechanism. Instead, I'm bringing
back Antoine's shell script that did this prior to ebda397c54.
But, with a few tweaks so that it forwards shell arguments,
this way developers continue to enjoy the benefit of 1955a8aa56,
which is that 'npm run selenium -- --spec foo.js' works.

Bug: T234610
Change-Id: I03ca94315d0611d2b6abccc12cf9076d41b2c00e
2020-01-17 17:03:54 +00:00
Clara Andrew-Wani
ac4dec907b Add API-testing to core
Bug: T236680
Depends-On: I0110de1539e4d6d9d6a58d1a645c1a1c02d8127f
Change-Id: I827dc895719cc68738ebb425f8471ac38caa49aa
2019-12-19 13:20:12 -05:00
Ed Sanders
a7227221af Remove unnecessary devDependency
Change-Id: I490e29b8aeefbd54d7ebeb3ac16a918495bfe4ec
2019-10-29 11:13:59 +00:00
Ed Sanders
3c2cea4559 build: Update linters and fix errors
Change-Id: Ieb1eff174f5168bf6c9e9aaeb58ec1a1bcd33538
2019-10-23 11:22:41 +01:00
Ed Sanders
7b9bb6f7d6 Use plugin to ensure all message keys are documented
Bug: T235502
Change-Id: If77ddf2caf667504bd0f7e0150649745ae31c4e2
2019-10-21 17:05:40 +01:00
Ed Sanders
00b2315132 Build: Update eslint-config-wikimedia and fix errors
Change-Id: I9459dcee08ea7f5b54c41a2cfde965b011099f57
2019-10-03 08:33:21 -07:00
Timo Tijhof
1955a8aa56 selenium: Upgrade from webdriver v4 to v5
* Options no longer needed or no longer exist in wdio v5:
  - coloredLogs: Now always on. The underlying 'chalk' library can still
    be influenced via the FORCE_COLOR environment variable.
  - screenshotPath: Removed. Was already disabled in our config.
  - deprecationWarnings: Meh.
  - 'sync: true' – On by default when `@wdio/sync` is installed.
    The wdio v5 config generator doesn't recommend setting manually.

* The selenium.sh script was removed. It existed to start and stop
  chromedriver for local use by developers. This is now done by
  the wdio-chromedriver-service. In WMF CI, Quibble starts its own
  chromedriver (as optimisation, reused across gated repos),
  which is why the 'selenium-test' entry points remains and skips
  this.

* The wdio-mediawiki package now requires wdio v5 and Node 10.
  This doesn't affect extension repos because versions are pinned.
  Upgrade may happen at the earliest convenience.

* Several WDIO methods changed names or signature. Full list at:
  <https://github.com/webdriverio/webdriverio/blob/v5.13.2/CHANGELOG.md#v500-2018-12-20>
  Highlights:
  - browser.element() is now browser.findElement() with "$()" as alias.
  - browser.localStorage replaced by browser.setLocalStorage.
  - browser.deleteCookie() requires `name` param. To delete all at once,
    there is a new method browser.deleteAllCookies().
  - Commands that return data no longer wrapped in `{ value: … }`.
    Values are now returned directly.
  - Custom config keys are now under browser.config instead of browser.options.
    Renamed our username/password keys to be mw-prefixed, to avoid clashes
    and reduce confusion with similar config keys.
  - browser.click(selector) and browser.getText(selector) no longer exist.
    Use $(selector).click() or .getText() instead.

* Fix "no such alert" warning from specs/page.js by removing the apparently
  redundant code.

Bug: T234002
Bug: T213268
Change-Id: I908997569ca8457997af30cb29e98ac41fae3b64
2019-09-29 02:59:44 +01:00
James D. Forrester
aa7133ce86 wdio: Switch to dots reporter for brevity
Change-Id: Ica6cc3e4fc445f39ba911db14c58a486f32f7f89
2019-08-23 20:51:00 +00:00
Željko Filipin
5a78d326a7 build: use the latest webdriverio 4.x related packages
Updating packages removes dependency on cryptiles. We were using
version 3.1.4 that had a vulnerability.

Bug: T226586
Change-Id: Idccc7f418ed6fce7452a6f0d403477953448a541
2019-07-08 15:33:44 +00:00
Ed Sanders
689d07b81d build: Update eslint-config-wikimedia to 0.13.0
Change-Id: I7df5840bc97f8bbcd8cfc875c2b48b3061ef2c9e
2019-07-05 13:32:26 -07:00
James D. Forrester
6b1e651255 build: Upgrade stylelint-config-wikimedia from 0.5.0 to 0.6.0 and make pass
Change-Id: I062bed7889cdfcc48eab9594200fc1d4767dda8c
2019-06-10 14:49:49 -07:00
James D. Forrester
effb830977 selenium: Re-add all tests and wdio-mocha-framework, now v0.6.4
This reverts commit c3878c08b5.

Now that we're running on node10, this will fail until we fix
things.

Bug: T213268
Bug: T222406
Change-Id: I5935fc5d5bc23978e50275d3c99ac870b3b82f49
2019-06-03 12:56:07 -07:00
James D. Forrester
c3878c08b5 selenium: Temporarily drop all tests and wdio-mocha-framework
This is so that we can migrate to node 10 in CI. It should only land
for an hour or so, and is to be reverted as soon as we get CI up to
node 10 and working, lest our suites of selenium tests become
subject to bitrot.

Bug: T222406
Change-Id: I9473e0213c070a0e963913fd81062c6bbf9ec2f2
2019-06-03 14:33:42 +00:00
Michael Holloway
6a75d6e473 npm: bump grunt-karma to 3.0.2
`npm install` currently fails due to an unsatisfied peer dependency.
See full output here:

https://phabricator.wikimedia.org/P8552

Bumping the required grunt-karma version to the latest (3.0.2) fixes
this.

Change-Id: I5b7f2deba2d766b809a964f53cb22f47f0617bd6
2019-05-21 17:28:48 -04:00
Željko Filipin
7d9e117d91 selenium: Add jpeg-js to devDependencies
It is needed for I92739d84947ac146e in WikibaseMediaInfo Selenium tests.
It can not be added there because of T199116.

Bug: T219815
Bug: T199116
Change-Id: Ib7c3b1b49c280bdc38c40c6aef900a605c1e3cbe
2019-05-10 16:08:46 +00:00
James D. Forrester
7fdc5220f2 build: Upgrade eslint-config-wikimedia 0.12.0, drop grunt-jsonlint
Bug: T220036
Change-Id: I7088f9eeb9468b14efb2773fde5f55fd5c95a489
2019-05-06 13:48:40 -07:00
James D. Forrester
92b090e9e3 build: Upgrade grunt-banana-checker from 0.6.0 to 0.7.0 and make pass
Change-Id: I4c604ab50caeffc5738c719c17f19e769082376f
2019-04-30 13:26:02 -07:00