From 3990e0bbc709066be01054216f4f55e85bcf35f2 Mon Sep 17 00:00:00 2001 From: tzhelyazkova Date: Fri, 26 Apr 2019 12:04:33 +0200 Subject: [PATCH] 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 --- tests/selenium/pageobjects/history.page.js | 13 ++++++++++++- tests/selenium/specs/rollback.js | 18 ++---------------- tests/selenium/wdio-mediawiki/LoginPage.js | 7 +------ 3 files changed, 15 insertions(+), 23 deletions(-) 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(); -- 2.20.1