page.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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. describe( 'Page', function () {
  11. var content,
  12. name;
  13. before( function () {
  14. // disable VisualEditor welcome dialog
  15. UserLoginPage.open();
  16. browser.localStorage( 'POST', { key: 've-beta-welcome-dialog', value: '1' } );
  17. } );
  18. beforeEach( function () {
  19. browser.deleteCookie();
  20. content = Util.getTestString( 'beforeEach-content-' );
  21. name = Util.getTestString( 'BeforeEach-name-' );
  22. } );
  23. it( 'should be creatable', function () {
  24. // create
  25. EditPage.edit( name, content );
  26. // check
  27. assert.strictEqual( EditPage.heading.getText(), name );
  28. assert.strictEqual( EditPage.displayedContent.getText(), content );
  29. } );
  30. it( 'should be re-creatable', function () {
  31. let initialContent = Util.getTestString( 'initialContent-' );
  32. // create
  33. browser.call( function () {
  34. return Api.edit( name, initialContent );
  35. } );
  36. // delete
  37. browser.call( function () {
  38. return Api.delete( name, 'delete prior to recreate' );
  39. } );
  40. // create
  41. EditPage.edit( name, content );
  42. // check
  43. assert.strictEqual( EditPage.heading.getText(), name );
  44. assert.strictEqual( EditPage.displayedContent.getText(), content );
  45. } );
  46. it( 'should be editable @daily', function () {
  47. // create
  48. browser.call( function () {
  49. return Api.edit( name, content );
  50. } );
  51. // edit
  52. let editContent = Util.getTestString( 'editContent-' );
  53. EditPage.edit( name, editContent );
  54. // check
  55. assert.strictEqual( EditPage.heading.getText(), name );
  56. assert.strictEqual( EditPage.displayedContent.getText(), editContent );
  57. } );
  58. it( 'should have history @daily', function () {
  59. // create
  60. browser.call( function () {
  61. return Api.edit( name, content );
  62. } );
  63. // check
  64. HistoryPage.open( name );
  65. assert.strictEqual( HistoryPage.comment.getText(), `(Created page with "${content}")` );
  66. } );
  67. it( 'should be deletable', function () {
  68. // login
  69. UserLoginPage.loginAdmin();
  70. // create
  71. browser.call( function () {
  72. return Api.edit( name, content );
  73. } );
  74. // delete
  75. DeletePage.delete( name, content + '-deletereason' );
  76. // check
  77. assert.strictEqual(
  78. DeletePage.displayedContent.getText(),
  79. '"' + name + '" has been deleted. See deletion log for a record of recent deletions.\nReturn to Main Page.'
  80. );
  81. } );
  82. it( 'should be restorable', function () {
  83. // login
  84. UserLoginPage.loginAdmin();
  85. // create
  86. browser.call( function () {
  87. return Api.edit( name, content );
  88. } );
  89. // delete
  90. browser.call( function () {
  91. return Api.delete( name, content + '-deletereason' );
  92. } );
  93. // restore
  94. RestorePage.restore( name, content + '-restorereason' );
  95. // check
  96. assert.strictEqual( RestorePage.displayedContent.getText(), name + ' has been restored\nConsult the deletion log for a record of recent deletions and restorations.' );
  97. } );
  98. it( 'should be undoable', function () {
  99. // create
  100. browser.call( function () {
  101. return Api.edit( name, content );
  102. } );
  103. // edit
  104. let previousRev, undoRev;
  105. browser.call( function () {
  106. return Api.edit( name, Util.getTestString( 'editContent-' ) )
  107. .then( ( response ) => {
  108. previousRev = response.edit.oldrevid;
  109. undoRev = response.edit.newrevid;
  110. } );
  111. } );
  112. UndoPage.undo( name, previousRev, undoRev );
  113. assert.strictEqual( EditPage.displayedContent.getText(), content );
  114. } );
  115. } );