diff options
author | Timo Tijhof <krinklemail@gmail.com> | 2018-05-02 18:48:24 +0100 |
---|---|---|
committer | Zfilipin <zfilipin@wikimedia.org> | 2018-05-09 14:43:30 +0000 |
commit | 16a4d9da7bb810e04ee3e7f3d7f4b0b485a27019 (patch) | |
tree | 3aabbf84fb61b3cfc8ed741fe7d87dc2243e6b6f /tests/selenium/pageobjects | |
parent | e52b056322ec74b41484401f37501014bbfe1dcb (diff) | |
download | mediawikicore-16a4d9da7bb810e04ee3e7f3d7f4b0b485a27019.tar.gz mediawikicore-16a4d9da7bb810e04ee3e7f3d7f4b0b485a27019.zip |
selenium: Initial version of wdio-mediawiki package
This is new package will be reusable by other repositories for
their browser tests, without having to reference the internal
selenium/pageobjects/ directory from MediaWiki core.
In addition to not requiring direct imports, it will also avoid
problems in the future by allowing the package to be versioned
and iterated upon without forcing an atomic global upgrade
(or broken master builds), everytime we change something.
See wdio-mediawiki/README for details.
Within MediaWiki core itself, the package is used using the
'file' specifier in its package.json, so that we always test
and develop using its working copy, which makes drafting and
testing changes easier.
Also misc changes to make wdio.conf easier to understand.
Bug: T193088
Change-Id: I547a7899e7a97693a93567dd763784e637433d55
Diffstat (limited to 'tests/selenium/pageobjects')
-rw-r--r-- | tests/selenium/pageobjects/createaccount.page.js | 26 | ||||
-rw-r--r-- | tests/selenium/pageobjects/delete.page.js | 24 | ||||
-rw-r--r-- | tests/selenium/pageobjects/edit.page.js | 20 | ||||
-rw-r--r-- | tests/selenium/pageobjects/history.page.js | 6 | ||||
-rw-r--r-- | tests/selenium/pageobjects/page.js | 9 | ||||
-rw-r--r-- | tests/selenium/pageobjects/preferences.page.js | 4 | ||||
-rw-r--r-- | tests/selenium/pageobjects/restore.page.js | 11 | ||||
-rw-r--r-- | tests/selenium/pageobjects/userlogin.page.js | 29 |
8 files changed, 39 insertions, 90 deletions
diff --git a/tests/selenium/pageobjects/createaccount.page.js b/tests/selenium/pageobjects/createaccount.page.js index a0b70a32b979..2bcef13a73c7 100644 --- a/tests/selenium/pageobjects/createaccount.page.js +++ b/tests/selenium/pageobjects/createaccount.page.js @@ -1,9 +1,7 @@ -const Page = require( './page' ), - // https://github.com/Fannon/mwbot - MWBot = require( 'mwbot' ); +const Page = require( 'wdio-mediawiki/Page' ), + Api = require( 'wdio-mediawiki/Api' ); class CreateAccountPage extends Page { - get username() { return browser.element( '#wpName2' ); } get password() { return browser.element( '#wpPassword2' ); } get confirmPassword() { return browser.element( '#wpRetype' ); } @@ -11,7 +9,7 @@ class CreateAccountPage extends Page { get heading() { return browser.element( '#firstHeading' ); } open() { - super.open( 'Special:CreateAccount' ); + super.openTitle( 'Special:CreateAccount' ); } createAccount( username, password ) { @@ -22,23 +20,9 @@ class CreateAccountPage extends Page { this.create.click(); } + // @deprecated Use wdio-mediawiki/Api#createAccount() instead. apiCreateAccount( username, password ) { - let bot = new MWBot(); - - return bot.loginGetCreateaccountToken( { - apiUrl: `${browser.options.baseUrl}/api.php`, - username: browser.options.username, - password: browser.options.password - } ).then( function () { - return bot.request( { - action: 'createaccount', - createreturnurl: browser.options.baseUrl, - createtoken: bot.createaccountToken, - username: username, - password: password, - retype: password - } ); - } ); + return Api.createAccount( username, password ); } } diff --git a/tests/selenium/pageobjects/delete.page.js b/tests/selenium/pageobjects/delete.page.js index ec034092de1d..1218818008e0 100644 --- a/tests/selenium/pageobjects/delete.page.js +++ b/tests/selenium/pageobjects/delete.page.js @@ -1,6 +1,5 @@ -const Page = require( './page' ), - // https://github.com/Fannon/mwbot - MWBot = require( 'mwbot' ); +const Page = require( 'wdio-mediawiki/Page' ), + Api = require( 'wdio-mediawiki/Api' ); class DeletePage extends Page { get reason() { return browser.element( '#wpReason' ); } @@ -8,26 +7,19 @@ class DeletePage extends Page { get submit() { return browser.element( '#wpConfirmB' ); } get displayedContent() { return browser.element( '#mw-content-text' ); } - open( name ) { - super.open( name + '&action=delete' ); + open( title ) { + super.openTitle( title, { action: 'delete' } ); } - delete( name, reason ) { - this.open( name ); + delete( title, reason ) { + this.open( title ); this.reason.setValue( reason ); this.submit.click(); } + // @deprecated Use wdio-mediawiki/Api#delete() instead. apiDelete( name, reason ) { - let bot = new MWBot(); - - return bot.loginGetEditToken( { - apiUrl: `${browser.options.baseUrl}/api.php`, - username: browser.options.username, - password: browser.options.password - } ).then( function () { - return bot.delete( name, reason ); - } ); + return Api.delete( name, reason ); } } diff --git a/tests/selenium/pageobjects/edit.page.js b/tests/selenium/pageobjects/edit.page.js index a1784f4a78ff..8bc7dc635acf 100644 --- a/tests/selenium/pageobjects/edit.page.js +++ b/tests/selenium/pageobjects/edit.page.js @@ -1,6 +1,5 @@ -const Page = require( './page' ), - // https://github.com/Fannon/mwbot - MWBot = require( 'mwbot' ); +const Page = require( 'wdio-mediawiki/Page' ), + Api = require( 'wdio-mediawiki/Api' ); class EditPage extends Page { get content() { return browser.element( '#wpTextbox1' ); } @@ -8,8 +7,8 @@ class EditPage extends Page { get heading() { return browser.element( '#firstHeading' ); } get save() { return browser.element( '#wpSave' ); } - openForEditing( name ) { - super.open( name + '&action=edit' ); + openForEditing( title ) { + super.openTitle( title, { action: 'edit' } ); } edit( name, content ) { @@ -18,16 +17,9 @@ class EditPage extends Page { this.save.click(); } + // @deprecated Use wdio-mediawiki/Api#edit() instead. apiEdit( name, content ) { - let bot = new MWBot(); - - return bot.loginGetEditToken( { - apiUrl: `${browser.options.baseUrl}/api.php`, - username: browser.options.username, - password: browser.options.password - } ).then( function () { - return bot.edit( name, content, `Created page with "${content}"` ); - } ); + return Api.edit( name, content ); } } diff --git a/tests/selenium/pageobjects/history.page.js b/tests/selenium/pageobjects/history.page.js index 60d7fd4a0b41..acaf3ea0fa43 100644 --- a/tests/selenium/pageobjects/history.page.js +++ b/tests/selenium/pageobjects/history.page.js @@ -1,10 +1,10 @@ -const Page = require( './page' ); +const Page = require( 'wdio-mediawiki/Page' ); class HistoryPage extends Page { get comment() { return browser.element( '#pagehistory .comment' ); } - open( name ) { - super.open( name + '&action=history' ); + open( title ) { + super.openTitle( title, { action: 'history' } ); } } diff --git a/tests/selenium/pageobjects/page.js b/tests/selenium/pageobjects/page.js index 097408615899..f159990eaef3 100644 --- a/tests/selenium/pageobjects/page.js +++ b/tests/selenium/pageobjects/page.js @@ -1,11 +1,12 @@ +const Page = require( 'wdio-mediawiki/Page' ); + /** - * Based on http://webdriver.io/guide/testrunner/pageobjects.html + * @deprecated Use wdio-mediawiki/Page and openTitle() instead. */ - -class Page { +class LegacyPage extends Page { open( path ) { browser.url( browser.options.baseUrl + '/index.php?title=' + path ); } } -module.exports = Page; +module.exports = LegacyPage; diff --git a/tests/selenium/pageobjects/preferences.page.js b/tests/selenium/pageobjects/preferences.page.js index 9456b61dd046..64fd58207dae 100644 --- a/tests/selenium/pageobjects/preferences.page.js +++ b/tests/selenium/pageobjects/preferences.page.js @@ -1,11 +1,11 @@ -const Page = require( './page' ); +const Page = require( 'wdio-mediawiki/Page' ); class PreferencesPage extends Page { get realName() { return browser.element( '#mw-input-wprealname' ); } get save() { return browser.element( '#prefcontrol' ); } open() { - super.open( 'Special:Preferences' ); + super.openTitle( 'Special:Preferences' ); } changeRealName( realName ) { diff --git a/tests/selenium/pageobjects/restore.page.js b/tests/selenium/pageobjects/restore.page.js index be5be8c6c240..47ad145f65e4 100644 --- a/tests/selenium/pageobjects/restore.page.js +++ b/tests/selenium/pageobjects/restore.page.js @@ -1,17 +1,16 @@ -const Page = require( './page' ); +const Page = require( 'wdio-mediawiki/Page' ); class RestorePage extends Page { - get reason() { return browser.element( '#wpComment' ); } get submit() { return browser.element( '#mw-undelete-submit' ); } get displayedContent() { return browser.element( '#mw-content-text' ); } - open( name ) { - super.open( 'Special:Undelete/' + name ); + open( subject ) { + super.openTitle( 'Special:Undelete/' + subject ); } - restore( name, reason ) { - this.open( name ); + restore( subject, reason ) { + this.open( subject ); this.reason.setValue( reason ); this.submit.click(); } diff --git a/tests/selenium/pageobjects/userlogin.page.js b/tests/selenium/pageobjects/userlogin.page.js index 557fb6b5a728..971e21bd4ec1 100644 --- a/tests/selenium/pageobjects/userlogin.page.js +++ b/tests/selenium/pageobjects/userlogin.page.js @@ -1,25 +1,6 @@ -const Page = require( './page' ); +const LoginPage = require( 'wdio-mediawiki/LoginPage' ); -class UserLoginPage extends Page { - get username() { return browser.element( '#wpName1' ); } - get password() { return browser.element( '#wpPassword1' ); } - get loginButton() { return browser.element( '#wpLoginAttempt' ); } - get userPage() { return browser.element( '#pt-userpage' ); } - - open() { - super.open( 'Special:UserLogin' ); - } - - login( username, password ) { - this.open(); - this.username.setValue( username ); - this.password.setValue( password ); - this.loginButton.click(); - } - - loginAdmin() { - this.login( browser.options.username, browser.options.password ); - } -} - -module.exports = new UserLoginPage(); +/** + * @deprecated Use wdio-mediawiki/LoginPage instead. + */ +module.exports = LoginPage; |