Commit graph

1774 commits

Author SHA1 Message Date
Stephen Niedzielski 81a2f4acb0 Hygiene: copy MobileFrontend Webpack learnings
Copy learnings from MobileFrontend's Webpack configuration. If nothing
else, the files are more consistent and easier to diff. When the change
to rename source maps is excluded, the build products are identical.

The following changes were copied:

- DRY up the output directory and source map extension as variables. For
  the latter, rename the source map from ".json" to ".map.json". Without
  renaming, the build products are unchanged.
- Reduce verbosity. Only report warnings and errors.
- Fail to build when an error occurs.
- Update ordering and add comments for easier reasoning and diffing with
  MobileFrontend.

Bug: T212527
Change-Id: Icf11dff91358ad021932aa209c65ed8aac77d12b
2019-01-02 21:30:12 +00:00
Translation updater bot 99ccfc1a79 Localisation updates from https://translatewiki.net.
Change-Id: If8959b4a5ece63711a55ccf96c7259e18c575b6e
2019-01-01 22:21:34 +01:00
Translation updater bot 694588ce0a Localisation updates from https://translatewiki.net.
Change-Id: I29c89556d9e10148e1c396d6cec23b69215f7bb2
2018-12-27 09:52:03 +01:00
Translation updater bot d8dbdeadb6 Localisation updates from https://translatewiki.net.
Change-Id: Iaccfd4deda59e7b679297c8ad9a92669d9993109
2018-12-20 22:41:47 +01:00
Thiemo Kreuz 357dbc4ff4 Fix copy-paste mistake in linkTitle.test.js
As far as I can see this is not an integration test, because linkTitle.js
does not interact with the document (in contrast to footerLink.js, which
does).

Change-Id: I8b611263020fe597efb63d8a0080b996ffc7dde4
2018-12-20 17:22:20 +00:00
Thiemo Kreuz 6ed00b924a Add some more missing @covers tags
I figured a single "@covers ::__construct" in PopupsContextTest should
be enough, especially since this constructor is super trivial.

There is nothing to test in NullLogger. I also removed the duplicated
documentation as it does not really apply, and is still available in the
base class.

Change-Id: I9a2e4b06e5bfd015efa4a92ba802c942290ec49d
2018-12-20 15:31:14 +00:00
Stephen Niedzielski 578233674d Fix: rebuild dist
Due to loosely versioned dependencies, master's resources/dist is out of
date. This won't be an issue when package-lock is supported. Rebuild the
assets as a workaround.

Change-Id: I2bb8eab5b849616f5ae96a7915f8f1a9069109a6
2018-12-20 15:30:55 +00:00
Translation updater bot 3aaaeda834 Localisation updates from https://translatewiki.net.
Change-Id: Ifb839af17b97c59a1b96f0ed0d1768dc29536e33
2018-12-19 22:22:46 +01:00
Stephen Niedzielski 4ce0246d78 Hygiene: replace jQuery.noop dependency
Replace $.noop dependency with inline empty function.

The tests relied on a single function instance to pass. A toString()
comparison of the noop function cannot be used as they differ when
coverage is enabled.

Change-Id: I641801593beb240a8f7d06e388a0e41dc8a25bc6
2018-12-19 15:52:31 +00:00
jenkins-bot 531b4f33ad Merge "Remove misplaced comments from PHPUnit tests" 2018-12-18 17:11:24 +00:00
Thiemo Kreuz 8efd3b20a5 Remove misplaced comments from PHPUnit tests
Some comments are copy-pasted from other, unrelated code. Documenting
a PHPUnit test file as being a "module test" is, I would argue, somewhat
pointless.

Change-Id: Iac28dc9c7b3e321b682e94c6a48efb2db41ca5f7
2018-12-18 10:00:00 +01:00
Thiemo Kreuz a90c9d5ce6 Add missing @covers tags to EventLoggerFactoryTest
According to https://tools.wmflabs.org/coverme/?repo=Extension%3APopups
these might be relevant to cover, and already are, but the required
@covers tags have been forgotten.

Note that the MWEventLogger class does not have a dedicated test. This
is fine because it is exclusively used by the factory (as it should),
can be considered part of it, and in this case it's fine if one test
covers both.

However, none of the log() methods is covered by any test. This is for
a later patch.

