Files
v10/apps/e2e/tests/captions.spec.ts
T

41 lines
1.5 KiB
TypeScript

import { expect, test } from '@playwright/test';
import { DATA_ATTRS, SELECTORS } from '../fixtures/selectors';
import { PlayerPage } from '../page-objects/player';
test.describe('Captions', () => {
let player: PlayerPage;
test.beforeEach(async ({ page }) => {
player = new PlayerPage(page);
await page.goto('/pages/html-video-mp4.html');
await player.waitForMediaReady();
});
test('captions settings are unavailable without subtitle tracks', async () => {
await player.showControls();
await player.settingsButton.click();
await expect(player.settingsCaptionsItem).toHaveAttribute(DATA_ATTRS.availability, 'unavailable');
await expect(player.settingsCaptionsItem).toHaveAttribute('aria-disabled', 'true');
});
test('captions settings lists tracks when subtitle track is added', async ({ page }) => {
await page.evaluate(() => {
const video = document.querySelector('video') as HTMLVideoElement;
if (!video) return;
const track = document.createElement('track');
track.kind = 'subtitles';
track.label = 'English';
track.srclang = 'en';
track.src = `data:text/vtt,${encodeURIComponent('WEBVTT\n\n00:00:00.000 --> 00:00:30.000\nTest caption')}`;
video.appendChild(track);
});
await player.showControls();
await player.openCaptionsSettings();
const options = page.locator(SELECTORS.activeMenuOptions);
await expect(options).toHaveCount(2, { timeout: 5_000 });
});
});