Перейти к основному содержимому

Запись видео

Записывайте сеансы работы в браузере в формате WebM с маркерами глав и выносками для действий.

Команды​

КомандаОписание
video-start [filename]Начать запись
video-stopОстановить и сохранить запись
video-chapter <title>Показать полноэкранную карточку главы и отметить её позицию
video-show-actionsСопровождать последующие действия выносками и подсветкой
video-hide-actionsПрекратить добавление аннотаций к действиям

Простая запись​

playwright-cli open https://example.com
playwright-cli video-start demo.webm
playwright-cli click e5
playwright-cli fill e3 "test"
playwright-cli video-stop
# Видео сохранено в: .playwright-cli/demo.webm

Если имя файла не указано, видео сохраняется под именем video-{timestamp}.webm в выходном каталоге.

Размер видео​

playwright-cli video-start --size=800x600

Если параметр --size не указан, запись масштабируется так, чтобы вписаться в область 800x800.

Маркеры глав​

video-chapter размывает страницу и показывает карточку главы в течение заданного времени, а затем убирает её — это удобно для переходов между разделами пошаговой демонстрации.

playwright-cli video-start

playwright-cli video-chapter "Шаг 1: Вход" --description="Вход в существующую учётную запись" --duration=2000
playwright-cli goto https://app.example.com/login
playwright-cli fill e3 "user@example.com"
playwright-cli fill e5 "password"
playwright-cli click e7

playwright-cli video-chapter "Шаг 2: Переход к настройкам"
playwright-cli goto /settings

playwright-cli video-chapter "Шаг 3: Обновление профиля"
playwright-cli fill e10 "New Display Name"
playwright-cli click e15

playwright-cli video-stop

Выноски для действий​

video-show-actions добавляет к каждой последующей команде наглядное пояснение в записи: выноска содержит название действия, а целевой элемент подсвечивается. При этом анимированный указатель перемещается между точками выполнения действий.

playwright-cli video-start walkthrough.webm
playwright-cli video-show-actions --duration=600 --position=top-right

playwright-cli click e5
playwright-cli fill e3 "test"

playwright-cli video-hide-actions
playwright-cli video-stop
ПараметрОписание
--duration=<ms>Время отображения каждой выноски на экране (по умолчанию 500 мс)
--position=<pos>top-left, top, top-right, bottom-left, bottom, bottom-right (по умолчанию top-right)
--cursor=<mode>pointer включает анимацию указателя мыши (по умолчанию), none отключает её

Создание видео с помощью скриптов​

Чтобы получить качественную запись с продуманным темпом, реалистичным вводом текста и пользовательскими наложениями, управляйте всем сценарием из одного скрипта с помощью run-code, а не выполняйте команды по одной. Сначала изучите страницу с помощью CLI, чтобы подобрать локаторы, а затем напишите скрипт:

// hero.js
async page => {
await page.screencast.start({ path: 'video.webm', size: { width: 1280, height: 800 } });
await page.goto('https://demo.playwright.dev/todomvc');

// Карточка главы: размывает страницу, блокирует выполнение на заданное время, затем автоматически удаляется.
await page.screencast.showChapter('Добавление задач', {
description: 'Добавим несколько пунктов в список задач.',
duration: 2000,
});

const input = page.getByRole('textbox', { name: 'What needs to be done?' });
await input.pressSequentially('Walk the dog', { delay: 60 });
await input.press('Enter');
await page.waitForTimeout(1000);

// Постоянное наложение: события указателя отключены, поэтому оно не мешает взаимодействию.
const annotation = await page.screencast.showOverlay(`
<div style="position: absolute; top: 8px; right: 8px; padding: 6px 12px;
background: rgba(0,0,0,0.7); border-radius: 8px; font-size: 13px; color: white;">
✓ Задача успешно добавлена
</div>
`);

await input.pressSequentially('Buy groceries', { delay: 60 });
await input.press('Enter');
await page.waitForTimeout(1500);
await annotation.dispose();

await page.screencast.stop();
}
playwright-cli run-code --filename=hero.js

API наложений​

МетодНазначение
page.screencast.start(options) / stop()Начать и остановить запись
page.screencast.showChapter(title, { description?, duration?, styleSheet? })Показать полноэкранную карточку главы с размытым фоном
page.screencast.showOverlay(html, { duration? })Добавить пользовательское HTML-наложение — выноски, подписи, подсветку
page.screencast.showActions(options) / hideActions()API, на котором основана команда video-show-actions
disposable.dispose()Удалить постоянное наложение, добавленное без указания длительности
page.screencast.hideOverlays() / showOverlays()Временно скрыть или показать все наложения

Для наложений задано pointer-events: none, поэтому они могут оставаться видимыми, пока вы нажимаете на элементы, заполняете поля или иначе взаимодействуете со страницей. Чтобы разместить наложение поверх определённого элемента, сначала получите его ограничивающий прямоугольник:

const bounds = await page.getByText('Walk the dog').boundingBox();

Видео и трассировка​

ХарактеристикаВидеоТрассировка
РезультатФайл WebMФайлы трассировки для просмотра в Trace Viewer
СодержимоеВизуальная записьСнимки DOM, сетевая активность, консоль, действия
Оптимальное применениеДемонстрации, документация, отчёты об ошибкахОтладка и анализ
РазмерБольшеМеньше

Сценарии использования​

СценарийПодход
Воспроизведение ошибкиЗапишите шаги и прикрепите видео к отчёту об ошибке
Документирование тестовЗаписывайте видео с маркерами глав
Наблюдение за агентомЗаписывайте сеансы работы агента для последующего просмотра
Создание демонстрацийОпишите сценарий в скрипте с помощью run-code и наложений