Change-Id: Ic1391f7a921d76796c4648ba59df64e793c8feae
2018-12-18 09:54:47 +01:00
Nicholas Ray 63031429b8 Upgrade redux / redux-thunk
redux       | 3.6.0 | 4.0.1
redux-thunk | 2.2.0 | 2.3.0

Upgrading these two dependencies caused the build size to increase from
from 12.2 KB to 12.4 KB (gzip) and so the bundlesize was adjusted
accordingly in our package.json.

Additionally, our linters flagged two rules that were then turned off in
.eslintrc.es5.json.

Looks like the changes in Redux were mostly cosmetic with much work
dedicated to typescript definitiions and dropping support of private
imports [1].

The changes to redux-thunk only involved changing typescript typings and
should not affect us. [2]

The upgrade was tested locally and did not appear to break anything.

[1] https://github.com/reduxjs/redux/issues/1342#issue-130452197
[2] https://github.com/reduxjs/redux-thunk/releases/tag/v2.3.0

Bug: T209314
Change-Id: I35284793ca0c72914d9b9b2e7c28dd407bafd4d8
2018-12-13 15:04:03 -07:00
Nicholas Ray 0c1a65f39d Upgrade webpack / webpack-cli
webpack     | 4.1.1  | 4.27.1
webpack-cli | 2.0.12 | 3.1.2

The upgrade of webpack modified our build files and included these
side effects:

* Our linter flagged the usage of bitwise operators in the build files
so I turned that off in our build file lint config (.eslintrc.es5.json)

* Our build file's size increased slightly from 12.1 KB to 12.13 KB
(gzip) so the package.json's bundlesize was updated accordingly.

No deleterious effects were noticed to popups running locally, but the
jump in webpack version included these notable changes:

* Switch from uglify-es to terser minimizer [1]

[1] https://github.com/webpack/webpack/releases/tag/v4.26.0

The upgrade for webpack-cli was a major version jump, but the params
that we pass to it in our package.json file appear to work as before.

Bug: T209314
Change-Id: I1403f2c4d354cf54554a740f8c23176bf80fd3c6
2018-12-13 14:53:54 -07:00
Nick Ray 15cc402343 Upgrade webdriverio / wdio-spec-reporter
wdio-mocha-framework | 0.6.1  | 0.6.3
wdio-spec-reporter   | 0.1.4  | 0.1.5
webdriverio          | 4.13.1 | 4.14.1

Selenium tests were tested locally with these upgrades and passed.

Note: I had some difficulty in upgrading wdio-mocha-framework to the
latest version 0.6.4 on my mac os (10.14) and experienced a `'utility'
file not found` error when npm installed the 'fibers' package. This
appears to be a known problem relating to node-gyp and older versions of
node. [1] Running the following suggested command [2] worked
for me:

`CXXFLAGS="-mmacosx-version-min=10.9" LDFLAGS="-mmacosx-version-min=10.9" npm i`

However, it was a hassle. Therefore, I chose to upgrade to only
0.6.3 in which this problem doesn't occur.

[1] https://github.com/nodejs/node-gyp/issues/1564
[2] https://github.com/nodejs/node-gyp/issues/1564#issuecomment-436609523

Bug: T209314
Change-Id: I0657ca5db4747b4ebb7aa0d01e2aeb97d6b2a7d0
2018-12-13 14:17:38 -07:00
Nick Ray 9975bbc4b4 Replace husky dependency with pre-commit
MobileFrontend uses the npm package 'pre-commit' to execute pre-commit
hooks but Popups was using 'husky'. This commit rectifies that for
consistency.

Bug: T209314
Change-Id: I56e841d6dc6739ffe040cb930ddf0ebce3905a9f
2018-12-13 14:17:06 -07:00
Nick Ray 2ed5587945 Upgrade stylelint-config-wikimedia and remove stylelint
The following upgrade was made:

stylelint-config-wikimedia | 0.4.3 | 0.5.0

The upgraded version stylelint-config-wikimedia includes stylelint as a
dependency (no longer a peer dependency) [1] so our stylelint dependency was
removed.

As a result of this upgrade, several of our .less files were flagged by
the linter and corrected in this patch.

[1] https://github.com/wikimedia/stylelint-config-wikimedia/blob/v0.5.0/package.json#L36

