mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
synced 2024-11-18 11:35:54 +00:00
018d436bfe
As a hold-over from a previous porting attempt, thw World.js file (a cucumber.js convention) exported an instance of MWBot. This instance was used in several tests, however, since MWBot had been instantiated multiple times since then, the original edit token was invalid, causing several tests to fail. Bug: T224947 Change-Id: I56c06600c43d53bbc4e103d446a1de7a52c2cfad
126 lines
3.4 KiB
JavaScript
126 lines
3.4 KiB
JavaScript
const { ArticlePage } = require( '../support/world' ),
|
|
RunJobs = require( 'wdio-mediawiki/RunJobs' ),
|
|
Api = require( 'wdio-mediawiki/Api' ),
|
|
Page = require( 'wdio-mediawiki/Page' ),
|
|
MWBot = require( 'mwbot' ),
|
|
{
|
|
iAmOnPage,
|
|
waitForPropagation,
|
|
createPages,
|
|
createPage
|
|
} = require( './common_steps' );
|
|
|
|
const iAmInAWikiThatHasCategories = ( title ) => {
|
|
const msg = 'This page is used by Selenium to test category related features.',
|
|
wikitext = `
|
|
${msg}
|
|
|
|
[[Category:Test category]]
|
|
[[Category:Selenium artifacts]]
|
|
[[Category:Selenium hidden category]]
|
|
`;
|
|
|
|
createPages( [
|
|
[ 'create', 'Category:Selenium artifacts', msg ],
|
|
[ 'create', 'Category:Test category', msg ],
|
|
[ 'create', 'Category:Selenium hidden category', '__HIDDENCAT__' ]
|
|
] );
|
|
|
|
// A pause is necessary to let the categories register with database before trying to use
|
|
// them in an article
|
|
waitForPropagation( 5000 );
|
|
browser.call( () => {
|
|
return Api.edit( title, wikitext );
|
|
} );
|
|
browser.call( () => {
|
|
// The category overlay uses the category API
|
|
// which will only return results if the job queue has completed.
|
|
// Run before continuing!
|
|
return RunJobs.run();
|
|
} );
|
|
};
|
|
|
|
const iAmOnAPageThatHasTheFollowingEdits = function ( table ) {
|
|
const randomString = Math.random().toString( 36 ).substring( 7 ),
|
|
pageTitle = `Selenium_diff_test_${randomString}`,
|
|
edits = table.rawTable.map( ( row, i ) =>
|
|
[ i === 0 ? 'create' : 'edit', pageTitle, row[ 0 ] ] );
|
|
|
|
browser.call( () => {
|
|
const bot = new MWBot();
|
|
return bot.loginGetEditToken( {
|
|
username: browser.options.username,
|
|
password: browser.options.password,
|
|
apiUrl: `${browser.options.baseUrl}/api.php`
|
|
} )
|
|
.then( () => bot.batch( edits ) )
|
|
.catch( ( err ) => { throw err; } );
|
|
} );
|
|
|
|
browser.call( () => RunJobs.run() );
|
|
ArticlePage.open( pageTitle );
|
|
};
|
|
|
|
const iGoToAPageThatHasLanguages = () => {
|
|
const wikitext = `This page is used by Selenium to test language related features.
|
|
|
|
[[es:Selenium language test page]]
|
|
`;
|
|
|
|
browser.call( () => {
|
|
createPage( 'Selenium language test page', wikitext );
|
|
} );
|
|
browser.call( () => {
|
|
iAmOnPage( 'Selenium language test page' );
|
|
} );
|
|
};
|
|
|
|
const watch = ( title ) => {
|
|
// Ideally this would use the API but mwbot / Selenium's API can't do this right now
|
|
// So we run the non-js workflow.
|
|
const page = new Page();
|
|
page.openTitle( title, { action: 'watch' } );
|
|
browser.element( '#mw-content-text button[type="submit"]' ).click();
|
|
waitForPropagation( 10000 );
|
|
};
|
|
|
|
const iAmViewingAWatchedPage = () => {
|
|
const title = `I am on the "Selenium mobile watched page test ${new Date().getTime()}`;
|
|
|
|
browser.call( () => {
|
|
createPage( title, 'watch test' );
|
|
} );
|
|
browser.call( () => {
|
|
watch( title );
|
|
// navigate away from page
|
|
iAmOnPage( 'Main Page' );
|
|
waitForPropagation( 5000 );
|
|
// and back to page
|
|
iAmOnPage( title );
|
|
waitForPropagation( 5000 );
|
|
} );
|
|
};
|
|
|
|
const iAmViewingAnUnwatchedPage = () => {
|
|
// new pages are watchable but unwatched by default
|
|
const title = 'I am on the "Selenium mobile unwatched test ' + new Date();
|
|
iAmOnPage( title );
|
|
};
|
|
|
|
const iAmOnAPageWithNoTalkTopics = () => {
|
|
const title = `Selenium talk test ${new Date()}`;
|
|
|
|
createPage( title, 'Selenium' );
|
|
iAmOnPage( title );
|
|
};
|
|
|
|
module.exports = {
|
|
waitForPropagation,
|
|
iAmOnAPageThatHasTheFollowingEdits,
|
|
iAmOnAPageWithNoTalkTopics,
|
|
iAmViewingAWatchedPage,
|
|
iAmViewingAnUnwatchedPage,
|
|
iAmInAWikiThatHasCategories,
|
|
iGoToAPageThatHasLanguages
|
|
};
|