font-switcher.spec.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { test, expect } from '@playwright/test';
  2. import QuranReaderStyles from '@/redux/types/QuranReaderStyles';
  3. import Homepage from '@/tests/POM/home-page';
  4. import { MushafLines, QuranFont } from '@/types/QuranReader';
  5. test.beforeEach(async ({ page }) => {
  6. await page.goto('/');
  7. });
  8. test('Selecting a non-default theme should persist the selected font', async ({
  9. page,
  10. context,
  11. }) => {
  12. const homepage = new Homepage(page, context);
  13. // we cannot access the local storage in webkit straight away so we need to wait for 1 second
  14. await page.waitForTimeout(1000);
  15. // 1. make sure code v1 and 16-line Mushaf are persisted by default
  16. let persistedQuranReaderStyles = (await homepage.getPersistedValue(
  17. 'quranReaderStyles',
  18. )) as QuranReaderStyles;
  19. expect(persistedQuranReaderStyles.quranFont).toBe(QuranFont.MadaniV1);
  20. expect(persistedQuranReaderStyles.mushafLines).toBe(MushafLines.SixteenLines);
  21. // 2. Open the settings drawer
  22. await homepage.openSettingsDrawer();
  23. // 3. Choose Indopak font
  24. await page.locator('text=IndoPak').click();
  25. // 4. Choose Indopak 15-line Mushaf
  26. await page.locator('select[name="lines"]').selectOption(MushafLines.FifteenLines);
  27. // 5. make sure indopak and 15-line Mushaf are persisted
  28. persistedQuranReaderStyles = (await homepage.getPersistedValue(
  29. 'quranReaderStyles',
  30. )) as QuranReaderStyles;
  31. expect(persistedQuranReaderStyles.quranFont).toBe(QuranFont.IndoPak);
  32. expect(persistedQuranReaderStyles.mushafLines).toBe(MushafLines.FifteenLines);
  33. // 6. reload the page.
  34. await page.reload();
  35. // 7. Open the settings drawer
  36. await homepage.openSettingsDrawer();
  37. // 8. Make sure the selected font is 15 lines that was hydrated from Redux
  38. expect(await page.locator('select[name="lines"]').inputValue()).toBe(MushafLines.FifteenLines);
  39. });