blob: e62cbbf86b00d93aaf061554788ac570782f6b59 [file] [log] [blame]
'use strict';
const { config } = require( 'wdio-mediawiki/wdio-defaults.conf.js' ),
LoginPage = require( 'wdio-mediawiki/LoginPage' ),
LexemeApi = require( './lexeme.api' ),
Replication = require( './replication' ),
WikibaseApi = require( 'wdio-wikibase/wikibase.api' );
exports.config = { ...config,
// Override, or add to, the setting from wdio-mediawiki.
// Learn more at https://webdriver.io/docs/configurationfile/
//
// Example:
// logLevel: 'info',
specs: [
__dirname + '/specs/*.js',
__dirname + '/specs/special/*.js'
],
// Default timeout for all waitFor* commands.
waitforTimeout: 20000,
// custom config to be used for waitFor* timeouts where we're not waiting for an API call or such
nonApiTimeout: 10000,
startOfTestTime: null,
before: function ( capabilities, specs, browser ) {
browser.log = function ( message ) {
console.log( `${Date.now() - browser.config.startOfTestTime}: ${message}` );
};
browser.clickTillItExists = function ( clickTarget, targetToExist, timeoutMsg ) {
browser.waitUntil(
() => {
clickTarget.click();
return targetToExist.isExisting();
},
{
timeout: 5000,
interval: 500,
timeoutMsg
}
);
};
},
beforeTest: function ( test, context ) {
config.beforeTest( test, context );
browser.config.startOfTestTime = Date.now();
},
beforeSuite: function () {
LoginPage.loginAdmin();
browser.executeAsync( function ( done ) {
/* global mw */
// save any option (setting it to its previous value),
// to make a database write and get a chronology protector cookie
mw.loader.using( 'mediawiki.user' ).then( function () {
new mw.Api().saveOption(
'gender',
mw.user.options.get( 'gender', 'unknown' )
).then( done );
} );
} );
// pass the chronology protector cookie into LexemeApi and WikibaseApi,
// where it’s used for all mwbot requests as well
const cookie = browser.getCookies( [ 'cpPosIndex' ] )[ 0 ];
browser.call( () => LexemeApi.initialize( cookie && cookie.value ) );
browser.call( () => WikibaseApi.initialize( cookie && cookie.value ) );
browser.config.defaultLexicalCategory = WikibaseApi.createItem();
browser.config.defaultLanguage = WikibaseApi.createItem();
Replication.waitForReplicationLag( LexemeApi.getBot() );
}
};