mediawiki-skins-MinervaNeue/tests/selenium/features/step_definitions/create_page_api_steps.js
Jan Drewniak 6bd240389e Adding "diff.feature" selenium test
Bug: T219920
Change-Id: I34b5301a274fe90a7a2db58a8bec2b9398d998b6
2019-04-10 23:15:37 +00:00

71 lines
2.1 KiB
JavaScript

const { api, ArticlePage } = require( '../support/world' ),
Api = require( 'wdio-mediawiki/Api' );
const login = () => {
return api.loginGetEditToken( {
username: browser.options.username,
password: browser.options.password,
apiUrl: `${browser.options.baseUrl}/api.php`
} );
};
const waitForPropagation = ( timeMs ) => {
// wait 2 seconds so the change can propogate.
const d = new Date();
browser.waitUntil( () => new Date() - d > timeMs );
};
const iAmInAWikiThatHasCategories = ( title ) => {
const msg = 'This page is used by Selenium to test category related features.',
summary = 'edit by selenium test',
wikitext = `
${msg}
[[Category:Test category]]
[[Category:Selenium artifacts]]
[[Category:Selenium hidden category]]
`;
login().then( () => api.batch( [
[ 'create', 'Category:Selenium artifacts', msg, summary ],
[ 'create', 'Category:Test category', msg, summary ],
[ 'create', 'Category:Selenium hidden category', '__HIDDENCAT__', summary ]
] ) )
.catch( ( err ) => {
if ( err.code === 'articleexists' ) {
return;
}
throw err;
} );
// A pause is necessary to let the categories register with database before trying to use
// them in an article
waitForPropagation( 5000 );
Api.edit( title, wikitext );
// categories are handled by a JobRunner so need extra time to appear via API calls!
waitForPropagation( 5000 );
};
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 ] ] );
api.loginGetEditToken( {
username: browser.options.username,
password: browser.options.password,
apiUrl: `${browser.options.baseUrl}/api.php`
} )
.then( () => api.batch( edits ) )
.then( () => ArticlePage.open( pageTitle ) )
.catch( ( err ) => { throw err; } );
waitForPropagation( 5000 );
};
module.exports = {
waitForPropagation,
iAmOnAPageThatHasTheFollowingEdits,
iAmInAWikiThatHasCategories
};