mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
test: extend e2e tests
This commit is contained in:
1 parent
a64442a216
commit
6ef7f849bb
3 files changed
+117
-10
No files matched your search
+12
-10
@@ -76,20 +76,22 @@ test.describe('Upload playlists', () => {
|
||||
);
|
||||
await expect(page.getByTestId('channel-item')).toHaveCount(4);
|
||||
});
|
||||
});
|
||||
|
||||
test.afterEach(() => {
|
||||
deleteDbFile();
|
||||
});
|
||||
test.afterAll(async () => {
|
||||
deleteDbFile();
|
||||
await page.close();
|
||||
await app.close();
|
||||
});
|
||||
|
||||
function deleteDbFile() {
|
||||
const pathToFile = './e2e/db/data.db';
|
||||
|
||||
fs.unlink(pathToFile, function (err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
} else {
|
||||
console.log('Successfully deleted the file.');
|
||||
}
|
||||
});
|
||||
try {
|
||||
fs.unlink(pathToFile, () => {
|
||||
console.log('db file was deleted');
|
||||
});
|
||||
} catch (error) {
|
||||
console.log('db file not found');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
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();
|
||||
});
|
||||
@@ -10,6 +10,7 @@
|
||||
*ngIf="isElectron; else pwaMenu"
|
||||
mat-icon-button
|
||||
(click)="openSettings()"
|
||||
data-test-id="open-settings"
|
||||
>
|
||||
<mat-icon>settings</mat-icon>
|
||||
</button>
|
||||
|
||||
Reference in new issue
Block a user