sticky-features.spec.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { test, expect } from '@playwright/test';
  2. test.describe('Sticky features', () => {
  3. test.beforeEach(async({ page }) => {
  4. await page.goto('/');
  5. });
  6. test('Subnavigation displays changes on scroll down and up', async({ page }) => {
  7. // Scroll down to trigger sticky effect
  8. await page.evaluate(() => window.scrollTo(0, 250));
  9. await expect(page.locator('.sticky-outer-wrapper').first()).toHaveClass(/active/);
  10. // Scroll back to top
  11. await page.evaluate(() => window.scrollTo(0, 0));
  12. await expect(page.locator('.sticky-outer-wrapper').first()).not.toHaveClass(/active/);
  13. });
  14. test('Subnavigation is not displayed when move to other pages', async({ page }) => {
  15. // Scroll down to trigger sticky effect
  16. await page.evaluate(() => window.scrollTo(0, 250));
  17. await expect(page.locator('.sticky-outer-wrapper').first()).toHaveClass(/active/);
  18. // Move to /Sandbox page
  19. await page.goto('/Sandbox');
  20. await expect(page.locator('.sticky-outer-wrapper').first()).not.toHaveClass(/active/);
  21. });
  22. test('Able to click buttons on subnavigation switcher when sticky', async({ page }) => {
  23. // Scroll down to trigger sticky effect
  24. await page.evaluate(() => window.scrollTo(0, 250));
  25. await expect(page.locator('.sticky-outer-wrapper').first()).toHaveClass(/active/);
  26. // Click editor button
  27. await page.getByTestId('editor-button').click();
  28. await expect(page.locator('.layout-root')).toHaveClass(/editing/);
  29. });
  30. test('Subnavigation is sticky when on small window', async({ page }) => {
  31. // Scroll down to trigger sticky effect
  32. await page.evaluate(() => window.scrollTo(0, 500));
  33. await expect(page.locator('.sticky-outer-wrapper').first()).toHaveClass(/active/);
  34. // Set viewport to small size
  35. await page.setViewportSize({ width: 600, height: 1024 });
  36. await expect(page.getByTestId('grw-contextual-sub-nav').getByTestId('grw-page-editor-mode-manager')).toBeVisible();
  37. });
  38. });