wiki.techinc.nl/tests/selenium/pageobjects/createaccount.page.js
Željko Filipin 853cba1deb Create users and pages for Selenium tests using action API
This will make tests slightly more robust.

Bug: T164721
Bug: T167502
Change-Id: I9b2fea77b28af4f7f521490a0105e7d04730bc87
2017-07-07 04:59:14 +00:00

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();