mediawiki-extensions-Cite/tests/selenium/pageobjects/cite.page.js
WMDE-Fisch 7e8cf11648 Increase stability of backlink browser tests
Adding a step to wait for loaded modules. This was manily taken from
the Popups-extension browser test, but with a fixed chain for the
results.

Let's hope we do not need to pause with this.

See as well I274bdee0b3c39c418a2b61881d56f89889c53485

Bug: T220318
Change-Id: I5bdc1951a23a51e9a4deea69af2bfc96843f5a1d
2019-04-08 17:42:48 +00:00

36 lines
1.6 KiB
JavaScript

const Page = require( 'wdio-mediawiki/Page' );
class CitePage extends Page {
getReference( num ) { return browser.elements( '#mw-content-text .reference' ).value[ num - 1 ]; }
getCiteMultiBacklink( num ) { return browser.element( '.references li:nth-of-type(' + num + ') .mw-cite-up-arrow-backlink' ); }
getCiteSingleBacklink( num ) { return browser.element( '.references li:nth-of-type(' + num + ') .mw-cite-backlink a' ); }
getCiteSubBacklink( num ) { return browser.element( '.mw-cite-backlink sup:nth-of-type(' + num + ') a' ); }
resourceLoaderModuleStatus( moduleName, moduleStatus, errMsg ) {
// Word of caution: browser.waitUntil returns a Timer class NOT a Promise.
// Webdriver IO will run waitUntil synchronously so not returning it will
// block JavaScript execution while returning it will not.
// http://webdriver.io/api/utility/waitUntil.html
// https://github.com/webdriverio/webdriverio/blob/master/lib/utils/Timer.js
browser.waitUntil( () => {
const result = browser.execute( ( module ) => {
return typeof mw !== 'undefined' &&
mw.loader.getState( module.name ) === module.status;
}, { status: moduleStatus, name: moduleName } );
return result.value;
}, 10000, errMsg );
}
scriptsReady() {
this.resourceLoaderModuleStatus( 'ext.cite.ux-enhancements', 'ready', 'Cite scripts did not load' );
}
getFragmentFromLink( linkElement ) {
// the href includes the full url so slice the fragment from it
let href = linkElement.getAttribute( 'href' );
return href.slice( href.indexOf( '#' ) + 1 );
}
}
module.exports = new CitePage();