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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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.screenshot(`${ssPrefix}is-sticky-on-scroll-down`);
  23. // Not sticky
  24. cy.waitUntil(() => {
  25. // do
  26. // Scroll page to top
  27. cy.scrollTo(0, 0);
  28. // wait until
  29. return cy.getByTestid('grw-subnav-switcher').then($elem => $elem.hasClass('grw-subnav-switcher-hidden'));
  30. });
  31. cy.screenshot(`${ssPrefix}is-not-sticky-on-scroll-top`);
  32. });
  33. it('Sub navigation is not sticky when move to other pages', () => {
  34. // Make the sub navigation sticky
  35. cy.waitUntil(() => {
  36. // do
  37. // Scroll the window 250px down is enough to trigger sticky effect
  38. cy.scrollTo(0, 250);
  39. // wait until
  40. return cy.getByTestid('grw-subnav-switcher').then($elem => !$elem.hasClass('grw-subnav-switcher-hidden'));
  41. });
  42. // Move to /Sandbox page
  43. cy.visit('/Sandbox');
  44. cy.waitUntilSkeletonDisappear();
  45. cy.collapseSidebar(true);
  46. cy.getByTestid('grw-subnav-switcher').then($elem => $elem.hasClass('grw-subnav-switcher-hidden'))
  47. cy.screenshot(`${ssPrefix}is-not-sticky-on-move-to-other-pages`);
  48. });
  49. it('Able to click buttons on sub navigation switcher when sticky', () => {
  50. cy.waitUntil(() => {
  51. // do
  52. // Scroll the window 250px down is enough to trigger sticky effect
  53. cy.scrollTo(0, 250);
  54. // wait until
  55. return cy.getByTestid('grw-subnav-switcher').then($elem => !$elem.hasClass('grw-subnav-switcher-hidden'));
  56. });
  57. cy.waitUntil(() => {
  58. cy.getByTestid('grw-subnav-switcher').within(() => {
  59. cy.getByTestid('editor-button').should('be.visible').click();
  60. });
  61. return cy.get('.layout-root').then($elem => $elem.hasClass('editing'));
  62. });
  63. cy.get('.grw-editor-navbar-bottom').should('be.visible');
  64. cy.screenshot(`${ssPrefix}open-editor-when-sticky`);
  65. });
  66. it('Sub navigation is sticky when on small window', () => {
  67. cy.waitUntil(() => {
  68. // do
  69. // Scroll the window 500px down
  70. cy.scrollTo(0, 500);
  71. // wait until
  72. return cy.getByTestid('grw-subnav-switcher').then($elem => !$elem.hasClass('grw-subnav-switcher-hidden'));
  73. });
  74. cy.viewport('iphone-5');
  75. cy.screenshot(`${ssPrefix}is-sticky-on-small-window`);
  76. });
  77. });