Testplane CLI
Testplane CLI позволяет управлять браузером из терминала.
Вы можете открывать страницы, проходить пользовательские сценарии, сохранять компактные DOM-снимки, смотреть логи консоли, сохранять состояние аутентификации, отлаживать отчеты Testplane и воспроизводить Time Travel snapshots. Инструмент полезен сам по себе, а также является основой для Testplane Skill.
Установка
Установите пакет в проект:
npm install --save-dev @testplane/cli
Затем запускайте его так:
npx @testplane/cli --help
Типовой сценарий
Самый простой способ использования — начинать с navigate. Если браузер еще не запущен, CLI запустит его автоматически.
npx @testplane/cli navigate https://example.com
npx @testplane/cli snapshot
По умолчанию браузеры CLI работают в headless-режиме. Если вы хотите видеть браузер во время отладки, сначала запустите его явно:
npx @testplane/cli launch --headless false
npx @testplane/cli navigate http://localhost:3000
Когда закончите:
npx @testplane/cli close-browser
Если не закрыть браузер вручную, по умолчанию он закроется через 5 минут неактивности.
Как выглядит вывод
Большинство браузерных команд возвращают три полезных блока информации: результат действия, эквивалентный код Testplane и текущее состояние браузера.
Successfully navigated to https://example.com
## Testplane Code
await browser.openAndWait("https://example.com");
## Browser Tabs
1. Title: Example Domain; URL: https://example.com/ (current)
## Current Tab Snapshot
The snapshot was saved to: /tmp/.testplane/snapshots/2026-05-14T21-24-40-811Z.yml
Снапшоты оптимизированы для людей и агентов, читающих вывод терминала. По умолчанию они убирают шумные теги и атрибут ы, обрезают очень длинный текст и сохраняют большие снимки во временный файл вместо переполнения терминала.
Навигация и инспекция страниц
Используйте navigate с увеличенным таймаутом для медленных локальных приложений или CI-окружений:
npx @testplane/cli navigate http://localhost:3000 --timeout 60000
Используйте snapshot, чтобы понять структуру страницы:
npx @testplane/cli snapshot
Вы можете настроить снимок, если вывод по умолчанию скрывает что-то важное:
npx @testplane/cli snapshot --include-attrs data-qa href class --max-text-length 200
Используйте screenshot, когда нужны визуальные подтверждения:
npx @testplane/cli screenshot ./tmp/page.png
Для большинства задач отладки тестов начинайте с snapshot. Его быстрее читать, проще искать по нему, и обычно этого достаточно, чтобы найти нужный селектор или состояние.
Взаимодействие с элементами
Команды принимают либо селектор, либо семантические опции в стиле Testing Library.
npx @testplane/cli click '[data-testid="submit"]'
npx @testplane/cli click --role button --name "Submit"
npx @testplane/cli type --label-text "Email" --value "user@example.com"
npx @testplane/cli wait --text "Saved" --timeout 5000
Для нативных элементов <select>:
npx @testplane/cli select "#country" --visible-text "Germany"
npx @testplane/cli select --label-text "Country" --value de
npx @testplane/cli select --label-text "Country" --index 2
После действия CLI сообщает итоговое состояние браузера. Это полезно, когда клик приводит к навигации или заменяет элемент, с которым вы только что взаимодействовали.
Логи консоли
console читает сообщения консоли браузера из сессий на базе Chromium. Он возвращает только сообщения, которые еще не были возвращены предыдущим вызовом console в текущей сессии.
npx @testplane/cli navigate https://stackoverflow.com/questions/10175445/load-page-on-selection-from-dropdown-form
npx @testplane/cli console
Пример:
Retrieved 8 unseen browser console messages
1. [2026-05-14T22:23:40.793Z] WARNING (security): Error with Feature-Policy header: Unrecognized feature: 'speaker'.
2. [2026-05-14T22:23:43.883Z] SEVERE (other): Not signed in with the identity provider.
3. [2026-05-14T22:23:44.059Z] SEVERE (javascript): Access to fetch at 'https://id5-sync.com/api/config/prebid' from origin 'https://stackoverflow.com' has been blocked by CORS policy.
4. [2026-05-14T22:23:44.059Z] SEVERE (network): Failed to load resource: net::ERR_FAILED
Это удобно, когда страница в снимке выглядит нормально, но приложение падает в JavaScript, не загружает заблокированный ресурс или пишет полезные runtime-ошибки.
Работа с вкладками
Используйте команды вкладок, когда сценарий открывает новую страницу.
npx @testplane/cli list-tabs
npx @testplane/cli new-tab http://localhost:3000/settings
npx @testplane/cli switch-tab 1
npx @testplane/cli close-tab 2
Состояние аутентификации
Для сценариев с авторизацией можно сохранять и восстанавливать состояние браузера.
npx @testplane/cli save-state ./tmp/auth-state.json
npx @testplane/cli restore-state ./tmp/auth-state.json
Состояние может включать cookies, localStorage и sessionStorage. Ненужные части можно отключить:
npx @testplane/cli save-state ./tmp/auth-state.json --cookies false
Считайте сохраненный файл чувствительным. Он может содержать реальные auth-данные, даже если в выводе команды печатаются только счетчики.
По умолчанию restore-state обновляет текущую страницу, чтобы код приложения сразу увидел восстановленные cookies и storage.
Запуск произвольного кода Testplane
Когда встроенной команды недостаточно, используйте run-code.
npx @testplane/cli run-code "await browser.getUrl()"
npx @testplane/cli run-code "(browser) => browser.getTitle()"
npx @testplane/cli run-code --file ./debug-script.js
Inline-код может быть JavaScript-выражением, небольшим async-телом или функцией, которая принимает browser.
Подключение к существующим сессиям
Если вы запускаете тест Testplane с --keep-browser, Testplane может напечатать данные браузерной сессии. Подключитесь к этому браузеру и изучите состояние, которое осталось после теста:
npx @testplane/cli attach --session '{"sessionId":"...","capabilities":{}}'
npx @testplane/cli snapshot
Это полезно, когда тест выполняет подготовку, которую трудно воспроизвести вручную, например логин, создание данных или длинный пользовательский сценарий.
REPL-режим
Предположим, вы запустили Testplane с включенным repl и определенным repl-портом:
npx testplane --grep 'test name' -b chrome-desktop --repl-before-test --repl-port 4444