selenium: Fix inefficient use of MWBot in specs/page.js
[lhc/web/wiklou.git] / tests / selenium / specs / page.js
index ab547e8..e2ca655 100644 (file)
@@ -10,17 +10,17 @@ const assert = require( 'assert' ),
        Util = require( 'wdio-mediawiki/Util' );
 
 describe( 'Page', function () {
-       var content,
-               name;
+       var content, name, bot;
 
-       before( function () {
+       before( async function () {
                // disable VisualEditor welcome dialog
                BlankPage.open();
-               browser.localStorage( 'POST', { key: 've-beta-welcome-dialog', value: '1' } );
+               browser.setLocalStorage( 've-beta-welcome-dialog', '1' );
+               bot = await Api.bot();
        } );
 
        beforeEach( function () {
-               browser.deleteCookie();
+               browser.deleteAllCookies();
                content = Util.getTestString( 'beforeEach-content-' );
                name = Util.getTestString( 'BeforeEach-name-' );
        } );
@@ -30,13 +30,8 @@ describe( 'Page', function () {
 
                assert.strictEqual( EditPage.heading.getText(), 'Creating ' + name );
                assert.strictEqual( EditPage.displayedContent.getText(), content );
-               assert( EditPage.content.isVisible(), 'editor is still present' );
-               assert( !EditPage.conflictingContent.isVisible(), 'no edit conflict happened' );
-               // provoke and dismiss reload warning due to unsaved content
-               browser.url( 'data:text/html,Done' );
-               try {
-                       browser.alertAccept();
-               } catch ( e ) {}
+               assert( EditPage.content.isDisplayed(), 'editor is still present' );
+               assert( !EditPage.conflictingContent.isDisplayed(), 'no edit conflict happened' );
        } );
 
        it( 'should be creatable', function () {
@@ -51,17 +46,13 @@ describe( 'Page', function () {
        it( 'should be re-creatable', function () {
                const initialContent = Util.getTestString( 'initialContent-' );
 
-               // create
-               browser.call( function () {
-                       return Api.edit( name, initialContent );
-               } );
-
-               // delete
-               browser.call( function () {
-                       return Api.delete( name, 'delete prior to recreate' );
+               // create and delete
+               browser.call( async () => {
+                       await bot.edit( name, initialContent, 'create for delete' );
+                       await bot.delete( name, 'delete prior to recreate' );
                } );
 
-               // create
+               // re-create
                EditPage.edit( name, content );
 
                // check
@@ -71,8 +62,8 @@ describe( 'Page', function () {
 
        it( 'should be editable @daily', function () {
                // create
-               browser.call( function () {
-                       return Api.edit( name, content );
+               browser.call( async () => {
+                       await bot.edit( name, content, 'create for edit' );
                } );
 
                // edit
@@ -81,32 +72,31 @@ describe( 'Page', function () {
 
                // check
                assert.strictEqual( EditPage.heading.getText(), name );
-               // eslint-disable-next-line no-restricted-syntax
                assert( EditPage.displayedContent.getText().includes( editContent ) );
        } );
 
        it( 'should have history @daily', function () {
                // create
-               browser.call( function () {
-                       return Api.edit( name, content );
+               browser.call( async () => {
+                       await bot.edit( name, content, `created with "${content}"` );
                } );
 
                // check
                HistoryPage.open( name );
-               assert.strictEqual( HistoryPage.comment.getText(), `Created or updated page with "${content}"` );
+               assert.strictEqual( HistoryPage.comment.getText(), `created with "${content}"` );
        } );
 
        it( 'should be deletable', function () {
-               // login
-               UserLoginPage.loginAdmin();
-
                // create
-               browser.call( function () {
-                       return Api.edit( name, content );
+               browser.call( async () => {
+                       await bot.edit( name, content, 'create for delete' );
                } );
 
+               // login
+               UserLoginPage.loginAdmin();
+
                // delete
-               DeletePage.delete( name, content + '-deletereason' );
+               DeletePage.delete( name, 'delete reason' );
 
                // check
                assert.strictEqual(
@@ -116,40 +106,32 @@ describe( 'Page', function () {
        } );
 
        it( 'should be restorable', function () {
-               // login
-               UserLoginPage.loginAdmin();
-
-               // create
-               browser.call( function () {
-                       return Api.edit( name, content );
+               // create and delete
+               browser.call( async () => {
+                       await bot.edit( name, content, 'create for delete' );
+                       await bot.delete( name, 'delete for restore' );
                } );
 
-               // delete
-               browser.call( function () {
-                       return Api.delete( name, content + '-deletereason' );
-               } );
+               // login
+               UserLoginPage.loginAdmin();
 
                // restore
-               RestorePage.restore( name, content + '-restorereason' );
+               RestorePage.restore( name, 'restore reason' );
 
                // check
                assert.strictEqual( RestorePage.displayedContent.getText(), name + ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' );
        } );
 
        it( 'should be undoable', function () {
-               // create
-               browser.call( function () {
-                       return Api.edit( name, content );
-               } );
-
-               // edit
                let previousRev, undoRev;
-               browser.call( function () {
-                       return Api.edit( name, Util.getTestString( 'editContent-' ) )
-                               .then( ( response ) => {
-                                       previousRev = response.edit.oldrevid;
-                                       undoRev = response.edit.newrevid;
-                               } );
+               browser.call( async () => {
+                       // create
+                       await bot.edit( name, content, 'create to edit and undo' );
+
+                       // edit
+                       const response = await bot.edit( name, Util.getTestString( 'editContent-' ) );
+                       previousRev = response.edit.oldrevid;
+                       undoRev = response.edit.newrevid;
                } );
 
                UndoPage.undo( name, previousRev, undoRev );