Bug: T209314
Change-Id: Ic6d4b1caf60f4e03fa60076a2ae74d6639117f25
2018-12-13 14:16:23 -07:00
Nick Ray c64497e5df Upgrade elint-config-wikimedia (drop eslint-plugin-qunit)
The following upgrade was made:

eslint-config-wikimedia | 0.8.1 | 0.9.0

The upgrade of eslint-config-wikimedia removes the need of
eslint-plugin-qunit as a peerDependency because it is now a hard
dependency [1] so it was removed in our package.json.

It appears the biggest change in the upgrade was the use of separate
profiles [2]. Given this, our root .eslintrc.json was updated to extend
from 'wikimedia/client'.

Several test files were flagged by the upgraded linter and were fixed in
this patch. Additionally, our build file was flagged for having too many
statements on one line. This rule was turned off in .eslintrc.es5.json

[1] https://github.com/wikimedia/eslint-config-wikimedia/blob/master/package.json#L48
[2] https://github.com/wikimedia/eslint-config-wikimedia/blob/master/CHANGELOG.md#090--2018-11-19

Bug: T209314
Change-Id: I29db72e77f04a327bc9c2b558c6d53849287bb80
2018-12-13 14:12:06 -07:00
Nick Ray 1594374fe2 Upgrade bundlesize, clean-webpack-plugin, grunt-contrib-watch, nyc
The following upgrades were made:

bundlesize           | 0.15.3 | 0.17.0
clean-webpack-plugin | 0.1.19 | 1.0.0
grunt-contrib-watch  | 1.0.1  | 1.1.0
nyc                  | 12.0.2 | 13.1.0

These potentially breaking changes were listed for nyc (but were not
observed):

* "--hook-run-in-context, and --hook-run-in-this-context are no longer
true by default (they should be enabled if you're using a library like
requirejs)."[1]

[1] https://github.com/istanbuljs/nyc/blob/master/CHANGELOG.md#breaking-changes

Bug: T209314
Change-Id: Iaf705d4e6cdde1e3d3103f1c154a8fb172815535
2018-12-13 13:09:24 -07:00
Translation updater bot 993cb357b4 Localisation updates from https://translatewiki.net.
Change-Id: I536252f163912026eec8f01d3179ef6ff7edc9f0
2018-12-12 22:18:43 +01:00
Thiemo Kreuz 096c74fae8 Fiy a few small typos in the Popups documentation
Change-Id: I0f02a41977eef0e1bf8fe4fc924c32e17ef78dd7
2018-12-11 18:23:30 +01:00
Shreyas Minocha 22226f3367
Switch from babel-preset-env to @babel/preset-env
Replace:
    - babel-preset-env@1.6.0 with @babel/preset-env@7.2.0
    - babel-register@6.24.1 with @babel/register@7.0.0
    - babel-loader@7.1.4 with babel-loader@8.0.4

Add:
    - @babel/core@7.2.0

---

- babel-preset-env, @babel/preset-env
  babel-preset-env moved to @babel/preset-env in the Babel monorepo.
  This appears to have incremented the version from v1.6.0[0] to 7.x to
  match the rest of the Babel packages but appears to otherwise be
  undocumented.[1,3]

  [0] https://github.com/babel/babel-preset-env/blob/24b99ec/README.md
  [1] https://github.com/babel/babel/blob/efa571a/CHANGELOG.md

- @babel/preset-env, @babel/register
  *Many* changes as identified by package [2] and summarized [3].

  Node.js v6 or above now required.

  New dependency on @babel/core.

  Support for ES2018 and browserslist v4.

  `modules: false` is now the default for preset-env + babel-loader. The
  .babelrc has been updated.

  New babel-upgrade tool.

  babel.config.js can replace .babelrc. Popups doesn't seem to need it.

  TypeScript and JSX fragment support.

  [2] https://github.com/babel/babel/blob/efa571a/CHANGELOG.md
  [3] https://babeljs.io/blog/2018/08/27/7.0.0

