Files
v10/apps/e2e/tests/error-dialog.spec.ts
T
2026-04-15 15:28:38 -07:00

46 lines
1.6 KiB
TypeScript

import { expect, test } from '@playwright/test';
import { DATA_ATTRS, SELECTORS } from '../fixtures/selectors';
import { PlayerPage } from '../page-objects/player';
test.describe('Error Dialog', () => {
let player: PlayerPage;
test.beforeEach(async ({ page }) => {
player = new PlayerPage(page);
await page.goto('/pages/html-video-mp4.html');
await player.waitForMediaReady();
});
test('shows error dialog on media load failure', async ({ page }) => {
const errorDialog = page.locator(SELECTORS.errorDialog).first();
// Set an invalid source to trigger a media error
await page.evaluate(() => {
const video = document.querySelector('video') as HTMLVideoElement;
if (video) video.src = 'https://example.com/does-not-exist.mp4';
});
// Error dialog should appear with data-open
await expect(errorDialog).toHaveAttribute(DATA_ATTRS.open, '', { timeout: 15_000 });
});
test('error dialog can be dismissed', async ({ page }) => {
const errorDialog = page.locator(SELECTORS.errorDialog).first();
// Trigger error
await page.evaluate(() => {
const video = document.querySelector('video') as HTMLVideoElement;
if (video) video.src = 'https://example.com/does-not-exist.mp4';
});
await expect(errorDialog).toHaveAttribute(DATA_ATTRS.open, '', { timeout: 15_000 });
// Click the close/OK button
const closeButton = page.locator('media-alert-dialog-close, .media-button--primary').first();
await closeButton.click();
// Dialog should close
await expect(errorDialog).not.toHaveAttribute(DATA_ATTRS.open, { timeout: 5_000 });
});
});