Merge "Follow-up 3535a5f327: Remove old CSS now caches have expired"
[lhc/web/wiklou.git] / tests / selenium / specs / page.js
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( 'wdio-mediawiki/LoginPage' ),
9 Util = require( 'wdio-mediawiki/Util' );
10
11 describe( 'Page', function () {
12 var content,
13 name;
14
15 before( function () {
16 // disable VisualEditor welcome dialog
17 UserLoginPage.open();
18 browser.localStorage( 'POST', { key: 've-beta-welcome-dialog', value: '1' } );
19 } );
20
21 beforeEach( function () {
22 browser.deleteCookie();
23 content = Util.getTestString( 'beforeEach-content-' );
24 name = Util.getTestString( 'BeforeEach-name-' );
25 } );
26
27 it( 'should be previewable', function () {
28 EditPage.preview( name, content );
29
30 assert.strictEqual( EditPage.heading.getText(), 'Creating ' + name );
31 assert.strictEqual( EditPage.displayedContent.getText(), content );
32 assert( EditPage.content.isVisible(), 'editor is still present' );
33 assert( !EditPage.conflictingContent.isVisible(), 'no edit conflict happened' );
34 // provoke and dismiss reload warning due to unsaved content
35 browser.url( 'data:text/html,Done' );
36 try {
37 browser.alertAccept();
38 } catch ( e ) {}
39 } );
40
41 it( 'should be creatable', function () {
42 // create
43 EditPage.edit( name, content );
44
45 // check
46 assert.strictEqual( EditPage.heading.getText(), name );
47 assert.strictEqual( EditPage.displayedContent.getText(), content );
48 } );
49
50 it( 'should be re-creatable', function () {
51 let initialContent = Util.getTestString( 'initialContent-' );
52
53 // create
54 browser.call( function () {
55 return Api.edit( name, initialContent );
56 } );
57
58 // delete
59 browser.call( function () {
60 return Api.delete( name, 'delete prior to recreate' );
61 } );
62
63 // create
64 EditPage.edit( name, content );
65
66 // check
67 assert.strictEqual( EditPage.heading.getText(), name );
68 assert.strictEqual( EditPage.displayedContent.getText(), content );
69 } );
70
71 it( 'should be editable @daily', function () {
72 // create
73 browser.call( function () {
74 return Api.edit( name, content );
75 } );
76
77 // edit
78 let editContent = Util.getTestString( 'editContent-' );
79 EditPage.edit( name, editContent );
80
81 // check
82 assert.strictEqual( EditPage.heading.getText(), name );
83 // eslint-disable-next-line no-restricted-syntax
84 assert( EditPage.displayedContent.getText().includes( editContent ) );
85 } );
86
87 it( 'should have history @daily', function () {
88 // create
89 browser.call( function () {
90 return Api.edit( name, content );
91 } );
92
93 // check
94 HistoryPage.open( name );
95 assert.strictEqual( HistoryPage.comment.getText(), `Created or updated page with "${content}"` );
96 } );
97
98 it( 'should be deletable', function () {
99 // login
100 UserLoginPage.loginAdmin();
101
102 // create
103 browser.call( function () {
104 return Api.edit( name, content );
105 } );
106
107 // delete
108 DeletePage.delete( name, content + '-deletereason' );
109
110 // check
111 assert.strictEqual(
112 DeletePage.displayedContent.getText(),
113 '"' + name + '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
114 );
115 } );
116
117 it( 'should be restorable', function () {
118 // login
119 UserLoginPage.loginAdmin();
120
121 // create
122 browser.call( function () {
123 return Api.edit( name, content );
124 } );
125
126 // delete
127 browser.call( function () {
128 return Api.delete( name, content + '-deletereason' );
129 } );
130
131 // restore
132 RestorePage.restore( name, content + '-restorereason' );
133
134 // check
135 assert.strictEqual( RestorePage.displayedContent.getText(), name + ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' );
136 } );
137
138 it( 'should be undoable', function () {
139 // create
140 browser.call( function () {
141 return Api.edit( name, content );
142 } );
143
144 // edit
145 let previousRev, undoRev;
146 browser.call( function () {
147 return Api.edit( name, Util.getTestString( 'editContent-' ) )
148 .then( ( response ) => {
149 previousRev = response.edit.oldrevid;
150 undoRev = response.edit.newrevid;
151 } );
152 } );
153
154 UndoPage.undo( name, previousRev, undoRev );
155
156 assert.strictEqual( EditPage.displayedContent.getText(), content );
157 } );
158
159 } );