Merge "Allow skins to place notification container for mw.notify"
[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( '../pageobjects/userlogin.page' ),
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 creatable', function () {
28 // create
29 EditPage.edit( name, content );
30
31 // check
32 assert.strictEqual( EditPage.heading.getText(), name );
33 assert.strictEqual( EditPage.displayedContent.getText(), content );
34 } );
35
36 it( 'should be re-creatable', function () {
37 let initialContent = Util.getTestString( 'initialContent-' );
38
39 // create
40 browser.call( function () {
41 return Api.edit( name, initialContent );
42 } );
43
44 // delete
45 browser.call( function () {
46 return Api.delete( name, 'delete prior to recreate' );
47 } );
48
49 // create
50 EditPage.edit( name, content );
51
52 // check
53 assert.strictEqual( EditPage.heading.getText(), name );
54 assert.strictEqual( EditPage.displayedContent.getText(), content );
55 } );
56
57 it( 'should be editable @daily', function () {
58 // create
59 browser.call( function () {
60 return Api.edit( name, content );
61 } );
62
63 // edit
64 let editContent = Util.getTestString( 'editContent-' );
65 EditPage.edit( name, editContent );
66
67 // check
68 assert.strictEqual( EditPage.heading.getText(), name );
69 assert.strictEqual( EditPage.displayedContent.getText(), editContent );
70 } );
71
72 it( 'should have history @daily', function () {
73 // create
74 browser.call( function () {
75 return Api.edit( name, content );
76 } );
77
78 // check
79 HistoryPage.open( name );
80 assert.strictEqual( HistoryPage.comment.getText(), `(Created page with "${content}")` );
81 } );
82
83 it( 'should be deletable', function () {
84 // login
85 UserLoginPage.loginAdmin();
86
87 // create
88 browser.call( function () {
89 return Api.edit( name, content );
90 } );
91
92 // delete
93 DeletePage.delete( name, content + '-deletereason' );
94
95 // check
96 assert.strictEqual(
97 DeletePage.displayedContent.getText(),
98 '"' + name + '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
99 );
100 } );
101
102 it( 'should be restorable', function () {
103 // login
104 UserLoginPage.loginAdmin();
105
106 // create
107 browser.call( function () {
108 return Api.edit( name, content );
109 } );
110
111 // delete
112 browser.call( function () {
113 return Api.delete( name, content + '-deletereason' );
114 } );
115
116 // restore
117 RestorePage.restore( name, content + '-restorereason' );
118
119 // check
120 assert.strictEqual( RestorePage.displayedContent.getText(), name + ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' );
121 } );
122
123 it( 'should be undoable', function () {
124 // create
125 browser.call( function () {
126 return Api.edit( name, content );
127 } );
128
129 // edit
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;
136 } );
137 } );
138
139 UndoPage.undo( name, previousRev, undoRev );
140
141 assert.strictEqual( EditPage.displayedContent.getText(), content );
142 } );
143
144 } );