access-to-side-bar.spec.ts 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. context('Access to sidebar', () => {
  2. const ssPrefix = 'access-to-sidebar-';
  3. beforeEach(() => {
  4. // login
  5. cy.fixture("user-admin.json").then(user => {
  6. cy.login(user.username, user.password);
  7. });
  8. // collapse sidebar
  9. cy.collapseSidebar(false);
  10. });
  11. it('Successfully show/collapse sidebar', () => {
  12. cy.visit('/');
  13. cy.screenshot(`${ssPrefix}-1-sidebar-shown`, {capture: 'viewport'});
  14. cy.getByTestid('grw-navigation-resize-button').click({force: true});
  15. cy.screenshot(`${ssPrefix}-2-sidebar-collapsed`, {capture: 'viewport'});
  16. });
  17. it('Successfully access recent changes side bar ', () => {
  18. cy.visit('/');
  19. cy.getByTestid('grw-sidebar-nav-primary-recent-changes').click();
  20. cy.getByTestid('grw-contextual-navigation-sub').then(($el) => {
  21. if($el.hasClass('d-none')){
  22. cy.getByTestid('grw-navigation-resize-button').click({force: true});
  23. }
  24. });
  25. cy.getByTestid('grw-recent-changes').should('be.visible');
  26. cy.get('.list-group-item').should('be.visible');
  27. // Avoid blackout misalignment
  28. cy.scrollTo('center');
  29. cy.screenshot(`${ssPrefix}recent-changes-1-page-list`);
  30. cy.get('#grw-sidebar-contents-wrapper').within(() => {
  31. cy.get('#recentChangesResize').click({force: true});
  32. cy.get('.list-group-item').should('be.visible');
  33. });
  34. // Avoid blackout misalignment
  35. cy.scrollTo('center');
  36. cy.screenshot(`${ssPrefix}recent-changes-2-switch-sidebar-size`);
  37. });
  38. it('Successfully create a custom sidebar page', () => {
  39. cy.visit('/');
  40. cy.getByTestid('grw-sidebar-nav-primary-custom-sidebar').click();
  41. cy.getByTestid('grw-contextual-navigation-sub').then(($el) => {
  42. if($el.hasClass('d-none')){
  43. cy.getByTestid('grw-navigation-resize-button').click({force: true});
  44. }
  45. });
  46. cy.getByTestid('grw-contextual-navigation-sub').screenshot(`${ssPrefix}custom-sidebar-1-click-on-custom-sidebar`);
  47. // create /Sidebar contents
  48. const content = '# HELLO \n ## Hello\n ### Hello';
  49. cy.get('.grw-sidebar-content-header.h5').find('a').click();
  50. cy.get('.CodeMirror textarea').type(content, {force: true});
  51. cy.screenshot(`${ssPrefix}custom-sidebar-2-custom-sidebar-editor`);
  52. cy.getByTestid('save-page-btn').click();
  53. cy.get('.layout-root').should('not.have.class', 'editing');
  54. // What to do when UserUISettings is not saved in time
  55. cy.getByTestid('grw-sidebar-nav-primary-custom-sidebar').then(($el) => {
  56. if (!$el.hasClass('active')) {
  57. cy.wrap($el).click();
  58. }
  59. });
  60. cy.get('.grw-custom-sidebar-content').should('be.visible');
  61. cy.getByTestid('grw-contextual-navigation-sub').screenshot(`${ssPrefix}custom-sidebar-3-custom-sidebar-created`);
  62. });
  63. it('Successfully performed page operation from "page tree"', () => {
  64. cy.visit('/');
  65. cy.getByTestid('grw-sidebar-nav-primary-page-tree').click();
  66. cy.getByTestid('grw-contextual-navigation-sub').then(($el) => {
  67. if($el.hasClass('d-none')){
  68. cy.getByTestid('grw-navigation-resize-button').click({force: true});
  69. }
  70. });
  71. cy.getByTestid('grw-contextual-navigation-sub').screenshot(`${ssPrefix}page-tree-1-access-to-page-tree`);
  72. cy.get('.grw-pagetree-triangle-btn').eq(0).click();
  73. cy.getByTestid('grw-contextual-navigation-sub').screenshot(`${ssPrefix}page-tree-2-hide-page-tree-item`);
  74. cy.get('.grw-pagetree-triangle-btn').eq(0).click();
  75. cy.get('.grw-pagetree-item-children').eq(0).within(() => {
  76. cy.getByTestid('open-page-item-control-btn').find('button').eq(0).invoke('css','display','block').click()
  77. });
  78. cy.screenshot(`${ssPrefix}page-tree-3-click-three-dots-menu`);
  79. cy.get('.dropdown-menu.show').should('be.visible').within(() => {
  80. cy.getByTestid('add-remove-bookmark-btn').click();
  81. });
  82. cy.screenshot(`${ssPrefix}page-tree-4-add-bookmark`);
  83. cy.get('.grw-pagetree-item-children').eq(0).within(() => {
  84. cy.getByTestid('open-page-item-control-btn').find('button').eq(0).invoke('css','display','block').click()
  85. });
  86. cy.get('.dropdown-menu.show').should('be.visible').within(() => {
  87. cy.getByTestid('open-page-duplicate-modal-btn').click();
  88. });
  89. cy.getByTestid('page-duplicate-modal').should('be.visible').within(() => {
  90. cy.get('.rbt-input-main').type('_test');
  91. cy.screenshot(`${ssPrefix}page-tree-5-duplicate-page`);
  92. cy.get('.modal-header > button').click();
  93. });
  94. cy.get('.grw-pagetree-item-children').eq(0).within(() => {
  95. cy.getByTestid('open-page-item-control-btn').find('button').eq(0).invoke('css','display','block').click()
  96. });
  97. cy.get('.dropdown-menu.show').should('be.visible').within(() => {
  98. cy.getByTestid('open-page-move-rename-modal-btn').click();
  99. });
  100. cy.get('.grw-pagetree-item-children').eq(0).within(() => {
  101. cy.getByTestid('closable-text-input').type('_newname');
  102. });
  103. cy.getByTestid('grw-contextual-navigation-sub').screenshot(`${ssPrefix}page-tree-6-rename-page`);
  104. cy.get('body').click(0,0);
  105. cy.get('.grw-pagetree-item-children').eq(0).within(() => {
  106. cy.getByTestid('open-page-item-control-btn').find('button').eq(0).invoke('css','display','block').click()
  107. });
  108. cy.get('.dropdown-menu.show').should('be.visible').within(() => {
  109. cy.getByTestid('open-page-delete-modal-btn').click();
  110. });
  111. cy.getByTestid('page-delete-modal').should('be.visible').within(() => {
  112. cy.screenshot(`${ssPrefix}page-tree-7-delete-page`);
  113. cy.get('.modal-header > button').click();
  114. });
  115. });
  116. it('Successfully performed page operation from "Tags" ', () => {
  117. cy.visit('/');
  118. cy.getByTestid('grw-sidebar-nav-primary-tags').click();
  119. cy.getByTestid('grw-contextual-navigation-sub').then(($el) => {
  120. if($el.hasClass('d-none')){
  121. cy.getByTestid('grw-navigation-resize-button').click({force: true});
  122. }
  123. });
  124. cy.getByTestid('grw-contextual-navigation-sub').screenshot(`${ssPrefix}tags-1-access-to-tags`);
  125. cy.get('.grw-container-convertible > div > .btn-primary').click({force: true});
  126. // collapse sidebar
  127. cy.collapseSidebar(true);
  128. cy.screenshot(`${ssPrefix}tags-2-check-all-tags`);
  129. });
  130. it('Successfully access to My Drafts page', () => {
  131. cy.visit('/');
  132. cy.collapseSidebar(true);
  133. cy.get('.grw-sidebar-nav-secondary-container').within(() => {
  134. cy.get('a[href*="/me/drafts"]').click();
  135. });
  136. cy.screenshot(`${ssPrefix}access-to-drafts-page`);
  137. });
  138. it('Successfully access to Growi Docs page', () => {
  139. cy.visit('/');
  140. cy.get('.grw-sidebar-nav-secondary-container').within(() => {
  141. cy.get('a[href*="https://docs.growi.org"]').then(($a) => {
  142. const url = $a.prop('href')
  143. cy.request(url).its('body').should('include', '</html>');
  144. });
  145. });
  146. });
  147. it('Successfully access to trash page', () => {
  148. cy.visit('/');
  149. cy.collapseSidebar(true);
  150. cy.get('.grw-sidebar-nav-secondary-container').within(() => {
  151. cy.get('a[href*="/trash"]').click();
  152. });
  153. cy.screenshot(`${ssPrefix}access-to-trash-page`);
  154. });
  155. });