Форматирование блока сценария тест кейса

Последние изменения: 06.07.2026

Что за формат используется в сценариях

Текст шага сценария в ТестОпс хранится не как Markdown и не как HTML, а как структурированный JSON-документ — в формате редактора TipTap (модель документа ProseMirror).

Документ — это дерево: блоки (абзацы, блок кода) → внутри них кусочки текста → на текст навешаны метки форматирования (жирный, цвет, ссылка и т. д.). В API тела шага этот JSON лежит в поле bodyJson.

Важно. JSON руками не вводят — это формат хранения, который редактор генерирует сам. Markdown-расширение TipTap у нас включено только для вставки/копипаста. По API всегда передаётся JSON, описанный ниже.

Как форматировать прямо в интерфейсе

В поле шага форматирование применяется тремя способами:

1. Выделить текст → всплывающая панель

Основной способ. Выделите фрагмент текста — появится плавающая панель с кнопками: жирный, курсив, подчёркнутый, зачёркнутый, ссылка, inline-код, цвет текста и цвет фона. Нажали кнопку — выделенное отформатировалось.

2. Горячие клавиши

Наведите курсор на кнопку панели — в подсказке показано сочетание клавиш для этого форматирования.

3. Разметка с клавиатуры (для набора без мыши)

Важно: это не полный Markdown. В редакторе сценария включён ограниченный фиксированный набор сокращений (ниже). Заголовки (#), списки (-, 1.), цитаты (>), таблицы, картинки и ссылки через [текст](url) с клавиатуры не работают.

Что превращается в форматирование прямо при наборе:

Набираете Получаете Примечание
**текст** или __текст__ жирный
*текст* или _текст_ курсив
~~текст~~ зачёркнутый
`текст` (обратные кавычки) inline-код оборачивает уже набранный текст
`` (две обратные кавычки) вход в режим кода — дальше печатается кодом выход — одиночная `
==текст== выделение цветом фона внутри нельзя символы = и ~
{{имя}} подстановка параметра тест-кейса

Только мышкой/панелью (с клавиатуры набрать нельзя)

  • Подчёркнутый — в Markdown такого синтаксиса нет, только кнопка панели или горячая клавиша.
  • Цвет текста — только через панель (у заливки фона сокращение == есть, у цвета самого текста — нет).
  • Ссылка — синтаксис [текст](url) не поддерживается. Ссылку ставят кнопкой панели либо вставкой URL из буфера (голый URL автоматически становится ссылкой).
  • Блок кода (code_block) — кнопки в ручном редакторе сценария нет вовсе.

Перенос строки: Enter и Shift+Enter

Enter внутри шага — это не перенос строки, а переход к новому шагу сценария.
Чтобы сделать перенос строки / новый абзац внутри одного шага, используйте Shift+Enter.

При вставке текста из буфера (Ctrl/Cmd+V)

Дополнительно к набору, при вставке срабатывают те же маркеры: **текст**, *текст* / _текст_, ~~текст~~, `текст`, ==текст==, а вставленный URL превращается в ссылку.

Произвольные символы вроде 'текст' или вставленный руками JSON разметкой не являются и останутся обычным текстом.

Полная спецификация формата (для интеграций и API)

Документ всегда начинается с корневого узла:

{ "type": "doc", "content": [ ... ] }

Тип каждого узла задаётся полем type. Неизвестный type на любом уровне тихо игнорируется — документ при этом не ломается.

Блоки (содержимое doc.content)

Блок type Поля
Абзац paragraph content — список инлайн-узлов
Блок кода code_block content + attrs.language (язык подсветки)

Инлайн-узлы (содержимое paragraph.content)

Элемент type Поля
Текст text text + marks (метки форматирования)
Перенос строки lineBreak
Параметр parameter attrs.name, attrs.value

Метки форматирования (массив marks у текста)

Форматирование type метки Доп. поля
Жирныйbold
Курсивitalic
Подчёркнутыйunderline
Зачёркнутыйstrike
Inline-кодcode
Ссылкаlinkattrs.href, attrs.target, attrs.rel
Цвет текстаtext_colorattrs.kind
Цвет фонаtext_fillattrs.kind

Доступные цвета (kind для текста и фона)

default, gray, green, red, violet, orange, yellow, pink, teal.

Пример

Шаг: «Войти как {role} и нажать Сохранить», ниже — команда:

{
  "type": "doc",
  "content": [
    {
      "type": "paragraph",
      "content": [
        { "type": "text", "text": "Войти как " },
        { "type": "parameter", "attrs": { "name": "role", "value": "admin" } },
        { "type": "text", "text": " и нажать " },
        {
          "type": "text",
          "text": "Сохранить",
          "marks": [
            { "type": "bold" },
            { "type": "text_color", "attrs": { "kind": "green" } }
          ]
        }
      ]
    },
    {
      "type": "code_block",
      "attrs": { "language": "bash" },
      "content": [
        { "type": "text", "text": "curl -X POST /api/save" }
      ]
    }
  ]
}

Нюансы

  • Набор форматирования одинаковый для ручного сценария тест-кейса (редактируется) и для сценария результата прогона (только просмотр). Списков и таблиц в шагах нет.
  • Блок кода (code_block) — валидный тип блока: он отображается, если пришёл в данных (например, из загруженных автотестовых результатов), но создать его кнопкой в ручном редакторе нельзя.
  • Поле body у шага (плоский текст без форматирования) — устаревшее представление. Актуальное форматирование живёт в bodyJson.
  • Формат расширяемый: незнакомый type узла или метки игнорируется, а не отвергает весь документ.

Помогла ли вам статья?