20-basic-features--sticky-features.cy.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. context('Access to any page', () => {
  2. const ssPrefix = 'subnav-';
  3. beforeEach(() => {
  4. // login
  5. cy.fixture("user-admin.json").then(user => {
  6. cy.login(user.username, user.password);
  7. });
  8. cy.visit('/');
  9. cy.waitUntilSkeletonDisappear();
  10. cy.collapseSidebar(true, true);
  11. });
  12. it('Subnavigation displays changes on scroll down and up', () => {
  13. cy.waitUntil(() => {
  14. // do
  15. // Scroll the window 250px down is enough to trigger sticky effect
  16. cy.scrollTo(0, 250);
  17. // wait until
  18. return cy.get('.sticky-outer-wrapper').should('have.class', 'active');
  19. });
  20. cy.waitUntilSkeletonDisappear();
  21. cy.screenshot(`${ssPrefix}visible-on-scroll-down`);
  22. cy.waitUntil(() => {
  23. // do
  24. // Scroll the window back to top
  25. cy.scrollTo(0, 0);
  26. // wait until
  27. return cy.get('.sticky-outer-wrapper').should('not.have.class', 'active');
  28. });
  29. cy.screenshot(`${ssPrefix}invisible-on-scroll-top`);
  30. });
  31. it('Subnavigation is not displayed when move to other pages', () => {
  32. cy.waitUntil(() => {
  33. // do
  34. // Scroll the window 250px down is enough to trigger sticky effect
  35. cy.scrollTo(0, 250);
  36. // wait until
  37. return cy.get('.sticky-outer-wrapper').should('have.class', 'active');
  38. });
  39. // Move to /Sandbox page
  40. cy.visit('/Sandbox');
  41. cy.waitUntilSkeletonDisappear();
  42. cy.collapseSidebar(true);
  43. return cy.get('.sticky-outer-wrapper').should('not.have.class', 'active');
  44. cy.screenshot(`${ssPrefix}not-visible-on-move-to-other-pages`);
  45. });
  46. it('Able to click buttons on subnavigation switcher when sticky', () => {
  47. cy.waitUntil(() => {
  48. // do
  49. // Scroll the window 250px down is enough to trigger sticky effect
  50. cy.scrollTo(0, 250);
  51. // wait until
  52. return cy.get('.sticky-outer-wrapper').should('have.class', 'active');
  53. });
  54. cy.waitUntil(() => {
  55. cy.getByTestid('grw-contextual-sub-nav').within(() => {
  56. cy.getByTestid('editor-button').as('editorButton').should('be.visible');
  57. cy.get('@editorButton').click();
  58. });
  59. return cy.get('.layout-root').then($elem => $elem.hasClass('editing'));
  60. });
  61. cy.getByTestid('grw-editor-navbar-bottom').should('be.visible');
  62. // cy.get('.CodeMirror').should('be.visible');
  63. cy.screenshot(`${ssPrefix}open-editor-when-sticky`);
  64. });
  65. it('Subnavigation is sticky when on small window', () => {
  66. cy.waitUntil(() => {
  67. // do
  68. // Scroll the window 500px down
  69. cy.scrollTo(0, 500);
  70. // wait until
  71. return cy.get('.sticky-outer-wrapper').should('have.class', 'active');
  72. });
  73. cy.waitUntilSkeletonDisappear();
  74. cy.viewport(600, 1024);
  75. cy.getByTestid('grw-contextual-sub-nav').within(() => {
  76. cy.get('#grw-page-editor-mode-manager').should('be.visible');
  77. })
  78. cy.screenshot(`${ssPrefix}sticky-on-small-window`);
  79. });
  80. });