e2ca6554c1a9f9c1473e2b2ff64c5edba348a50c
1 const assert
= require( 'assert' ),
2 Api
= require( 'wdio-mediawiki/Api' ),
3 BlankPage
= require( 'wdio-mediawiki/BlankPage' ),
4 DeletePage
= require( '../pageobjects/delete.page' ),
5 RestorePage
= require( '../pageobjects/restore.page' ),
6 EditPage
= require( '../pageobjects/edit.page' ),
7 HistoryPage
= require( '../pageobjects/history.page' ),
8 UndoPage
= require( '../pageobjects/undo.page' ),
9 UserLoginPage
= require( 'wdio-mediawiki/LoginPage' ),
10 Util
= require( 'wdio-mediawiki/Util' );
12 describe( 'Page', function () {
13 var content
, name
, bot
;
15 before( async
function () {
16 // disable VisualEditor welcome dialog
18 browser
.setLocalStorage( 've-beta-welcome-dialog', '1' );
19 bot
= await Api
.bot();
22 beforeEach( function () {
23 browser
.deleteAllCookies();
24 content
= Util
.getTestString( 'beforeEach-content-' );
25 name
= Util
.getTestString( 'BeforeEach-name-' );
28 it( 'should be previewable', function () {
29 EditPage
.preview( name
, content
);
31 assert
.strictEqual( EditPage
.heading
.getText(), 'Creating ' + name
);
32 assert
.strictEqual( EditPage
.displayedContent
.getText(), content
);
33 assert( EditPage
.content
.isDisplayed(), 'editor is still present' );
34 assert( !EditPage
.conflictingContent
.isDisplayed(), 'no edit conflict happened' );
37 it( 'should be creatable', function () {
39 EditPage
.edit( name
, content
);
42 assert
.strictEqual( EditPage
.heading
.getText(), name
);
43 assert
.strictEqual( EditPage
.displayedContent
.getText(), content
);
46 it( 'should be re-creatable', function () {
47 const initialContent
= Util
.getTestString( 'initialContent-' );
50 browser
.call( async () => {
51 await bot
.edit( name
, initialContent
, 'create for delete' );
52 await bot
.delete( name
, 'delete prior to recreate' );
56 EditPage
.edit( name
, content
);
59 assert
.strictEqual( EditPage
.heading
.getText(), name
);
60 assert
.strictEqual( EditPage
.displayedContent
.getText(), content
);
63 it( 'should be editable @daily', function () {
65 browser
.call( async () => {
66 await bot
.edit( name
, content
, 'create for edit' );
70 const editContent
= Util
.getTestString( 'editContent-' );
71 EditPage
.edit( name
, editContent
);
74 assert
.strictEqual( EditPage
.heading
.getText(), name
);
75 assert( EditPage
.displayedContent
.getText().includes( editContent
) );
78 it( 'should have history @daily', function () {
80 browser
.call( async () => {
81 await bot
.edit( name
, content
, `created with "${content}"` );
85 HistoryPage
.open( name
);
86 assert
.strictEqual( HistoryPage
.comment
.getText(), `created with "${content}"` );
89 it( 'should be deletable', function () {
91 browser
.call( async () => {
92 await bot
.edit( name
, content
, 'create for delete' );
96 UserLoginPage
.loginAdmin();
99 DeletePage
.delete( name
, 'delete reason' );
103 DeletePage
.displayedContent
.getText(),
104 '"' + name
+ '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
108 it( 'should be restorable', function () {
110 browser
.call( async () => {
111 await bot
.edit( name
, content
, 'create for delete' );
112 await bot
.delete( name
, 'delete for restore' );
116 UserLoginPage
.loginAdmin();
119 RestorePage
.restore( name
, 'restore reason' );
122 assert
.strictEqual( RestorePage
.displayedContent
.getText(), name
+ ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' );
125 it( 'should be undoable', function () {
126 let previousRev
, undoRev
;
127 browser
.call( async () => {
129 await bot
.edit( name
, content
, 'create to edit and undo' );
132 const response
= await bot
.edit( name
, Util
.getTestString( 'editContent-' ) );
133 previousRev
= response
.edit
.oldrevid
;
134 undoRev
= response
.edit
.newrevid
;
137 UndoPage
.undo( name
, previousRev
, undoRev
);
139 assert
.strictEqual( EditPage
.displayedContent
.getText(), content
);