Merge "RCFilters: Align TagItemWidget highlight in Safari"
[lhc/web/wiklou.git] / tests / selenium / pageobjects / createaccount.page.js
1 'use strict';
2 const Page = require( './page' );
3
4 class CreateAccountPage extends Page {
5
6 get username() { return browser.element( '#wpName2' ); }
7 get password() { return browser.element( '#wpPassword2' ); }
8 get confirmPassword() { return browser.element( '#wpRetype' ); }
9 get create() { return browser.element( '#wpCreateaccount' ); }
10 get heading() { return browser.element( '#firstHeading' ); }
11
12 open() {
13 super.open( 'Special:CreateAccount' );
14 }
15
16 createAccount( username, password ) {
17 this.open();
18 this.username.setValue( username );
19 this.password.setValue( password );
20 this.confirmPassword.setValue( password );
21 this.create.click();
22 }
23
24 apiCreateAccount( username, password ) {
25 const url = require( 'url' ), // https://nodejs.org/docs/latest/api/url.html
26 baseUrl = url.parse( browser.options.baseUrl ), // http://webdriver.io/guide/testrunner/browserobject.html
27 Bot = require( 'nodemw' ), // https://github.com/macbre/nodemw
28 client = new Bot( {
29 protocol: baseUrl.protocol,
30 server: baseUrl.hostname,
31 port: baseUrl.port,
32 path: baseUrl.path,
33 debug: false
34 } );
35
36 return new Promise( ( resolve, reject ) => {
37 client.api.call(
38 {
39 action: 'query',
40 meta: 'tokens',
41 type: 'createaccount'
42 },
43 /**
44 * @param {Error|null} err
45 * @param {Object} info Processed query result
46 * @param {Object} next More results?
47 * @param {Object} data Raw data
48 */
49 function ( err, info, next, data ) {
50 if ( err ) {
51 reject( err );
52 return;
53 }
54 client.api.call( {
55 action: 'createaccount',
56 createreturnurl: browser.options.baseUrl,
57 createtoken: data.query.tokens.createaccounttoken,
58 username: username,
59 password: password,
60 retype: password
61 }, function ( err ) {
62 if ( err ) {
63 reject( err );
64 return;
65 }
66 resolve();
67 }, 'POST' );
68 },
69 'POST'
70 );
71
72 } );
73
74 }
75
76 }
77 module.exports = new CreateAccountPage();