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