- babel-loader
  Support for Babel 7.x.

  The following warning is printed when building but perhaps this is due
  to another dependency:

    (node:14559) DeprecationWarning: loaderUtils.parseQuery() received a
    non-string value which can be problematic, see
    https://github.com/webpack/loader-utils/issues/56 parseQuery() will
    be replaced with getOptions() in the next major version of
    loader-utils.

  https://github.com/webpack/loader-utils/issues/56#issuecomment-286117000
  https://github.com/babel/babel-loader/releases/tag/v7.1.5
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.0
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.1
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.2
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.3
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.4
  (v8.0.0-beta.5 was erroneous.)
  https://github.com/babel/babel-loader/releases/tag/v8.0.0-beta.6
  https://github.com/babel/babel-loader/releases/tag/v8.0.0
  https://github.com/babel/babel-loader/releases/tag/v8.0.1
  https://github.com/babel/babel-loader/releases/tag/v8.0.2
  https://github.com/babel/babel-loader/releases/tag/v8.0.3
  https://github.com/babel/babel-loader/releases/tag/v8.0.4

Bug: T197883
Change-Id: Ie3a5404630fde87ea7fe618a842950ed8c0c6494
2018-12-11 13:09:45 +05:30
jenkins-bot 301df2cdea Merge "Hygiene: remove package-lock.json" 2018-12-10 23:55:09 +00:00
jenkins-bot b7b46b5fae Merge "Fix bug in ABANDON_END test" 2018-12-10 16:09:50 +00:00
Umherirrender 033cf7a795 build: Update sniff list in .phpcs.xml
FunctionDeclarationArgumentSpacing is now part of the default

Change-Id: I6e6638e1e115dd793b58cc18852aaaa5d282846c
2018-12-08 15:34:57 +01:00
Shreyas Minocha 9e515f73e7
Fix bug in ABANDON_END test
Change-Id: Ic0b6404630fde88ea7fe571a842950ec8c0c648f
2018-12-08 11:17:34 +05:30
Stephen Niedzielski 6d4eebe12b Hygiene: remove package-lock.json
Remove package-lock.json until a Node.js version that supports it is
possible.

Change-Id: I00d2168d8671d0f7fa2b999171e03c13bfac192a
2018-12-03 09:32:52 -07:00
Translation updater bot 53015b7237 Localisation updates from https://translatewiki.net.
Change-Id: Ib0b6404630fde88ea7fe618a842950ec8c0c648e
2018-12-02 22:15:04 +01:00
Translation updater bot 7953a2709d Localisation updates from https://translatewiki.net.
Change-Id: I0c528b44c87e727fa0cae9775029dd6df12964be
2018-11-25 22:34:11 +01:00
Translation updater bot 6c22f0d96b Localisation updates from https://translatewiki.net.
Change-Id: I5014349e5581a5e4b85f3ab896f84630e6dfc516
2018-11-21 22:29:20 +01:00
Translation updater bot f3751463fc Localisation updates from https://translatewiki.net.
Change-Id: Ic6c98be126addf0481a05e02c76f7f5d01a0c584
2018-11-17 22:19:51 +01:00
Stephen Niedzielski a24bbe76e6 Hygiene: use source-maps for dev builds not eval maps
Webpack's `-d` option is an alias for
`--debug --devtool cheap-module-eval-source-map --output-pathinfo`[0]
which overrode the `devtool` specified in the config. Specify
`--mode=development` which appears to be better supported than `-d`,
although the distinction is poorly documented[1]. The build products are
identical for `--mode=development --debug --output-pathinfo` and simply
`--mode=development` so the latter is used.

For consistency, replace `-p`, an alias for
`--optimize-minimize --define process.env.NODE_ENV=production`[0],
where `--optimize-minimize` is documented[2] as:

  Minimize JavaScript and switches loaders to minimizing UglifyJsPlugin
  and LoaderOptionsPlugin.

With `--mode=production` which is documented[3] as:

  Sets process.env.NODE_ENV on DefinePlugin to value production. Enables
  FlagDependencyUsagePlugin, FlagIncludedChunksPlugin,
  ModuleConcatenationPlugin, NoEmitOnErrorsPlugin,
  OccurrenceOrderPlugin, SideEffectsFlagPlugin and UglifyJsPlugin.

This change has already been made to MobileFrontend in c10f87d89.

[0] https://webpack.js.org/api/cli/#shortcuts
[1] https://medium.com/webpack/webpack-4-released-today-6cdb994702d4#dfa8
[2] https://webpack.js.org/api/cli/#optimize-options
[3] https://webpack.js.org/concepts/mode/#usage

