build: Update linters

Change-Id: I5aa3ab891890b52057a5fc855315e5b1b2203037
This commit is contained in:
Ed Sanders 2024-01-24 22:02:12 +00:00
parent c01d353e96
commit 8ef144f936
31 changed files with 1994 additions and 919 deletions

View file

@ -7,7 +7,7 @@
"declaration-no-important": null,
"declaration-property-unit-disallowed-list": null,
"selector-class-pattern": null,
"selector-list-comma-newline-after": null,
"stylistic/selector-list-comma-newline-after": null,
"value-keyword-case": null
}
}

2608
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -21,13 +21,13 @@
"@wdio/local-runner": "7.30.1",
"@wdio/mocha-framework": "7.26.0",
"@wdio/spec-reporter": "7.29.1",
"eslint-config-wikimedia": "0.25.1",
"grunt-banana-checker": "0.11.0",
"eslint-config-wikimedia": "0.26.0",
"grunt-banana-checker": "0.11.1",
"jsdoc": "3.6.10",
"jsdoc-wmf-theme": "^0.0.8",
"mwbot": "2.0.0",
"pre-commit": "1.2.2",
"stylelint-config-wikimedia": "0.15.0",
"stylelint-config-wikimedia": "0.16.1",
"svgo": "3.2.0",
"wdio-mediawiki": "2.1.0"
}

View file

@ -36,7 +36,7 @@
"mediawiki/class-doc": "off",
"no-underscore-dangle": "off",
"jsdoc/no-undefined-types": "off",
"no-var": "warn"
"no-var": "off"
},
"overrides": [
{

View file

@ -176,7 +176,7 @@ main {
.cdx-mixin-button-layout-flush( 'end', true, 'large' );
.cdx-button {
font-size: 1rem; // stylelint-disable-line unit-disallowed-list
font-size: 1rem;
}
}
}

View file

@ -55,10 +55,10 @@ function insertIcon( $link, id ) {
var icon = document.createElement( 'span' ),
classes = 'minerva-icon';
if ( id ) {
classes += ` minerva-icon-portletlink-${id}`;
classes += ` minerva-icon-portletlink-${ id }`;
// FIXME: Please remove when following URL returns zero results:
// https://global-search.toolforge.org/?q=mw-ui-icon-portletlink&regex=1&namespaces=&title=
classes += ` mw-ui-icon-portletlink-${id}`;
classes += ` mw-ui-icon-portletlink-${ id }`;
}
icon.setAttribute( 'class', classes );
$link.prepend( icon );

View file

@ -1,4 +1,3 @@
// eslint-disable-next-line no-restricted-properties
var mobile = require( 'mobile.startup' ),
drawers = require( './drawers.js' ),
CtaDrawer = mobile.CtaDrawer;

View file

@ -83,6 +83,7 @@
*
* @param {HTMLElement} portletItem
* @param {Icon} spinner
* @param {Function} [loadAllImagesInPage]
*/
function onClick( portletItem, spinner, loadAllImagesInPage ) {
var icon = portletItem.querySelector( '.minerva-icon--download' );
@ -182,5 +183,4 @@
}
};
// eslint-disable-next-line no-restricted-properties
}( mw.track ) );

View file

@ -253,7 +253,7 @@ module.exports = function () {
// * skin-minerva-time-ago-days
// * skin-minerva-time-ago-months
// * skin-minerva-time-ago-years
tsNode.textContent = mw.msg( `skin-minerva-time-ago-${ago.unit}`, ago.value );
tsNode.textContent = mw.msg( `skin-minerva-time-ago-${ ago.unit }`, ago.value );
}
} );
}

View file

@ -200,5 +200,3 @@ module.exports = {
insertBannersOrNotice: insertBannersOrNotice
}
};
// eslint-disable-next-line no-restricted-properties

View file

@ -171,7 +171,7 @@
function parse( box ) {
const severity = parseSeverity( box );
const iconElement = document.createElement( 'div' );
iconElement.classList.add( `minerva-icon--${iconName( box, severity )}`, 'minerva-ambox-icon' );
iconElement.classList.add( `minerva-icon--${ iconName( box, severity ) }`, 'minerva-ambox-icon' );
return {
severity,
grouped: parseGroup( box ),
@ -224,5 +224,4 @@
}
};
// eslint-disable-next-line no-restricted-properties
}() );

View file

@ -26,5 +26,5 @@ module.exports = function () {
mw.notify( $msg );
}
}( mw.config.get( 'wgRedirectedFrom' ) ) );
/* eslint-enable no-console */
};

View file

