From: tzhelyazkova Date: Fri, 26 Apr 2019 10:04:33 +0000 (+0200) Subject: Improve rollback tests setup by extracting repeating logic to HistoryPage object X-Git-Tag: 1.34.0-rc.0~1808^2 X-Git-Url: https://git.cyclocoop.org/%242?a=commitdiff_plain;h=3990e0bbc709066be01054216f4f55e85bcf35f2;p=lhc%2Fweb%2Fwiklou.git Improve rollback tests setup by extracting repeating logic to HistoryPage object This also removes the helper method waitForScriptsToBeReady() and uses the more general waitForModuleState() method directly. Bug: T220479 Change-Id: I6be81ad68720449ef03b6a60b4b329040f236c72 --- diff --git a/tests/selenium/pageobjects/history.page.js b/tests/selenium/pageobjects/history.page.js index da5e90961e..3f75243c8f 100644 --- a/tests/selenium/pageobjects/history.page.js +++ b/tests/selenium/pageobjects/history.page.js @@ -1,5 +1,6 @@ const Page = require( 'wdio-mediawiki/Page' ), - Api = require( 'wdio-mediawiki/Api' ); + Api = require( 'wdio-mediawiki/Api' ), + Util = require( 'wdio-mediawiki/Util' ); class HistoryPage extends Page { get heading() { return browser.element( '#firstHeading' ); } @@ -17,6 +18,16 @@ class HistoryPage extends Page { super.openTitle( title, { action: 'history' } ); } + toggleRollbackConfirmationSetting( enable ) { + Util.waitForModuleState( 'mediawiki.api', 'ready', 5000 ); + return browser.execute( function ( enable ) { + return new mw.Api().saveOption( + 'showrollbackconfirmation', + enable ? '1' : '0' + ); + }, enable ); + } + vandalizePage( name, content ) { let vandalUsername = 'Evil_' + browser.options.username; diff --git a/tests/selenium/specs/rollback.js b/tests/selenium/specs/rollback.js index 51a1fc6f9a..383b372fe8 100644 --- a/tests/selenium/specs/rollback.js +++ b/tests/selenium/specs/rollback.js @@ -16,14 +16,7 @@ describe( 'Rollback with confirmation', function () { // Enable rollback confirmation for admin user // Requires user to log in again, handled by deleteCookie() call in beforeEach function UserLoginPage.loginAdmin(); - - UserLoginPage.waitForScriptsToBeReady(); - browser.execute( function () { - return ( new mw.Api() ).saveOption( - 'showrollbackconfirmation', - '1' - ); - } ); + HistoryPage.toggleRollbackConfirmationSetting( true ); } ); beforeEach( function () { @@ -103,14 +96,7 @@ describe( 'Rollback without confirmation', function () { // Disable rollback confirmation for admin user // Requires user to log in again, handled by deleteCookie() call in beforeEach function UserLoginPage.loginAdmin(); - - UserLoginPage.waitForScriptsToBeReady(); - browser.execute( function () { - return ( new mw.Api() ).saveOption( - 'showrollbackconfirmation', - '0' - ); - } ); + HistoryPage.toggleRollbackConfirmationSetting( false ); } ); beforeEach( function () { diff --git a/tests/selenium/wdio-mediawiki/LoginPage.js b/tests/selenium/wdio-mediawiki/LoginPage.js index 60855f8ff1..8838530586 100644 --- a/tests/selenium/wdio-mediawiki/LoginPage.js +++ b/tests/selenium/wdio-mediawiki/LoginPage.js @@ -1,5 +1,4 @@ -const Page = require( './Page' ), - Util = require( 'wdio-mediawiki/Util' ); +const Page = require( './Page' ); class LoginPage extends Page { get username() { return browser.element( '#wpName1' ); } @@ -21,10 +20,6 @@ class LoginPage extends Page { loginAdmin() { this.login( browser.options.username, browser.options.password ); } - - waitForScriptsToBeReady() { - Util.waitForModuleState( 'mediawiki.api' ); - } } module.exports = new LoginPage();