drawer.spec.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { test, expect } from '@playwright/test';
  2. test.beforeEach(async ({ page }) => {
  3. await page.goto('/');
  4. });
  5. test('Navigation drawer icon should open the drawer when clicked', async ({ page }) => {
  6. // 1. Make sure the navigation drawer is not visible before opening it
  7. await expect(page.locator('text=Menu')).not.toBeVisible();
  8. // 2. Click to open the drawer [aria-label="Open Navigation Drawer"]
  9. await page.locator('[aria-label="Open Navigation Drawer"]').click();
  10. // 3. Make sure the navigation drawer is visible after opening it
  11. await expect(page.locator('text=Menu')).toBeVisible();
  12. });
  13. test('Feedback item should open in a new tab', async ({ page }) => {
  14. // 1. Open the navigation menu drawer
  15. await page.locator('[aria-label="Open Navigation Drawer"]').click();
  16. // 2. Make sure feedback.quran.com opens in a new tab
  17. await Promise.all([
  18. page.waitForEvent('popup'),
  19. page
  20. .locator(
  21. 'a:nth-child(11) .LinkContainer_anchor__bOj_o .NavigationDrawerItem_container__ZbHp6 .NavigationDrawerItem_innerContainer__KIZpr',
  22. )
  23. .click(), // Feedback nav item
  24. ]);
  25. });
  26. test('Navigation drawer close icon should close the drawer', async ({ page }) => {
  27. // 1. Open the navigation menu drawer
  28. await page.locator('[aria-label="Open Navigation Drawer"]').click();
  29. // 2. Make sure the navigation drawer is visible after opening it
  30. await expect(page.locator('text=Menu')).toBeVisible();
  31. // 3. Clock on the close drawer button
  32. await page.locator('[aria-label="Close Drawer"]').first().click();
  33. // 4. Make sure the navigation drawer is no longer visible after closing it
  34. await expect(page.locator('text=Menu')).not.toBeVisible();
  35. });