@ -1,7 +1,7 @@
var drawers = require( './drawers.js' );
module.exports = function () {
// eslint-disable-next-line no-restricted-properties
var mobile = require( 'mobile.startup' ),
references = mobile.references,
currentPage = mobile.currentPage(),

View file

@ -18,7 +18,6 @@ var watchstar = require( 'mediawiki.page.watch.ajax' ).watchstar;
}
/**
*
* @param {jQuery} $link
* @param {boolean} isWatched
* @param {string} expiry

View file

@ -1,4 +1,4 @@
/* stylelint-disable unit-disallowed-list, selector-max-id */
/* stylelint-disable selector-max-id */
@import 'mediawiki.skin.variables.less';
/**

View file

@ -1,4 +1,4 @@
/* stylelint-disable selector-max-id, no-descending-specificity, unit-disallowed-list */
/* stylelint-disable selector-max-id, no-descending-specificity */
@import 'mediawiki.skin.variables';
@import 'mediawiki.mixins.less';

View file

@ -7,6 +7,6 @@
"rules": {
"no-restricted-properties": "off",
"no-jquery/no-parse-html-literal": "off",
"no-var": "warn"
"no-var": "off"
}
}

View file

@ -16,9 +16,11 @@
this.isMissing = options.isMissing;
this._isMainPage = !!options.isMainPage;
}
isMainPage() {
return this._isMainPage;
}
getNamespaceId() {
return 0;
}

View file

@ -9,7 +9,7 @@
QUnit.module( 'Minerva Watchstar' );
function createElemWithClass( cssClass, iconClass ) {
const $icon = $( '<span>' ).addClass( `minerva-icon ${iconClass}` );
const $icon = $( '<span>' ).addClass( `minerva-icon ${ iconClass }` );
return $( '<div/>' ).addClass( cssClass ).append( $icon );
}

View file

