20-basic-features--sticky-fab.spec.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. context('Access to sticky Fab', () => {
  2. const ssPrefix = 'fab-';
  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('Fab display changes on scroll down and up', () => {
  14. // Visible
  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-fab-page-create-button').then($elem => $elem.hasClass('visible'));
  21. });
  22. cy.screenshot(`${ssPrefix}is-visible-on-scroll-down`);
  23. // Invisible
  24. cy.waitUntil(() => {
  25. //do
  26. // Scroll the window back to top
  27. cy.scrollTo(0, 0);
  28. // wait until
  29. return cy.getByTestid('grw-fab-page-create-button').then($elem => $elem.hasClass('invisible'));
  30. });
  31. cy.screenshot(`${ssPrefix}is-invisible-on-scroll-top`);
  32. });
  33. it('Fab is not displayed when move to other pages', () => {
  34. // Initial scroll down
  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-fab-page-create-button').then($elem => $elem.hasClass('visible'));
  41. });
  42. // Move to /Sandbox page
  43. cy.visit('/Sandbox');
  44. cy.waitUntilSkeletonDisappear();
  45. cy.collapseSidebar(true);
  46. cy.waitUntil(() => cy.getByTestid('grw-fab-page-create-button').then($elem => $elem.hasClass('invisible')));
  47. cy.screenshot(`${ssPrefix}is-not-visible-on-move-to-other-pages`);
  48. });
  49. it('Able to open create page modal from fab', () => {
  50. cy.waitUntil(() => {
  51. //do
  52. // Scroll the window back to top
  53. cy.scrollTo(0, 250);
  54. // wait until
  55. return cy.getByTestid('grw-fab-page-create-button')
  56. .should('have.class', 'visible')
  57. .within(() => {
  58. cy.get('.btn-create-page').click();
  59. return true;
  60. });
  61. });
  62. cy.getByTestid('page-create-modal').should('be.visible').within(() => {
  63. cy.screenshot(`${ssPrefix}new-page-modal-opened-from-fab`);
  64. cy.get('button.close').click();
  65. });
  66. });
  67. it('Able to scroll page to top', () => {
  68. // Initial scroll down
  69. cy.waitUntil(() => {
  70. // do
  71. // Scroll the window 250px down is enough to trigger sticky effect
  72. cy.scrollTo(0, 250);
  73. // wait until
  74. return cy.getByTestid('grw-fab-return-to-top')
  75. .should('have.class', 'visible')
  76. .then(() => {
  77. cy.waitUntil(() => {
  78. cy.get('.btn-scroll-to-top').click();
  79. return cy.getByTestid('grw-fab-return-to-top').should('have.class', 'invisible');
  80. });
  81. });
  82. });
  83. cy.screenshot(`${ssPrefix}scroll-page-to-top`);
  84. });
  85. });