Files
iptvnator/e2e/settings.e2e.ts
T

105 lines
3.2 KiB
TypeScript

import { expect, test } from '@playwright/test';
import {
BrowserContext,
ElectronApplication,
Page,
_electron as electron,
} from 'playwright';
const PATH = require('path');
let app: ElectronApplication;
let page: Page;
let context: BrowserContext;
test.beforeAll(async () => {
app = await electron.launch({
args: [PATH.join(__dirname, '../electron/main.js')],
env: {
e2e: 'true',
},
});
context = app.context();
await context.tracing.start({ screenshots: true, snapshots: true });
page = await app.firstWindow();
const isMainWindow = (await page.title()) === 'IPTVnator';
if (!isMainWindow) {
page = app.windows()[1];
}
await page.waitForLoadState('domcontentloaded');
});
test.describe('Settings', () => {
test('Check settings page', async () => {
await page.getByTestId('open-settings').click();
await expect(page.getByTestId('settings-container')).toBeVisible();
await page.getByTestId('back-to-home').click();
});
test('Change video player', async () => {
await page.getByTestId('open-settings').click();
await expect(page.locator('text="VideoJs Player"')).toBeVisible();
await page.getByTestId('select-video-player').click();
await page.getByTestId('html5').click();
await page.getByTestId('save-settings').click();
await page.getByTestId('back-to-home').click();
await page.getByTestId('open-settings').click();
await expect(page.locator('text="HTML5 Video Player"')).toBeVisible();
});
test('Change app theme', async () => {
await page.getByTestId('open-settings').click();
await expect(page.locator('text="Light theme"')).toBeVisible();
await page.getByTestId('select-theme').click();
await page.getByTestId('DARK_THEME').click();
await page.getByTestId('save-settings').click();
await page.getByTestId('back-to-home').click();
await page.getByTestId('open-settings').click();
await expect(page.locator('text="Dark theme"')).toBeVisible();
});
test('Change app language', async () => {
await page.getByTestId('open-settings').click();
await expect(page.locator('text="English"')).toBeVisible();
await page.getByTestId('select-language').click();
await page.getByTestId('de').click();
await page.getByTestId('save-settings').click();
await page.getByTestId('back-to-home').click();
await page.getByTestId('open-settings').click();
await expect(page.locator('text="Deutsch"')).toBeVisible();
});
});
test.beforeEach(async () => {
await page.evaluate(async () => {
const dbNames = (await window.indexedDB.databases()).map(
(db) => db.name
);
dbNames.forEach((name) =>
name !== undefined ? window.indexedDB.deleteDatabase(name) : null
);
});
});
// eslint-disable-next-line no-empty-pattern
test.afterEach(async ({}, testInfo) => {
await page.screenshot({
path: `./e2e/screenshots/home/${testInfo.title}.png`,
});
});
test.afterAll(async () => {
await page.close();
await app.close();
});