wiki.techinc.nl/tests/selenium/specs/user.js
Timo Tijhof 22d149c3f7 selenium: Fix more inefficient MWBot use and simplify wdio-mediawiki Api
This does the same for the other specs, as previously done to the
page.js spec in 058d5b7cd8.

* rollkback: From 6 api logins to 4 api logins.
  Before (2x3): admin for edit, admin for createaccount, vandal for edit.
  After (2x2): admin for edit + createaccount, vandal for edit.

* recentchanges spec: No difference, but updated pattern for consistency
  so that if it is extended in the future, it will be natural to re-use
  the bot object instead of creating a new one.

* watchlist spec: From 3 api logins to 1 api login.
  Before: admin for createaccount, admin for edit, admin for edit.
  After: admin (re-used)

* user spec: From 2 to 1 api login.

Also:

* Remove the now-unused Api.edit() and Api.delete() anti-pattern
  methods, as these are nothing but one-line shortcuts to the
  already one-line invocation of bot.edit() and bot.delete(),
  except that they bypassed the current bot object, causing
  inefficient repeat logins in way that was non-obvious.
  Migration is simple and won't be required until other repos
  upgrade to the next wdio-mediawiki version (not yet released).

* Make 'bot' a mandatory parameter for the createAccount, block,
  and unblock convenience wrapper methods.

* Move the vandalizePage() method from HistoryPage to rollback spec,
  as it had no connection with that page object or the action=history
  interface, and document why it can't (yet) re-use its bot object.

Bug: T234002
Change-Id: Id6e995916566f7dd7b618892295198b897fbee2e
2019-10-04 18:16:28 +01:00

60 lines
1.5 KiB
JavaScript

const assert = require( 'assert' );
const CreateAccountPage = require( '../pageobjects/createaccount.page' );
const PreferencesPage = require( '../pageobjects/preferences.page' );
const UserLoginPage = require( 'wdio-mediawiki/LoginPage' );
const Api = require( 'wdio-mediawiki/Api' );
const Util = require( 'wdio-mediawiki/Util' );
describe( 'User', function () {
let password, username, bot;
before( async () => {
bot = await Api.bot();
} );
beforeEach( function () {
browser.deleteAllCookies();
username = Util.getTestString( 'User-' );
password = Util.getTestString();
} );
it( 'should be able to create account', function () {
// create
CreateAccountPage.createAccount( username, password );
// check
assert.strictEqual( CreateAccountPage.heading.getText(), `Welcome, ${username}!` );
} );
it( 'should be able to log in @daily', function () {
// create
browser.call( async () => {
await Api.createAccount( bot, username, password );
} );
// log in
UserLoginPage.login( username, password );
// check
assert.strictEqual( UserLoginPage.userPage.getText(), username );
} );
// Disabled due to flakiness (T199446)
it.skip( 'should be able to change preferences', function () {
var realName = Util.getTestString();
// create
browser.call( async () => {
await Api.createAccount( bot, username, password );
} );
// log in
UserLoginPage.login( username, password );
// change
PreferencesPage.changeRealName( realName );
// check
assert.strictEqual( PreferencesPage.realName.getValue(), realName );
} );
} );