Merge "Only show config-install-success on command line installer where it makes...
[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 assert.strictEqual( EditPage.displayedContent.getText(), editContent );
84 } );
85
86 it( 'should have history @daily', function () {
87 // create
88 browser.call( function () {
89 return Api.edit( name, content );
90 } );
91
92 // check
93 HistoryPage.open( name );
94 assert.strictEqual( HistoryPage.comment.getText(), `Created or updated page with "${content}"` );
95 } );
96
97 it( 'should be deletable', function () {
98 // login
99 UserLoginPage.loginAdmin();
100
101 // create
102 browser.call( function () {
103 return Api.edit( name, content );
104 } );
105
106 // delete
107 DeletePage.delete( name, content + '-deletereason' );
108
109 // check
110 assert.strictEqual(
111 DeletePage.displayedContent.getText(),
112 '"' + name + '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
113 );
114 } );
115
116 it( 'should be restorable', function () {
117 // login
118 UserLoginPage.loginAdmin();
119
120 // create
121 browser.call( function () {
122 return Api.edit( name, content );
123 } );
124
125 // delete
126 browser.call( function () {
127 return Api.delete( name, content + '-deletereason' );
128 } );
129
130 // restore
131 RestorePage.restore( name, content + '-restorereason' );
132
133 // check
134 assert.strictEqual( RestorePage.displayedContent.getText(), name + ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' );
135 } );
136
137 it( 'should be undoable', function () {
138 // create
139 browser.call( function () {
140 return Api.edit( name, content );
141 } );
142
143 // edit
144 let previousRev, undoRev;
145 browser.call( function () {
146 return Api.edit( name, Util.getTestString( 'editContent-' ) )
147 .then( ( response ) => {
148 previousRev = response.edit.oldrevid;
149 undoRev = response.edit.newrevid;
150 } );
151 } );
152
153 UndoPage.undo( name, previousRev, undoRev );
154
155 assert.strictEqual( EditPage.displayedContent.getText(), content );
156 } );
157
158 } );