Merge "Ensure each api call creates a new instance of MWBot"

This commit is contained in:
jenkins-bot 2019-06-06 19:55:53 +00:00 committed by Gerrit Code Review
commit 129de0821d
3 changed files with 44 additions and 43 deletions

View File

@ -1,7 +1,8 @@
const assert = require( 'assert' ), const assert = require( 'assert' ),
MWBot = require( 'mwbot' ),
Api = require( 'wdio-mediawiki/Api' ), Api = require( 'wdio-mediawiki/Api' ),
ArticlePageWithOverlay = require( '../support/pages/article_page_with_overlay' ), ArticlePageWithOverlay = require( '../support/pages/article_page_with_overlay' ),
{ ArticlePage, UserLoginPage, api } = require( '../support/world.js' ); { ArticlePage, UserLoginPage } = require( '../support/world.js' );
const waitForPropagation = ( timeMs ) => { const waitForPropagation = ( timeMs ) => {
// wait 2 seconds so the change can propogate. // wait 2 seconds so the change can propogate.
@ -9,19 +10,17 @@ const waitForPropagation = ( timeMs ) => {
browser.waitUntil( () => new Date() - d > timeMs ); browser.waitUntil( () => new Date() - d > timeMs );
}; };
const login = () => { const createPages = ( pages ) => {
return api.loginGetEditToken( { const summary = 'edit by selenium test';
browser.call( () => {
const bot = new MWBot();
return bot.loginGetEditToken( {
username: browser.options.username, username: browser.options.username,
password: browser.options.password, password: browser.options.password,
apiUrl: `${browser.options.baseUrl}/api.php` apiUrl: `${browser.options.baseUrl}/api.php`
} ); } )
}; .then( () => {
return bot.batch(
const createPages = ( pages ) => {
const summary = 'edit by selenium test';
browser.call( () => login() );
browser.call( () => {
return api.batch(
pages.map( ( page ) => [ 'create' ].concat( page ).concat( [ summary ] ) ) pages.map( ( page ) => [ 'create' ].concat( page ).concat( [ summary ] ) )
).catch( ( err ) => { ).catch( ( err ) => {
if ( err.code === 'articleexists' ) { if ( err.code === 'articleexists' ) {
@ -29,12 +28,12 @@ const createPages = ( pages ) => {
} }
throw err; throw err;
} ); } );
} )
.catch( ( err ) => { throw err; } );
} ); } );
}; };
const createPage = ( title, wikitext ) => { const createPage = ( title, wikitext ) => {
browser.call( () => login() );
browser.call( () => Api.edit( title, wikitext ) ); browser.call( () => Api.edit( title, wikitext ) );
}; };

View File

@ -1,13 +1,14 @@
const { api, ArticlePage } = require( '../support/world' ); const { ArticlePage } = require( '../support/world' ),
const RunJobs = require( 'wdio-mediawiki/RunJobs' ); RunJobs = require( 'wdio-mediawiki/RunJobs' ),
const Api = require( 'wdio-mediawiki/Api' ); Api = require( 'wdio-mediawiki/Api' ),
const Page = require( 'wdio-mediawiki/Page' ); Page = require( 'wdio-mediawiki/Page' ),
const { MWBot = require( 'mwbot' ),
{
iAmOnPage, iAmOnPage,
waitForPropagation, waitForPropagation,
createPages, createPages,
createPage createPage
} = require( './common_steps' ); } = require( './common_steps' );
const iAmInAWikiThatHasCategories = ( title ) => { const iAmInAWikiThatHasCategories = ( title ) => {
const msg = 'This page is used by Selenium to test category related features.', const msg = 'This page is used by Selenium to test category related features.',
@ -45,15 +46,19 @@ const iAmOnAPageThatHasTheFollowingEdits = function ( table ) {
edits = table.rawTable.map( ( row, i ) => edits = table.rawTable.map( ( row, i ) =>
[ i === 0 ? 'create' : 'edit', pageTitle, row[ 0 ] ] ); [ i === 0 ? 'create' : 'edit', pageTitle, row[ 0 ] ] );
api.loginGetEditToken( { browser.call( () => {
const bot = new MWBot();
return bot.loginGetEditToken( {
username: browser.options.username, username: browser.options.username,
password: browser.options.password, password: browser.options.password,
apiUrl: `${browser.options.baseUrl}/api.php` apiUrl: `${browser.options.baseUrl}/api.php`
} ) } )
.then( () => api.batch( edits ) ) .then( () => bot.batch( edits ) )
.then( () => ArticlePage.open( pageTitle ) )
.catch( ( err ) => { throw err; } ); .catch( ( err ) => { throw err; } );
waitForPropagation( 5000 ); } );
browser.call( () => RunJobs.run() );
ArticlePage.open( pageTitle );
}; };
const iGoToAPageThatHasLanguages = () => { const iGoToAPageThatHasLanguages = () => {

View File

@ -15,13 +15,10 @@
* allowing us to use the dependencies across scenarios. * allowing us to use the dependencies across scenarios.
*/ */
const MwBot = require( 'mwbot' ), const mwCorePages = require( '../support/pages/mw_core_pages' ),
mwCorePages = require( '../support/pages/mw_core_pages' ),
minervaPages = require( '../support/pages/minerva_pages' ); minervaPages = require( '../support/pages/minerva_pages' );
function MinervaWorld() { function MinervaWorld() {
/* dependencies */
this.api = new MwBot();
/* pageObjects */ /* pageObjects */
Object.assign( this, mwCorePages ); Object.assign( this, mwCorePages );
Object.assign( this, minervaPages ); Object.assign( this, minervaPages );