selenium: Upgrade from webdriver v4 to v5
[lhc/web/wiklou.git] / tests / selenium / specs / page.js
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' );
11
12 describe( 'Page', function () {
13 var content,
14 name;
15
16 before( function () {
17 // disable VisualEditor welcome dialog
18 BlankPage.open();
19 browser.setLocalStorage( 've-beta-welcome-dialog', '1' );
20 } );
21
22 beforeEach( function () {
23 browser.deleteAllCookies();
24 content = Util.getTestString( 'beforeEach-content-' );
25 name = Util.getTestString( 'BeforeEach-name-' );
26 } );
27
28 it( 'should be previewable', function () {
29 EditPage.preview( name, content );
30
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' );
35 } );
36
37 it( 'should be creatable', function () {
38 // create
39 EditPage.edit( name, content );
40
41 // check
42 assert.strictEqual( EditPage.heading.getText(), name );
43 assert.strictEqual( EditPage.displayedContent.getText(), content );
44 } );
45
46 it( 'should be re-creatable', function () {
47 const initialContent = Util.getTestString( 'initialContent-' );
48
49 // create
50 browser.call( function () {
51 return Api.edit( name, initialContent );
52 } );
53
54 // delete
55 browser.call( function () {
56 return Api.delete( name, 'delete prior to recreate' );
57 } );
58
59 // create
60 EditPage.edit( name, content );
61
62 // check
63 assert.strictEqual( EditPage.heading.getText(), name );
64 assert.strictEqual( EditPage.displayedContent.getText(), content );
65 } );
66
67 it( 'should be editable @daily', function () {
68 // create
69 browser.call( function () {
70 return Api.edit( name, content );
71 } );
72
73 // edit
74 const editContent = Util.getTestString( 'editContent-' );
75 EditPage.edit( name, editContent );
76
77 // check
78 assert.strictEqual( EditPage.heading.getText(), name );
79 assert( EditPage.displayedContent.getText().includes( editContent ) );
80 } );
81
82 it( 'should have history @daily', function () {
83 // create
84 browser.call( function () {
85 return Api.edit( name, content );
86 } );
87
88 // check
89 HistoryPage.open( name );
90 assert.strictEqual( HistoryPage.comment.getText(), `Created or updated page with "${content}"` );
91 } );
92
93 it( 'should be deletable', function () {
94 // login
95 UserLoginPage.loginAdmin();
96
97 // create
98 browser.call( function () {
99 return Api.edit( name, content );
100 } );
101
102 // delete
103 DeletePage.delete( name, content + '-deletereason' );
104
105 // check
106 assert.strictEqual(
107 DeletePage.displayedContent.getText(),
108 '"' + name + '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
109 );
110 } );
111
112 it( 'should be restorable', function () {
113 // login
114 UserLoginPage.loginAdmin();
115
116 // create
117 browser.call( function () {
118 return Api.edit( name, content );
119 } );
120
121 // delete
122 browser.call( function () {
123 return Api.delete( name, content + '-deletereason' );
124 } );
125
126 // restore
127 RestorePage.restore( name, content + '-restorereason' );
128
129 // check
130 assert.strictEqual( RestorePage.displayedContent.getText(), name + ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' );
131 } );
132
133 it( 'should be undoable', function () {
134 // create
135 browser.call( function () {
136 return Api.edit( name, content );
137 } );
138
139 // edit
140 let previousRev, undoRev;
141 browser.call( function () {
142 return Api.edit( name, Util.getTestString( 'editContent-' ) )
143 .then( ( response ) => {
144 previousRev = response.edit.oldrevid;
145 undoRev = response.edit.newrevid;
146 } );
147 } );
148
149 UndoPage.undo( name, previousRev, undoRev );
150
151 assert.strictEqual( EditPage.displayedContent.getText(), content );
152 } );
153
154 } );