20-basic-features--sticky-for-guest.spec.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. context('Access sticky sub navigation switcher and Fab for guest', () => {
  2. const ssPrefix = 'access-sticky-by-guest-';
  3. it('Sub navigation sticky changes when scrolling down and up', () => {
  4. cy.visit('/Sandbox');
  5. cy.waitUntilSkeletonDisappear();
  6. cy.collapseSidebar(true, true);
  7. // Sticky
  8. cy.waitUntil(() => {
  9. // do
  10. // Scroll page down 250px
  11. cy.scrollTo(0, 250);
  12. // wait until
  13. return cy.getByTestid('grw-subnav-switcher').then($elem => !$elem.hasClass('grw-subnav-switcher-hidden'));
  14. });
  15. cy.screenshot(`${ssPrefix}subnav-switcher-is-sticky-on-scroll-down`);
  16. // Not sticky
  17. cy.waitUntil(() => {
  18. // do
  19. // Scroll page to top
  20. cy.scrollTo(0, 0);
  21. // wait until
  22. return cy.getByTestid('grw-subnav-switcher').then($elem => $elem.hasClass('grw-subnav-switcher-hidden'));
  23. });
  24. cy.screenshot(`${ssPrefix}subnav-switcher-is-not-sticky-on-scroll-top`);
  25. });
  26. it('Fab display changes when scrolling down and up', () => {
  27. cy.visit('/Sandbox');
  28. cy.waitUntilSkeletonDisappear();
  29. cy.collapseSidebar(true, true);
  30. // Visible
  31. cy.waitUntil(() => {
  32. // do
  33. // Scroll the window 250px down is enough to trigger sticky effect
  34. cy.scrollTo(0, 250);
  35. // wait until
  36. return cy.getByTestid('grw-fab-return-to-top').then($elem => $elem.hasClass('visible'));
  37. });
  38. cy.screenshot(`${ssPrefix}fab-is-visible-on-scroll-down`);
  39. // Invisible
  40. cy.waitUntil(() => {
  41. // do
  42. // Scroll page to top
  43. cy.scrollTo(0, 0);
  44. // wait until
  45. return cy.getByTestid('grw-fab-return-to-top').then($elem => !$elem.hasClass('visible'));
  46. });
  47. cy.screenshot(`${ssPrefix}fab-is-invisible-on-scroll-down`);
  48. });
  49. });