@ -20,7 +20,7 @@ const createPages = ( pages ) => {
return bot.loginGetEditToken( {
username: browser.options.username,
password: browser.options.password,
apiUrl: `${browser.options.baseUrl}/api.php`
apiUrl: `${ browser.options.baseUrl }/api.php`
} )
.then( () => {
return bot.batch(
@ -32,7 +32,9 @@ const createPages = ( pages ) => {
throw err;
} );
} )
.catch( ( err ) => { throw err; } );
.catch( ( err ) => {
throw err;
} );
} );
};
@ -85,7 +87,7 @@ const pageExistsWithText = ( title, text ) => {
};
const iAmOnAPageThatDoesNotExist = () => {
return iAmOnPage( `NewPage ${new Date()}` );
return iAmOnPage( `NewPage ${ new Date() }` );
};
const iShouldSeeAToastNotification = async () => {

View file

@ -15,7 +15,7 @@ const { ArticlePage } = require( '../support/world' ),
const iAmInAWikiThatHasCategories = ( title ) => {
const msg = 'This page is used by Selenium to test category related features.',
wikitext = `
${msg}
${ msg }
[[Category:Test category]]
[[Category:Selenium artifacts]]
@ -46,7 +46,7 @@ const iAmInAWikiThatHasCategories = ( title ) => {
const iAmOnAPageThatHasTheFollowingEdits = function ( table ) {
const randomString = Math.random().toString( 36 ).slice( 7 ),
pageTitle = `Selenium_diff_test_${randomString}`,
pageTitle = `Selenium_diff_test_${ randomString }`,
edits = table.rawTable.map( ( row, i ) =>
[ i === 0 ? 'create' : 'edit', pageTitle, row[ 0 ] ] );
@ -55,10 +55,12 @@ const iAmOnAPageThatHasTheFollowingEdits = function ( table ) {
return bot.loginGetEditToken( {
username: browser.options.username,
password: browser.options.password,
apiUrl: `${browser.options.baseUrl}/api.php`
apiUrl: `${ browser.options.baseUrl }/api.php`
} )
.then( () => bot.batch( edits ) )
.catch( ( err ) => { throw err; } );
.catch( ( err ) => {
throw err;
} );
} );
browser.call( () => RunJobs.run() );
@ -91,7 +93,7 @@ const watch = ( title ) => {
};
const iAmViewingAWatchedPage = () => {
const title = `I am on the "Selenium mobile watched page test ${Date.now()}`;
const title = `I am on the "Selenium mobile watched page test ${ Date.now() }`;
browser.call( () => {
return createPage( title, 'watch test' );
} );
@ -111,10 +113,10 @@ const iAmViewingAnUnwatchedPage = async () => {
};
const iAmOnATalkPageWithNoTalkTopics = () => {
const title = `Selenium talk test ${new Date()}`;
const title = `Selenium talk test ${ new Date() }`;
createPage( title, 'Selenium' );
iAmOnPage( `Talk:${title}` );
iAmOnPage( `Talk:${ title }` );
};
module.exports = {

View file

@ -56,7 +56,7 @@ const theTextOfTheFirstHeadingShouldBe = async ( title ) => {
await ArticlePage.first_heading_element.waitForDisplayed();
assert.match(
await ArticlePage.first_heading_element.getText(),
new RegExp( `.*${title}$` )
new RegExp( `.*${ title }$` )
);
};
const thereShouldBeARedLinkWithText = ( text ) => {

View file

@ -21,8 +21,8 @@ const iShouldSeeLogoutLinkInMenu = async () => {
};
const iShouldSeeALinkInMenu = async ( text ) => {
assert.strictEqual( await ArticlePage.menu_element.$( `span=${text}` ).isDisplayed(),
true, `Link to ${text} is visible.` );
assert.strictEqual( await ArticlePage.menu_element.$( `span=${ text }` ).isDisplayed(),
true, `Link to ${ text } is visible.` );
};
const iShouldSeeALinkToDisclaimer = async () => {

View file

@ -8,7 +8,7 @@ const { theTextOfTheFirstHeadingShouldBe } = require( './editor_steps' );
const username = browser.config.mwUser.replace( /_/g, ' ' );
const iVisitMyUserPage = async () => {
await iAmOnPage( `User:${username}` );
await iAmOnPage( `User:${ username }` );
};
const iShouldBeOnMyUserPage = async () => {

View file

@ -14,27 +14,90 @@ class ArticlePage extends MinervaPage {
get contributions_link_element() {
return $( '.page-actions-menu .menu__item--page-actions-contributions' );
}
get watch_element() { return $( '#ca-watch' ); }
get reference_element() { return $( 'sup a' ); }
get drawer_reference_element() { return $( '.drawer sup a' ); }
get talk_tab_element() { return $( '.minerva__tab-container a[rel="discussion"]' ); }
get mask_element() { return $( '.mw-mf-page-center__mask' ); }
get drawer_mask_element() { return $( '.drawer-container__mask--visible' ); }
get watched_element() { return $( '.minerva-icon--unStar-progressive' ); }
get menu_button_element() { return $( '#mw-mf-main-menu-button' ); }
get search_icon_element() { return $( '#searchIcon' ); }
get menu_element() { return $( 'nav' ); }
get user_links_element() { return $( '.user-links' ); }
get notifications_button_element() { return $( '#pt-notifications-alert' ); }
get drawer_element() { return $( '.drawer' ); }
get edit_link_element() { return $( '#ca-editsource, #ca-createsource, #ca-edit, #ca-create' ); }
get first_heading_element() { return $( 'h1.mw-first-heading' ); }
get notification_element() { return $( '.mw-notification-area .mw-notification' ); }
get overlay_heading_element() { return $( '.overlay-title h2' ); }
get overlay_category_topic_item_element() { return $( '.topic-title-list li' ); }
get red_link_element() { return $( '#mw-content-text a.new' ); }
get is_authenticated_element() { return $( 'body.is-authenticated' ); }
get last_modified_bar_history_link_element() { return $( 'a.last-modified-bar__text[href*=\'Special:History\']' ); }
get watch_element() {
return $( '#ca-watch' );
}
get reference_element() {
return $( 'sup a' );
}
get drawer_reference_element() {
return $( '.drawer sup a' );
}
get talk_tab_element() {
return $( '.minerva__tab-container a[rel="discussion"]' );
}
get mask_element() {
return $( '.mw-mf-page-center__mask' );
}
get drawer_mask_element() {
return $( '.drawer-container__mask--visible' );
}
get watched_element() {
return $( '.minerva-icon--unStar-progressive' );
}
get menu_button_element() {
return $( '#mw-mf-main-menu-button' );
}
get search_icon_element() {
return $( '#searchIcon' );
}
get menu_element() {
return $( 'nav' );
}
get user_links_element() {
return $( '.user-links' );
}
get notifications_button_element() {
return $( '#pt-notifications-alert' );
}
get drawer_element() {
return $( '.drawer' );
}
get edit_link_element() {
return $( '#ca-editsource, #ca-createsource, #ca-edit, #ca-create' );
}
get first_heading_element() {
return $( 'h1.mw-first-heading' );
}
get notification_element() {
return $( '.mw-notification-area .mw-notification' );
}
get overlay_heading_element() {
return $( '.overlay-title h2' );
}
get overlay_category_topic_item_element() {
return $( '.topic-title-list li' );
}
get red_link_element() {
return $( '#mw-content-text a.new' );
}
get is_authenticated_element() {
return $( 'body.is-authenticated' );
}
get last_modified_bar_history_link_element() {
return $( 'a.last-modified-bar__text[href*=\'Special:History\']' );
}
}
module.exports = new ArticlePage();

View file

@ -12,13 +12,26 @@
const MinervaPage = require( './minerva_page' );
class ArticlePageWithEditorOverlay extends MinervaPage {
get editor_overlay_element() { return $( '.overlay' ); }
get editor_overlay_element() {
return $( '.overlay' );
}
// overlay components
get editor_load_basic_element() { return $( '.ve-loadbasiceditor' ); }
get editor_textarea_element() { return $( '.overlay .wikitext-editor, .overlay .surface' ); }
get continue_element() { return $( '.overlay .continue' ); }
get submit_element() { return $( '.overlay .submit' ); }
get editor_load_basic_element() {
return $( '.ve-loadbasiceditor' );
}
get editor_textarea_element() {
return $( '.overlay .wikitext-editor, .overlay .surface' );
}
get continue_element() {
return $( '.overlay .continue' );
}
get submit_element() {
return $( '.overlay .submit' );
}
}
module.exports = new ArticlePageWithEditorOverlay();

View file

@ -12,11 +12,18 @@
const MinervaPage = require( './minerva_page' );
class ArticlePageWithOverlay extends MinervaPage {
get overlay_element() { return $( '.overlay' ); }
get overlay_element() {
return $( '.overlay' );
}
// overlay components
get overlay_content_element() { return $( '.overlay-content' ); }
get overlay_close_element() { return $( '.overlay .cancel' ); }
get overlay_content_element() {
return $( '.overlay-content' );
}
get overlay_close_element() {
return $( '.overlay .cancel' );
}
}
module.exports = new ArticlePageWithOverlay();

View file

@ -14,7 +14,9 @@ const { Page } = require( './mw_core_pages' );
class MinervaPage extends Page {
get title() { return browser.getTitle(); }
get title() {
return browser.getTitle();
}
/**
* Opens a page if it isn't already open.

View file

@ -10,16 +10,45 @@ const { Page } = require( './mw_core_pages' );
*/
class SpecialHistoryPage extends Page {
get content_header_bar_element() { return $( '.content-header' ); }
get content_header_bar_link_element() { return $( '.content-header a' ); }
get side_list_element() { return $( '.side-list' ); }
get last_contribution_element() { return $( '.side-list li' ); }
get last_contribution_link_element() { return $( '.side-list li a' ); }
get last_contribution_title_element() { return $( '.side-list li h3' ); }
get last_contribution_timestamp_element() { return $( '.side-list li p.timestamp' ); }
get last_contribution_edit_summary_element() { return $( '.side-list li p.edit-summary' ); }
get last_contribution_username_element() { return $( '.side-list li p.mw-mf-user' ); }
get more_link_element() { return $( '.more' ); }
get content_header_bar_element() {
return $( '.content-header' );
}
get content_header_bar_link_element() {
return $( '.content-header a' );
}
get side_list_element() {
return $( '.side-list' );
}
get last_contribution_element() {
return $( '.side-list li' );
}
get last_contribution_link_element() {
return $( '.side-list li a' );
}
get last_contribution_title_element() {
return $( '.side-list li h3' );
}
get last_contribution_timestamp_element() {
return $( '.side-list li p.timestamp' );
}
get last_contribution_edit_summary_element() {
return $( '.side-list li p.edit-summary' );
}
get last_contribution_username_element() {
return $( '.side-list li p.mw-mf-user' );
}
get more_link_element() {
return $( '.more' );
}
open() {
super.open( 'Special:History' );

View file

@ -12,9 +12,17 @@ const { Page } = require( './mw_core_pages' );
class SpecialMobileDiffPage extends Page {
get inserted_content_element() { return $( 'ins' ); }
get deleted_content_element() { return $( 'del' ); }
get user_info_element() { return $( '#mw-mf-userinfo' ); }
get inserted_content_element() {
return $( 'ins' );
}
get deleted_content_element() {
return $( 'del' );
}
get user_info_element() {
return $( '#mw-mf-userinfo' );
}
}
module.exports = new SpecialMobileDiffPage();

View file

@ -3,12 +3,26 @@
const Page = require( 'wdio-mediawiki/Page' );
class EditPage extends Page {
get content() { return $( '#wikitext-editor' ); }
get displayedContent() { return $( '#mw-content-text .mw-parser-output' ); }
get heading() { return $( 'h1.mw-first-heading' ); }
get content() {
return $( '#wikitext-editor' );
}
get displayedContent() {
return $( '#mw-content-text .mw-parser-output' );
}
get heading() {
return $( 'h1.mw-first-heading' );
}
// Sync with src/mobile.editor.overlay/EditorOverlayBase.js in MobileFrontend
get next() { return $( '.mf-icon-next-invert' ); }
get save() { return $( 'button.cdx-button' ); }
get next() {
return $( '.mf-icon-next-invert' );
}
get save() {
return $( 'button.cdx-button' );
}
openForEditing( title ) {
super.openTitle( title, { action: 'edit', mobileaction: 'toggle_view_mobile' } );