| Перенос тест-кейсов из Яндекс Трекера в Allure TestOps одной командой с Cursor + MCP |
| 06.04.2026 00:00 |
|
Автор: Олег Малышев, телеграмм-канал автора про QA,QA Auto, AI, Вайбкодинг Всем привет! Я один из лидеров стека тестирования в компании ТехВилл. Продолжаем разговор про то, как применять AI в работе так, чтобы он реально экономил время. В прошлой статье я рассказывал, как мы внедряем AI-ревью ручных тест-кейсов. А сегодня --ещё один не самый типичный кейс для Cursor: перенос тест-кейсов из Яндекс Трекера в Allure TestOps буквально одной командой. Проблема: тест-кейсы живут в ЯТ, а должны жить в TestOpsИсторически так сложилось, что одна большая команда вела все свои тест-кейсы и чек-листы в Яндекс Трекере. А дальше случилось неизбежное: появилась потребность перевести всё в Allure TestOps, потому что:
Но был нюанс: старых кейсов и чек-листов накопилось много. Переносить руками — это очень много рутинной работы для QA, которую никак не хотелось заставлять их делать. Поэтому идея была такая: перенести всё быстро, без ручной копипасты, при помощи ИИ. План: Cursor + два MCP + пара промптов План выглядел подозрительно простым:
Сказано — сделано. Как устроены исходные данные в ЯТВ задаче Яндекс Трекера тест-кейсы/чек-листы хранились в таблице (в секции «Тестирование») примерно в таком формате:
Мы договорились о простом маппинге:
Project rule: парсим ЯТ и готовим JSON под TestOpsДальше я сделал project rule, в котором описал, как именно нужно распарсить таблицу и в каком JSON формате вернуть результат. Файл назвал Ты — ассистент QA Automation/аналитика тестов. Твоя задача: из задачи Яндекс Трекера по ключу {ISSUE_KEY} извлечь из description раздел «Тестирование» (таблица) и подготовить структурированные данные для переноса в Allure TestOps. Вход {ISSUE_KEY} — ключ задачи (например, LKP-3260). Что нужно сделать Получи задачу через API/инструмент issue_get с include_description=true. Получи связанные задачи через API/инструмент issue_get_links. В поле description найди блок раздела «Тестирование». Он начинается строкой — Тестирование и содержит таблицу в формате: начало таблицы: строка #| затем строки || и заголовки колонок таблица заканчивается строкой |# Распарси таблицу и извлеки все строки тестов: Колонки: «Критерий приемки», «Тест». Все остальные колонки и их значения (например: «Итог приемки», «Результат», «Комментарий») — ПОЛНОСТЬЮ игнорируй и НИКУДА не переноси (не в заголовки, не в шаги, не в ссылки). Учитывай, что в таблице могут быть объединённые ячейки (визуально merged): Если в строке колонка «Критерий приемки» пустая, используй последнее непустое значение выше (наследование значения). Аналогично можно сделать для других колонок при необходимости (обычно достаточно только для «Критерий приемки»). Сгруппируй результаты по критерию приемки: Для каждого критерия создай структуру: title: текст критерия (это будет заголовок тест‑кейса в TestOps) БЕЗ ведущей нумерации (например, «Обновление признака is_extremal в ЛК»). Если критерий содержит префикс Нормализуй текст критерия так же, как шаги: plain text без разметки (markdown/HTML), без лишних пробелов/пустых строк. Если в критерии несколько строк — склей в одну строку через пробел. steps: список шагов из колонки «Тест» для всех строк, относящихся к этому критерию. Нормализуй шаги: Убирай лишние пробелы, повторяющиеся пустые строки. Переноси шаги в Allure TestOps БЕЗ разметки: итоговые строки Требования к преобразованию «Тест» → plain text: — Удали/раскрой markdown‑форматирование: — Ссылки markdown вида — Списки ( Важно: если в колонке «Тест» встречаются фрагменты, относящиеся к другим колонкам (PASS/FAIL/BLOCK, чекбоксы, комментарии, ссылки вида Удаляй явную нумерацию из начала строк шага, если она есть (например, Важно: НЕ добавляй в шаги/описание строку вида «Источник: {ISSUE_KEY}...». Ссылки на задачи нужно добавлять в Allure TestOps в раздел «Ссылки» (External links), а не переносить текстом в описание. Важно про связанные задачи: — В Allure TestOps в разделе «Ссылки» нужно добавить ссылку на исходную задачу — Порядок ключей обязателен: первым всегда Правило именования ссылок (чтобы источник был первым в списке «Ссылки»): — Для исходной задачи — Для связанных задач используй Верни результат строго в JSON следующего вида (без лишнего текста): { “issueKey”: “{ISSUE_KEY}”, “linkIssueToTestOps”: { «field»: «Ссылки», “keys”: [“{ISSUE_KEY}”, “<LINKED_ISSUE_KEY_1>”, “<LINKED_ISSUE_KEY_2>”] }, “testops”: [ { «name»: «<Критерий приемки>», “steps”: [ «<Шаг 1 из колонки Тест без нумерации, plain text>», «<Шаг 2 из колонки Тест без нумерации, plain text>» ] } ] } Примечания и проверки качества В testops[] должны попасть все критерии из таблицы «Тестирование», а не только первый. Если таблица «Тестирование» отсутствует — верни JSON с пустым массивом testops и полем error с объяснением. Если встречаются несколько таблиц «Тестирование» (например, для разных контуров) — извлеки каждую и добавь поле environment (например, stage, test) если его можно определить из текста рядом с таблицей. Command: /move — переносим тест-кейсы по одному или пачкойДальше я сделал команду, которую назвал
Ниже промпт для самой команды: Перенеси тест-кейсы из Яндекс Трекера в Allure TestOps, строго следуя project rule ## Вход На вход я дам одно из: - Ссылку на задачу Яндекс Трекера (или несколько ссылок) - Ключ(и) задач (например, - Плюс вложенные скриншоты (если нужно уточнить детали формулировок/контекста) ## Что нужно сделать Сделай перенос по шагам: 1) Поддержи перенос по нескольким задачам сразу. Пример запуска: 2) Извлеки список 3) Для каждого - через MCP Яндекс Трекера получи задачу ( - сгенерируй JSON строго по - перенеси результат в Allure TestOps через MCP 4) Если MCP Allure недоступен/ошибается для какой-то задачи — не выдумывай: в JSON этой задачи добавь поле ## Выход (строго) Верни: 1) Если передана одна задача — один JSON по 2) Если передано несколько задач — JSON-массив, где каждый элемент соответствует формату 3) Если в процессе были проблемы с Allure MCP для элемента — добавь в этот элемент поле MCP Яндекс Трекера: конфигЧтобы всё это взлетело, у нас должны быть подключены и настроены MCP:
Пример "yandex-tracker": { "command": "uvx", "args": [ "yandex-tracker-mcp@latest" ], "env": { "TRACKER_TOKEN": ваш токен, "TRACKER_ORG_ID": id организации } } Как этим пользуется QAQA-инженеру нужно сделать ровно одну вещь: выполнить команду с ключами задач. Например:
LKP это номера задач, откуда нужно перенести тест-кейсы, а 190 это проект в тест-опсе куда надо перенести. Результат: тест-кейсы появились в TestOps + проставлены ссылки на задачиПосле запуска перенос происходит ожидаемо:
Как вы понимаете, кейсов для такого переноса может быть много. Например, можно преобразовать в нужный формат документацию из каких-нибудь задач в Jira и перенести её в Confluence с помощью MCP Jira и MCP Confluence или наоборот. Также можно было бы написать промпт, который итеративно перенёс бы тест-кейсы со всех задач из ЯТ в TestOps, сэкономив QA ещё больше времени на этой рутинной работе. Но мы решили, что перенести тест-кейсы вообще со всех задач нам пока не нужно. Если вам понравилась статья дайте знать и мы выложим продолжение. |