eslint: Update to eslint-config-wikimedia 0.16.0

* valid-jsdoc replaced with jsdoc plugin
* New /selenium config

Change-Id: I471eebac0312cb25c539c3f6a3ecfc7cfd4ed8d6
This commit is contained in:
Ed Sanders 2020-05-14 22:14:42 +01:00
parent 8d7015037d
commit 8b720e9bd6
72 changed files with 2023 additions and 1618 deletions

View file

@ -13,5 +13,16 @@
"max-len": "off",
"mediawiki/valid-package-file-require": "off",
"no-jquery/no-global-selector": "off"
},
"settings": {
"jsdoc": {
"tagNamePreference": {
"this": "context",
"context": "context",
"alias": "alternateClassName",
"alternateClassName": "alternateClassName",
"typedef": "type"
}
}
}
}

View file

@ -20,7 +20,8 @@ module.exports = function ( grunt ) {
eslint: {
options: {
extensions: [ '.js', '.json', '.vue' ],
cache: true
cache: true,
fix: grunt.option( 'fix' )
},
all: '.'
},

View file

@ -1,3 +1,5 @@
'use strict';
const chars = [];
for ( let i = 0; i <= 0x10ffff; i++ ) {

3415
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -22,12 +22,12 @@
"@wdio/sauce-service": "6.1.9",
"@wdio/sync": "6.1.8",
"api-testing": "1.0.3",
"eslint-config-wikimedia": "0.15.3",
"eslint-config-wikimedia": "0.16.0",
"grunt": "1.1.0",
"grunt-banana-checker": "0.9.0",
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-watch": "1.1.0",
"grunt-eslint": "22.0.0",
"grunt-eslint": "23.0.0",
"grunt-karma": "4.0.0",
"grunt-stylelint": "0.15.0",
"grunt-svgmin": "5.0.0",

View file

@ -12,7 +12,6 @@
return data;
};
// eslint-disable-next-line valid-jsdoc
/**
* Enable inline confirmation for given clickable element (like `<a />` or `<button />`).
*

View file

@ -50,7 +50,7 @@
this.apiUrl = String( url );
this.anonymous = options && options.anonymous;
options = $.extend( /* deep=*/ true,
options = $.extend( /* deep= */ true,
{
ajax: {
url: this.apiUrl,

View file

@ -968,13 +968,19 @@ Title.prototype = {
};
/**
* @alias #getPrefixedDb
* Alias of mw.Title#getPrefixedDb
*
* TODO: Use @-alias when we switch to JSDoc
*
* @method
*/
Title.prototype.toString = Title.prototype.getPrefixedDb;
/**
* @alias #getPrefixedText
* Alias of mw.Title#getPrefixedText
*
* TODO: Use @-alias when we switch to JSDoc
*
* @method
*/
Title.prototype.toText = Title.prototype.getPrefixedText;

View file

@ -108,16 +108,20 @@
/**
* Checkbox hack listener state.
* @type {Object} CheckboxHackListeners
* @property {EventListenerOrEventListenerObject} [onUpdateAriaExpandedOnInput]
* @property {EventListenerOrEventListenerObject} [onToggleOnClick]
* @property {EventListenerOrEventListenerObject} [onDismissOnClickOutside]
* @property {EventListenerOrEventListenerObject} [onDismissOnFocusLoss]
*
* TODO: Change to @-typedef when we switch to JSDoc
*
* @class {Object} CheckboxHackListeners
* @property {Function} [onUpdateAriaExpandedOnInput]
* @property {Function} [onToggleOnClick]
* @property {Function} [onDismissOnClickOutside]
* @property {Function} [onDismissOnFocusLoss]
* @ignore
*/
/**
* Revise the aria-expanded state to match the checked state.
*
* @param {HTMLInputElement} checkbox
* @return {void}
* @ignore
@ -129,6 +133,7 @@ function updateAriaExpanded( checkbox ) {
/**
* Returns true if the Event's target is an inclusive descendant of any the checkbox hack's
* constituents (checkbox, button, or target), and false otherwise.
*
* @param {HTMLInputElement} checkbox
* @param {HTMLElement} button
* @param {Node} target
@ -146,6 +151,7 @@ function containsEventTarget( checkbox, button, target, event ) {
/**
* Dismiss the target when event is outside the checkbox, button, and target.
*
* @param {HTMLInputElement} checkbox
* @param {HTMLElement} button
* @param {Node} target
@ -162,6 +168,7 @@ function dismissIfExternalEventTarget( checkbox, button, target, event ) {
/**
* Update the `aria-expanded` attribute based on checkbox state (target visibility) changes.
*
* @param {HTMLInputElement} checkbox
* @return {CheckboxHackListeners}
* @ignore
@ -175,6 +182,7 @@ function bindUpdateAriaExpandedOnInput( checkbox ) {
/**
* Manually change the checkbox state to avoid a focus change when using a pointing device.
*
* @param {HTMLInputElement} checkbox
* @param {HTMLElement} button
* @return {CheckboxHackListeners}
@ -195,6 +203,7 @@ function bindToggleOnClick( checkbox, button ) {
/**
* Dismiss the target when clicking elsewhere and update the `aria-expanded` attribute based on
* checkbox state (target visibility).
*
* @param {Window} window
* @param {HTMLInputElement} checkbox
* @param {HTMLElement} button
@ -211,6 +220,7 @@ function bindDismissOnClickOutside( window, checkbox, button, target ) {
/**
* Dismiss the target when focusing elsewhere and update the `aria-expanded` attribute based on
* checkbox state (target visibility).
*
* @param {Window} window
* @param {HTMLInputElement} checkbox
* @param {HTMLElement} button

View file

@ -384,21 +384,23 @@ FilterGroup.prototype.hasWhatsThis = function () {
* Get the conflicts associated with the entire group.
*
* Conflict object is set up by filter name keys and conflict
* definition. For example:
* [
* {
* filterName: {
* filter: filterName,
* group: group1
* definition.
*
* @example
* [
* {
* filterName: {
* filter: filterName,
* group: group1
* }
* },
* {
* filterName2: {
* filter: filterName2,
* group: group2
* }
* }
* },
* {
* filterName2: {
* filter: filterName2,
* group: group2
* }
* }
* ]
* ]
*
* @return {Object} Conflict definition
*/

View file

@ -534,6 +534,7 @@ util = {
* Parse the URL of an image uploaded to MediaWiki, or a thumbnail for such an image,
* and return the image name, thumbnail size and a template that can be used to resize
* the image.
*
* @param {string} url URL to parse (URL-encoded)
* @return {Object|null} URL data, or null if the URL is not a valid MediaWiki
* image/thumbnail URL.

View file

@ -202,7 +202,6 @@
return this.selected;
};
// eslint-disable-next-line valid-jsdoc
/**
* Set the selected dates
*
@ -253,7 +252,6 @@
return this.focusedDate;
};
// eslint-disable-next-line valid-jsdoc
/**
* Set the currently-focused date
*

View file

@ -125,7 +125,6 @@
return this.local;
};
// eslint-disable-next-line valid-jsdoc
/**
* Toggle whether dates are in local time or UTC
*

View file

@ -50,7 +50,7 @@
// <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set>
/**
* @private
* @class
* @class StringSet
*/
StringSet = window.Set || function () {
var set = Object.create( null );
@ -491,7 +491,7 @@
*
* See #implement and #execute for exact details on support for script, style and messages.
*
* Format:
* @example Format:
*
* {
* 'moduleName': {
@ -565,7 +565,7 @@
* Typically when a job is created for a module, the job's dependencies contain
* both the required module and all its recursive dependencies.
*
* Format:
* @example Format:
*
* {
* 'dependencies': [ module names ],
@ -1847,6 +1847,7 @@
*
* The #work() method will use this information to split up requests by source.
*
* @example
* mw.loader.addSource( { mediawikiwiki: 'https://www.mediawiki.org/w/load.php' } );
*
* @private

View file

@ -1,15 +1,10 @@
{
"extends": [
"wikimedia/server",
"wikimedia/node",
"wikimedia/language/es2017"
"wikimedia/server"
],
"env": {
"mocha": true
},
"parserOptions": {
"ecmaVersion": 2018
},
"rules": {
"camelcase": "off",
"require-atomic-updates": "off"

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, REST, utils } = require( 'api-testing' );
const supertest = require( 'supertest' );

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, REST, utils } = require( 'api-testing' );
describe( 'Page HTML Bare', () => {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, REST, utils } = require( 'api-testing' );
describe( 'Page History', () => {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, REST, utils } = require( 'api-testing' );
describe( 'Page Source', () => {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, REST, utils } = require( 'api-testing' );
describe( 'Revision', () => {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, REST, utils } = require( 'api-testing' );
describe( 'Search', () => {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, REST, utils } = require( 'api-testing' );
describe( 'PUT /page/{title}', () => {

View file

@ -1,3 +1,5 @@
'use strict';
const { assert, action, utils } = require( 'api-testing' );
describe( 'Testing default autopatrolling rights', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Backlinks', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { assert, action, utils } = require( 'api-testing' );
describe( 'Categories', function testCategories() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The delete/undelete action', function testDeleteAction() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Diff Compare with Variables', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The edit action', function testEditAction() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Links', function testLinks() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Listing Users', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Move action', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert } = require( 'api-testing' );
describe( 'Testing a new talk page notification', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Test page protection levels and effectiveness', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The parse action', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The patrol action', function testEditPatrolling() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert } = require( 'api-testing' );
describe( "Changing a user's preferences", function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Prefix Search', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Recent Changes', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Reparse of dependent pages', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Testing Revisions', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The rollback action', function testEditRollback() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( "Testing site statistics' edits value", function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'Testing undo functionality', function () {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The block/unblock action', function testBlockingAUser() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The usercontribs list query', function testUserContribsListQuery() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( "Changing a user's `editfont` option", function getUserOptions() {

View file

@ -1,3 +1,5 @@
'use strict';
const { action, assert, utils } = require( 'api-testing' );
describe( 'The watchlist', function testWatch() {

View file

@ -1,19 +1,9 @@
{
"root": true,
"extends": [
"wikimedia",
"wikimedia/node",
"wikimedia/language/es2017",
"wikimedia/jquery"
"wikimedia/selenium"
],
"env": {
"mocha": true
},
"globals": {
"browser": "readonly",
"mw": "readonly"
},
"rules": {
"no-jquery/no-global-selector": "off"
}
}

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class CreateAccountPage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class DeletePage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class EditPage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
const Util = require( 'wdio-mediawiki/Util' );

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class PreferencesPage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class RecentChangesPage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class RestorePage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class UndoPage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class WatchablePage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( 'wdio-mediawiki/Page' );
class WatchlistPage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const assert = require( 'assert' );
const Api = require( 'wdio-mediawiki/Api' );
const DeletePage = require( '../pageobjects/delete.page' );

View file

@ -1,3 +1,5 @@
'use strict';
const assert = require( 'assert' );
const HistoryPage = require( '../pageobjects/history.page' );
const Api = require( 'wdio-mediawiki/Api' );

View file

@ -1,3 +1,5 @@
'use strict';
const assert = require( 'assert' );
const Api = require( 'wdio-mediawiki/Api' );
const RecentChangesPage = require( '../pageobjects/recentchanges.page' );

View file

@ -1,3 +1,5 @@
'use strict';
const assert = require( 'assert' );
const Api = require( 'wdio-mediawiki/Api' );
const WatchlistPage = require( '../pageobjects/watchlist.page' );

View file

@ -1,3 +1,5 @@
'use strict';
const assert = require( 'assert' );
const CreateAccountPage = require( '../pageobjects/createaccount.page' );
const PreferencesPage = require( '../pageobjects/preferences.page' );

View file

@ -1,3 +1,5 @@
'use strict';
const MWBot = require( 'mwbot' );
module.exports = {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( './Page' );
class BlankPage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const Page = require( './Page' );
class LoginPage extends Page {

View file

@ -1,3 +1,5 @@
'use strict';
const querystring = require( 'querystring' );
/**

View file

@ -1,3 +1,5 @@
'use strict';
const MWBot = require( 'mwbot' );
const Page = require( './Page' );
const MAINPAGE_REQUESTS_MAX_RUNS = 10; // (arbitrary) safe-guard against endless execution

View file

@ -1,3 +1,5 @@
'use strict';
module.exports = {
getTestString( prefix = '' ) {
return prefix + Math.random().toString() + '-Iñtërnâtiônàlizætiøn';

View file

@ -1,3 +1,5 @@
'use strict';
const fs = require( 'fs' );
module.exports = {

View file

@ -1,3 +1,5 @@
'use strict';
const assert = require( 'assert' );
const BlankPage = require( './../BlankPage' );

View file

@ -1,3 +1,5 @@
'use strict';
const fs = require( 'fs' );
const path = require( 'path' );
const logPath = process.env.LOG_DIR || path.join( __dirname, '/log' );
@ -108,6 +110,7 @@ exports.config = {
// =====
/**
* Executed before a Mocha test starts.
*
* @param {Object} test Mocha Test object
*/
beforeTest: function ( test ) {