20-basic-features--sticky-subnavigation-switcher.spec.ts 3.1 KB

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