2016-12-19 16:39:29 +00:00
const assert = require ( 'assert' ) ,
2018-05-02 17:48:24 +00:00
Api = require ( 'wdio-mediawiki/Api' ) ,
2019-05-10 15:56:42 +00:00
BlankPage = require ( 'wdio-mediawiki/BlankPage' ) ,
2018-01-13 12:56:46 +00:00
DeletePage = require ( '../pageobjects/delete.page' ) ,
2018-01-13 13:52:35 +00:00
RestorePage = require ( '../pageobjects/restore.page' ) ,
2017-05-08 10:10:18 +00:00
EditPage = require ( '../pageobjects/edit.page' ) ,
2017-07-05 11:52:47 +00:00
HistoryPage = require ( '../pageobjects/history.page' ) ,
2018-08-14 14:27:31 +00:00
UndoPage = require ( '../pageobjects/undo.page' ) ,
2019-02-05 13:31:53 +00:00
UserLoginPage = require ( 'wdio-mediawiki/LoginPage' ) ,
2018-06-20 11:06:45 +00:00
Util = require ( 'wdio-mediawiki/Util' ) ;
2016-12-19 16:39:29 +00:00
describe ( 'Page' , function ( ) {
var content ,
name ;
2017-07-05 11:52:47 +00:00
before ( function ( ) {
// disable VisualEditor welcome dialog
2019-05-10 15:56:42 +00:00
BlankPage . open ( ) ;
2019-09-27 03:08:00 +00:00
browser . setLocalStorage ( 've-beta-welcome-dialog' , '1' ) ;
2017-07-05 11:52:47 +00:00
} ) ;
2016-12-19 16:39:29 +00:00
beforeEach ( function ( ) {
2019-09-27 03:08:00 +00:00
browser . deleteAllCookies ( ) ;
2018-06-20 11:06:45 +00:00
content = Util . getTestString ( 'beforeEach-content-' ) ;
name = Util . getTestString ( 'BeforeEach-name-' ) ;
2016-12-19 16:39:29 +00:00
} ) ;
2018-11-29 18:04:31 +00:00
it ( 'should be previewable' , function ( ) {
EditPage . preview ( name , content ) ;
assert . strictEqual ( EditPage . heading . getText ( ) , 'Creating ' + name ) ;
assert . strictEqual ( EditPage . displayedContent . getText ( ) , content ) ;
2019-09-27 03:08:00 +00:00
assert ( EditPage . content . isDisplayed ( ) , 'editor is still present' ) ;
assert ( ! EditPage . conflictingContent . isDisplayed ( ) , 'no edit conflict happened' ) ;
2018-11-29 18:04:31 +00:00
} ) ;
2016-12-19 16:39:29 +00:00
it ( 'should be creatable' , function ( ) {
// create
EditPage . edit ( name , content ) ;
// check
2018-06-06 10:49:33 +00:00
assert . strictEqual ( EditPage . heading . getText ( ) , name ) ;
assert . strictEqual ( EditPage . displayedContent . getText ( ) , content ) ;
2016-12-19 16:39:29 +00:00
} ) ;
2018-01-13 14:06:39 +00:00
it ( 'should be re-creatable' , function ( ) {
2019-07-05 19:38:29 +00:00
const initialContent = Util . getTestString ( 'initialContent-' ) ;
2018-01-13 14:06:39 +00:00
// create
browser . call ( function ( ) {
2018-05-02 17:48:24 +00:00
return Api . edit ( name , initialContent ) ;
2018-01-13 14:06:39 +00:00
} ) ;
// delete
browser . call ( function ( ) {
2018-05-02 17:48:24 +00:00
return Api . delete ( name , 'delete prior to recreate' ) ;
2018-01-13 14:06:39 +00:00
} ) ;
// create
EditPage . edit ( name , content ) ;
// check
2018-06-06 10:49:33 +00:00
assert . strictEqual ( EditPage . heading . getText ( ) , name ) ;
assert . strictEqual ( EditPage . displayedContent . getText ( ) , content ) ;
2018-01-13 14:06:39 +00:00
} ) ;
2018-09-04 09:27:01 +00:00
it ( 'should be editable @daily' , function ( ) {
2016-12-19 16:39:29 +00:00
// create
2017-05-08 10:10:18 +00:00
browser . call ( function ( ) {
2018-05-02 17:48:24 +00:00
return Api . edit ( name , content ) ;
2017-05-08 10:10:18 +00:00
} ) ;
2016-12-19 16:39:29 +00:00
// edit
2019-07-05 19:38:29 +00:00
const editContent = Util . getTestString ( 'editContent-' ) ;
2018-06-08 12:11:38 +00:00
EditPage . edit ( name , editContent ) ;
2016-12-19 16:39:29 +00:00
2017-05-08 10:10:18 +00:00
// check
2018-06-06 10:49:33 +00:00
assert . strictEqual ( EditPage . heading . getText ( ) , name ) ;
2019-04-12 09:57:46 +00:00
assert ( EditPage . displayedContent . getText ( ) . includes ( editContent ) ) ;
2016-12-19 16:39:29 +00:00
} ) ;
2018-09-04 09:27:01 +00:00
it ( 'should have history @daily' , function ( ) {
2016-12-19 16:39:29 +00:00
// create
2017-05-08 10:10:18 +00:00
browser . call ( function ( ) {
2018-05-02 17:48:24 +00:00
return Api . edit ( name , content ) ;
2017-05-08 10:10:18 +00:00
} ) ;
2016-12-19 16:39:29 +00:00
// check
HistoryPage . open ( name ) ;
2019-02-13 22:18:31 +00:00
assert . strictEqual ( HistoryPage . comment . getText ( ) , ` Created or updated page with " ${ content } " ` ) ;
2016-12-19 16:39:29 +00:00
} ) ;
2018-01-13 12:56:46 +00:00
it ( 'should be deletable' , function ( ) {
// login
UserLoginPage . loginAdmin ( ) ;
// create
browser . call ( function ( ) {
2018-05-02 17:48:24 +00:00
return Api . edit ( name , content ) ;
2018-01-13 12:56:46 +00:00
} ) ;
// delete
DeletePage . delete ( name , content + '-deletereason' ) ;
// check
2018-06-06 10:49:33 +00:00
assert . strictEqual (
2018-01-13 12:56:46 +00:00
DeletePage . displayedContent . getText ( ) ,
'"' + name + '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
) ;
} ) ;
2018-01-13 13:52:35 +00:00
it ( 'should be restorable' , function ( ) {
// login
UserLoginPage . loginAdmin ( ) ;
// create
browser . call ( function ( ) {
2018-05-02 17:48:24 +00:00
return Api . edit ( name , content ) ;
2018-01-13 13:52:35 +00:00
} ) ;
// delete
browser . call ( function ( ) {
2018-05-02 17:48:24 +00:00
return Api . delete ( name , content + '-deletereason' ) ;
2018-01-13 13:52:35 +00:00
} ) ;
// restore
RestorePage . restore ( name , content + '-restorereason' ) ;
// check
2018-06-06 10:49:33 +00:00
assert . strictEqual ( RestorePage . displayedContent . getText ( ) , name + ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' ) ;
2018-01-13 13:52:35 +00:00
} ) ;
2018-08-14 14:27:31 +00:00
it ( 'should be undoable' , function ( ) {
// create
browser . call ( function ( ) {
return Api . edit ( name , content ) ;
} ) ;
// edit
let previousRev , undoRev ;
browser . call ( function ( ) {
return Api . edit ( name , Util . getTestString ( 'editContent-' ) )
. then ( ( response ) => {
previousRev = response . edit . oldrevid ;
undoRev = response . edit . newrevid ;
} ) ;
} ) ;
UndoPage . undo ( name , previousRev , undoRev ) ;
assert . strictEqual ( EditPage . displayedContent . getText ( ) , content ) ;
} ) ;
2016-12-19 16:39:29 +00:00
} ) ;