1 const assert
= require( 'assert' ),
2 Api
= require( 'wdio-mediawiki/Api' ),
3 DeletePage
= require( '../pageobjects/delete.page' ),
4 RestorePage
= require( '../pageobjects/restore.page' ),
5 EditPage
= require( '../pageobjects/edit.page' ),
6 HistoryPage
= require( '../pageobjects/history.page' ),
7 UndoPage
= require( '../pageobjects/undo.page' ),
8 UserLoginPage
= require( '../pageobjects/userlogin.page' ),
9 Util
= require( 'wdio-mediawiki/Util' );
11 describe( 'Page', function () {
16 // disable VisualEditor welcome dialog
18 browser
.localStorage( 'POST', { key
: 've-beta-welcome-dialog', value
: '1' } );
21 beforeEach( function () {
22 browser
.deleteCookie();
23 content
= Util
.getTestString( 'beforeEach-content-' );
24 name
= Util
.getTestString( 'BeforeEach-name-' );
27 it( 'should be creatable', function () {
29 EditPage
.edit( name
, content
);
32 assert
.strictEqual( EditPage
.heading
.getText(), name
);
33 assert
.strictEqual( EditPage
.displayedContent
.getText(), content
);
36 it( 'should be re-creatable', function () {
37 let initialContent
= Util
.getTestString( 'initialContent-' );
40 browser
.call( function () {
41 return Api
.edit( name
, initialContent
);
45 browser
.call( function () {
46 return Api
.delete( name
, 'delete prior to recreate' );
50 EditPage
.edit( name
, content
);
53 assert
.strictEqual( EditPage
.heading
.getText(), name
);
54 assert
.strictEqual( EditPage
.displayedContent
.getText(), content
);
57 it( 'should be editable @daily', function () {
59 browser
.call( function () {
60 return Api
.edit( name
, content
);
64 let editContent
= Util
.getTestString( 'editContent-' );
65 EditPage
.edit( name
, editContent
);
68 assert
.strictEqual( EditPage
.heading
.getText(), name
);
69 assert
.strictEqual( EditPage
.displayedContent
.getText(), editContent
);
72 it( 'should have history @daily', function () {
74 browser
.call( function () {
75 return Api
.edit( name
, content
);
79 HistoryPage
.open( name
);
80 assert
.strictEqual( HistoryPage
.comment
.getText(), `(Created page with "${content}")` );
83 it( 'should be deletable', function () {
85 UserLoginPage
.loginAdmin();
88 browser
.call( function () {
89 return Api
.edit( name
, content
);
93 DeletePage
.delete( name
, content
+ '-deletereason' );
97 DeletePage
.displayedContent
.getText(),
98 '"' + name
+ '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
102 it( 'should be restorable', function () {
104 UserLoginPage
.loginAdmin();
107 browser
.call( function () {
108 return Api
.edit( name
, content
);
112 browser
.call( function () {
113 return Api
.delete( name
, content
+ '-deletereason' );
117 RestorePage
.restore( name
, content
+ '-restorereason' );
120 assert
.strictEqual( RestorePage
.displayedContent
.getText(), name
+ ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' );
123 it( 'should be undoable', function () {
125 browser
.call( function () {
126 return Api
.edit( name
, content
);
130 let previousRev
, undoRev
;
131 browser
.call( function () {
132 return Api
.edit( name
, Util
.getTestString( 'editContent-' ) )
133 .then( ( response
) => {
134 previousRev
= response
.edit
.oldrevid
;
135 undoRev
= response
.edit
.newrevid
;
139 UndoPage
.undo( name
, previousRev
, undoRev
);
141 assert
.strictEqual( EditPage
.displayedContent
.getText(), content
);