This will make tests slightly more robust. Bug: T164721 Bug: T167502 Change-Id: I9b2fea77b28af4f7f521490a0105e7d04730bc87
77 lines
1.9 KiB
JavaScript
77 lines
1.9 KiB
JavaScript
'use strict';
|
|
const Page = require( './page' );
|
|
|
|
class CreateAccountPage extends Page {
|
|
|
|
get username() { return browser.element( '#wpName2' ); }
|
|
get password() { return browser.element( '#wpPassword2' ); }
|
|
get confirmPassword() { return browser.element( '#wpRetype' ); }
|
|
get create() { return browser.element( '#wpCreateaccount' ); }
|
|
get heading() { return browser.element( '#firstHeading' ); }
|
|
|
|
open() {
|
|
super.open( 'Special:CreateAccount' );
|
|
}
|
|
|
|
createAccount( username, password ) {
|
|
this.open();
|
|
this.username.setValue( username );
|
|
this.password.setValue( password );
|
|
this.confirmPassword.setValue( password );
|
|
this.create.click();
|
|
}
|
|
|
|
apiCreateAccount( username, password ) {
|
|
const url = require( 'url' ), // https://nodejs.org/docs/latest/api/url.html
|
|
baseUrl = url.parse( browser.options.baseUrl ), // http://webdriver.io/guide/testrunner/browserobject.html
|
|
Bot = require( 'nodemw' ), // https://github.com/macbre/nodemw
|
|
client = new Bot( {
|
|
protocol: baseUrl.protocol,
|
|
server: baseUrl.hostname,
|
|
port: baseUrl.port,
|
|
path: baseUrl.path,
|
|
debug: false
|
|
} );
|
|
|
|
return new Promise( ( resolve, reject ) => {
|
|
client.api.call(
|
|
{
|
|
action: 'query',
|
|
meta: 'tokens',
|
|
type: 'createaccount'
|
|
},
|
|
/**
|
|
* @param {Error|null} err
|
|
* @param {Object} info Processed query result
|
|
* @param {Object} next More results?
|
|
* @param {Object} data Raw data
|
|
*/
|
|
function ( err, info, next, data ) {
|
|
if ( err ) {
|
|
reject( err );
|
|
return;
|
|
}
|
|
client.api.call( {
|
|
action: 'createaccount',
|
|
createreturnurl: browser.options.baseUrl,
|
|
createtoken: data.query.tokens.createaccounttoken,
|
|
username: username,
|
|
password: password,
|
|
retype: password
|
|
}, function ( err ) {
|
|
if ( err ) {
|
|
reject( err );
|
|
return;
|
|
}
|
|
resolve();
|
|
}, 'POST' );
|
|
},
|
|
'POST'
|
|
);
|
|
|
|
} );
|
|
|
|
}
|
|
|
|
}
|
|
module.exports = new CreateAccountPage();
|