2020-05-14 21:14:42 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
2019-10-01 01:36:15 +00:00
|
|
|
const assert = require( 'assert' );
|
|
|
|
|
const Api = require( 'wdio-mediawiki/Api' );
|
|
|
|
|
const RecentChangesPage = require( '../pageobjects/recentchanges.page' );
|
|
|
|
|
const Util = require( 'wdio-mediawiki/Util' );
|
2018-06-12 11:01:25 +00:00
|
|
|
|
|
|
|
|
describe( 'Special:RecentChanges', function () {
|
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 058d5b7cd857af.
* 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-01 02:10:05 +00:00
|
|
|
let content, name, bot;
|
|
|
|
|
|
|
|
|
|
before( async () => {
|
|
|
|
|
bot = await Api.bot();
|
|
|
|
|
} );
|
2018-06-12 11:01:25 +00:00
|
|
|
|
|
|
|
|
beforeEach( function () {
|
2019-09-27 03:08:00 +00:00
|
|
|
browser.deleteAllCookies();
|
2018-06-20 11:06:45 +00:00
|
|
|
content = Util.getTestString();
|
|
|
|
|
name = Util.getTestString();
|
2018-06-12 11:01:25 +00:00
|
|
|
} );
|
|
|
|
|
|
2018-09-11 14:57:48 +00:00
|
|
|
it( 'shows page creation', function () {
|
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 058d5b7cd857af.
* 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-01 02:10:05 +00:00
|
|
|
browser.call( async () => {
|
|
|
|
|
await bot.edit( name, content );
|
2018-09-11 14:57:48 +00:00
|
|
|
} );
|
2018-06-12 11:01:25 +00:00
|
|
|
|
2021-01-05 15:48:56 +00:00
|
|
|
browser.waitUntil( async () => {
|
|
|
|
|
const result = await bot.request( {
|
|
|
|
|
action: 'query',
|
|
|
|
|
list: 'recentchanges',
|
|
|
|
|
rctitle: name
|
|
|
|
|
} );
|
|
|
|
|
return result.query.recentchanges.length > 0;
|
|
|
|
|
} );
|
|
|
|
|
|
2018-06-12 11:01:25 +00:00
|
|
|
RecentChangesPage.open();
|
|
|
|
|
|
2018-06-19 13:31:07 +00:00
|
|
|
assert.strictEqual( RecentChangesPage.titles[ 0 ].getText(), name );
|
2018-06-12 11:01:25 +00:00
|
|
|
} );
|
|
|
|
|
|
|
|
|
|
} );
|