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

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