Change-Id: I7a7ffc913592f0b18e091bb219a7fc75873d4d7a
2018-11-16 13:17:46 -07:00
libraryupgrader 750a357434 build: Updating mediawiki/mediawiki-codesniffer to 23.0.0
Change-Id: I046509fb8fa8c7e3e3ad8ab00062212498da54d0
2018-11-16 07:41:01 +00:00
Translation updater bot b7f0a9e0c7 Localisation updates from https://translatewiki.net.
Change-Id: Ie7eb4531cffee9534136779d5b64b8cd1eefb18d
2018-11-12 22:12:54 +01:00
Translation updater bot fa8af07513 Localisation updates from https://translatewiki.net.
Change-Id: I76384f034e05632b3f74602ada589e23a61c222d
2018-11-04 22:42:33 +01:00
Translation updater bot 605b13ff97 Localisation updates from https://translatewiki.net.
Change-Id: Icc70b5dd3afbdf0bc36e7c3f778392f4350ea9d0
2018-10-18 22:34:27 +02:00
Stephen Niedzielski 4d44390a4b Hygiene: enable ESLint caching
Copy ESLint caching configuration from MinervaNeue.

eead7c9382%5E%21/

Change-Id: Ifee0f67392f73c1285da7767a949998520bf4a0d
2018-10-17 16:45:35 -06:00
Stephen Niedzielski c7e742743b Doc: fix fetch delay comments
FETCH_COMPLETE_TARGET_DELAY is used to introduce an artificial delay to
HTTP requests as needed. However, FETCH_START_DELAY is always accounted
for so it makes sense to define FETCH_COMPLETE_TARGET_DELAY with it. The
docs are updated to draw the distinction between total delay and API
response delay.

Change-Id: I4cddc89b8090d54db0dd85f270441cab17c54993
2018-10-17 16:44:16 -06:00
jenkins-bot 471ea931de Merge "Hygiene: limit ESLint inheritance" 2018-10-17 22:37:08 +00:00
jenkins-bot 1db76db5ae Merge "Doc: fix type in getPageviewTracker()" 2018-10-17 22:31:05 +00:00
Translation updater bot b76034988d Localisation updates from https://translatewiki.net.
Change-Id: Ibf11cf0b65e97af4c42f624953ac3423cd0819de
2018-10-17 23:44:29 +02:00
Stephen Niedzielski d1ef4cbe88 Hygiene: limit ESLint inheritance
The project ESLint configuration unintentionally inherited unwanted
configuration from MediaWiki, which allows global jQuery usage. Cap the
project's ESLint hierarchy at the project root.

Change-Id: I5177d306feface7fcce0867c624bbcf9e74f19fc
2018-10-16 16:22:25 +00:00
Translation updater bot 87112444c4 Localisation updates from https://translatewiki.net.
Change-Id: I2b92645b27b057a266daf70b97ece8dd37aa3c52
2018-10-11 22:37:27 +02:00
Translation updater bot 1bc072f9bd Localisation updates from https://translatewiki.net.
Change-Id: If85e6f6b48f468c2d7da69ef5576a9b538152417
2018-10-09 22:13:03 +02:00
Translation updater bot 1e352ce7de Localisation updates from https://translatewiki.net.
Change-Id: If6885d4317d692305729b81bad2c633c3b59cf0d
2018-10-06 22:35:36 +02:00
James D. Forrester 505ddc61fa PHP tests: Use the . not + operator to join strings
This unbreaks the test suite in PHP 7.1+.

Bug: T206297
Change-Id: I29677e84f41da447180beb58ffbc60655640890c
2018-10-05 15:47:05 -07:00
Stephen Niedzielski 6e3f90016a Doc: fix type in getPageviewTracker()
Change-Id: I45b9456e0869657069c4a961171fd89415bf5656
2018-10-05 10:41:23 -06:00
Translation updater bot 1c3b5307e7 Localisation updates from https://translatewiki.net.
Change-Id: Ic9810142f096b906047bd3a0e6ecb15c942cec79
2018-10-04 22:24:22 +02:00
Translation updater bot 23425e3acd Localisation updates from https://translatewiki.net.
Change-Id: I0d2043940d7e1cf68aaaa5be689f855b0ab022f1
2018-10-03 18:53:40 +02:00
Translation updater bot 49878e43d5 Localisation updates from https://translatewiki.net.
Change-Id: I16c662e1552abc74af1648cda35c9f951c5b345d
2018-09-26 13:46:13 +02:00