Selenium: Replace nodemw with mwbot
authorŽeljko Filipin <zeljko.filipin@gmail.com>
Fri, 9 Mar 2018 12:34:28 +0000 (13:34 +0100)
committerŽeljko Filipin <zeljko.filipin@gmail.com>
Wed, 21 Mar 2018 12:34:37 +0000 (13:34 +0100)
Bug: T181284
Change-Id: I012a5cc6a7f30a8652cbad87293eb119fa2e405f
Depends-On: Ic69be92c2b0b7a08a9b8cc417a40ebb38f249ea3

package.json
tests/selenium/pageobjects/createaccount.page.js
tests/selenium/pageobjects/delete.page.js
tests/selenium/pageobjects/edit.page.js

index 5463fba..1ea9a1f 100644 (file)
@@ -25,7 +25,7 @@
     "karma-firefox-launcher": "1.0.1",
     "karma-mocha-reporter": "2.2.5",
     "karma-qunit": "1.2.1",
-    "nodemw": "0.11.0",
+    "mwbot": "1.0.10",
     "postcss-less": "1.1.3",
     "qunitjs": "2.4.1",
     "stylelint": "8.2.0",
index f54e31c..105f409 100644 (file)
@@ -22,54 +22,26 @@ class CreateAccountPage extends Page {
        }
 
        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'
-                       );
+               const MWBot = require( 'mwbot' ), // https://github.com/Fannon/mwbot
+                       Promise = require( 'bluebird' );
+               let bot = new MWBot();
 
-               } );
+               return Promise.coroutine( function* () {
+                       yield bot.loginGetCreateaccountToken( {
+                               apiUrl: `${browser.options.baseUrl}/api.php`,
+                               username: browser.options.username,
+                               password: browser.options.password
+                       } );
+                       yield bot.request( {
+                               action: 'createaccount',
+                               createreturnurl: browser.options.baseUrl,
+                               createtoken: bot.createaccountToken,
+                               username: username,
+                               password: password,
+                               retype: password
+                       } );
+               } ).call( this );
 
        }
 
index bd28ca8..d43cb9f 100644 (file)
@@ -19,33 +19,20 @@ class DeletePage extends Page {
        }
 
        apiDelete( name, reason ) {
-               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,
+
+               const MWBot = require( 'mwbot' ), // https://github.com/Fannon/mwbot
+                       Promise = require( 'bluebird' );
+               let bot = new MWBot();
+
+               return Promise.coroutine( function* () {
+                       yield bot.loginGetEditToken( {
+                               apiUrl: `${browser.options.baseUrl}/api.php`,
                                username: browser.options.username,
-                               password: browser.options.password,
-                               debug: false
+                               password: browser.options.password
                        } );
+                       yield bot.delete( name, reason );
+               } ).call( this );
 
-               return new Promise( ( resolve, reject ) => {
-                       client.logIn( function ( err ) {
-                               if ( err ) {
-                                       console.log( err );
-                                       return reject( err );
-                               }
-                               client.delete( name, reason, function ( err ) {
-                                       if ( err ) {
-                                               return reject( err );
-                                       }
-                                       resolve();
-                               } );
-                       } );
-               } );
        }
 
 }
index 34f4263..33a27f0 100644 (file)
@@ -19,33 +19,20 @@ class EditPage extends Page {
        }
 
        apiEdit( name, content ) {
-               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,
+
+               const MWBot = require( 'mwbot' ), // https://github.com/Fannon/mwbot
+                       Promise = require( 'bluebird' );
+               let bot = new MWBot();
+
+               return Promise.coroutine( function* () {
+                       yield bot.loginGetEditToken( {
+                               apiUrl: `${browser.options.baseUrl}/api.php`,
                                username: browser.options.username,
-                               password: browser.options.password,
-                               debug: false
+                               password: browser.options.password
                        } );
+                       yield bot.edit( name, content, `Created page with "${content}"` );
+               } ).call( this );
 
-               return new Promise( ( resolve, reject ) => {
-                       client.logIn( function ( err ) {
-                               if ( err ) {
-                                       console.log( err );
-                                       return reject( err );
-                               }
-                               client.edit( name, content, `Created page with "${content}"`, function ( err ) {
-                                       if ( err ) {
-                                               return reject( err );
-                                       }
-                                       resolve();
-                               } );
-                       } );
-               } );
        }
 
 }