Тема
Плагин для VS Code
Плагин DoQA для VS Code умеет то же, что плагин для IntelliJ: показывает над каждым тестом последний прогон, стабильность и привязанный тест-кейс, привязывает и отвязывает кейсы, закрепляет внешний ID, открывает историю прогонов со стеком падения и ставит автотест в карантин. Отличается интерфейс: вместо значков в gutter над тестом стоит строка CodeLens, а меню действий открывается списком быстрого выбора, как палитра команд.
Как установить плагин, описано в разделе VS Code страницы «Плагины для IDE», а где взять персональный API-токен, сказано в разделе Токен. Эта страница про настройку подключения в VS Code и работу с тестами.

Подключение к DoQA
Выполните команду «DoQA: Настроить (адрес, токен, space)» из палитры команд (Ctrl+Shift+P) или щёлкните по «DoQA» в строке состояния. Плагин по очереди спросит три вещи в строке ввода вверху окна:
- «DoQA: адрес сервера»: адрес облака вашей компании или своей установки DoQA, например
https://tenant.doqa.ru. Адрес должен начинаться сhttps://илиhttp://, иначе появится «Введите полный адрес http(s)». - «DoQA: персональный токен»: персональный API-токен из профиля. Токен начинается с
doqa_, другой плагин не примет: «Токен начинается с doqa_». - «DoQA: space по умолчанию»: список пространств, доступных вам. Выберите то, в котором лежат автотесты и кейсы.

После выбора пространства появится уведомление «DoQA: вход выполнен как <почта>.», и плагин сразу загрузит статусы тестов открытого файла. Если пространств нет, будет «DoQA: вход выполнен как <почта>, но доступных space нет.»: попросите администратора добавить вас в нужное пространство.
Адрес и токен сохраняются, только когда введены оба: Esc на шаге токена оставляет прежние настройки. Если вы сменили адрес, пространство по умолчанию сбрасывается: номера пространств у разных установок DoQA свои.
Где хранится токен
Токен хранится в хранилище секретов VS Code, то есть в ключнице операционной системы, и привязан к адресу DoQA. В settings.json он не попадает и через синхронизацию настроек не уходит. Чтобы заменить токен, выполните «DoQA: Настроить» ещё раз.
Строка состояния
Слева в строке состояния плагин показывает пространство открытого файла: «DoQA: space 3684». Подсказка при наведении показывает адрес DoQA и номер проекта. Пока адрес или пространство не заданы, там написано «DoQA: войти» с подсказкой «Укажите адрес DoQA и токен». Щелчок по строке в обоих случаях запускает «DoQA: Настроить».
Баннера «DoQA не настроен» над файлом, как в IntelliJ, в VS Code нет. Команды, которым нужен сервер, без настройки показывают предупреждение, например «DoQA: сначала выполните «DoQA: Настроить» (нужны адрес сервера, токен и space).», а если не задан токен, показывают ошибку «DoQA: Не задан токен DoQA» с кнопкой «Открыть настройки».
Space для папки или рабочей области
«DoQA: Настроить» задаёт пространство по умолчанию для всех проектов. Если тесты одного репозитория отчитываются в другое пространство, укажите его в настройках рабочей области или папки, в файле .vscode/settings.json:
json
{
"doqa.spaceId": 3684,
"doqa.projectId": 812
}Файл с тестами работает с пространством своей папки рабочей области, если оно задано, иначе с пространством рабочей области, иначе с doqa.spaceId из пользовательских настроек, иначе с пространством по умолчанию. doqa.projectId берётся с того же уровня, что и doqa.spaceId: он нужен только для ссылок в веб-интерфейс. Без него плагин работает, но в подсказке не будет ссылок «Кейс в DoQA» и «Автотест в DoQA», а в карточке кейса и истории прогонов не будет ссылки «Открыть в DoQA». Номер проекта виден в адресе страницы DoQA: …/home/detail/<проект>/<пространство>/….
Добавьте .vscode/settings.json в репозиторий, и вся команда получит те же пространства вместе с кодом. Адрес DoQA и токен в этот файл не попадают.
Что видно над тестом
Строка CodeLens
Над строкой с объявлением каждого тестового метода, под его аннотациями, плагин пишет строку CodeLens, например:
text
DoQA: кейс 2403 · пройден · 100% из 21 прогона
DoQA: нет связанных кейсов · провален · 67% из 3 прогонов · нестабильныйПервая часть коротко называет связанные кейсы: те, что связаны с автотестом в DoQA («DoQA: кейс 2403»), а если связей в DoQA ещё нет, то ID из @DoqaCaseIds («DoQA: кейс 15 из @DoqaCaseIds ещё не привязан»). Если каталог по тесту ещё не ответил, там стоит «DoQA: каталог не проверен», «DoQA: ключ вычислит адаптер» или «DoQA: ключ с плейсхолдером». Полная формулировка с пояснениями есть в подсказке над тестом. Дальше идут исход последнего прогона, стабильность и оценка DoQA. Исходы и оценки называются так же, как в веб-интерфейсе DoQA, см. Статусы как в DoQA. У теста, который есть в каталоге, но ни разу не запускался, стоит «ещё не запускался».
Значок в начале строки показывает исход последнего прогона:
| Значок | Что значит |
|---|---|
| кружок с галочкой | последний прогон пройден |
| кружок с крестиком | последний прогон провален |
| треугольник с «!» | последний прогон сломан или заблокирован |
| перечёркнутый круг | последний прогон пропущен |
| пауза | автотест в карантине, исход последнего прогона значок не показывает |
| знак вопроса | DoQA вернул исход, которого плагин не знает |
Тест, который ещё не запускался или которого плагин пока не нашёл в каталоге, показывает строку без значка, только с привязкой.
Щелчок по строке CodeLens открывает меню действий над этим тестом. Как DoQA считает стабильность и карантин, описано на странице Нестабильные тесты и карантин.
Подсказка над тестом
Наведите курсор на объявление теста или на его аннотации, и появится подсказка DoQA. Над телом метода она не показывается.
| Строка | Пример и смысл |
|---|---|
| первые строки | связанные кейсы, см. Связанные кейсы в подсказке |
| «Последний прогон:» | исход, дата и время, ветка; «новый сбой», если до этого тест не падал. У теста без прогонов написано «Ещё не запускался» |
| «Стабильность:» | доля пройденных прогонов, например «67% из 3 прогонов», и через «·» оценка DoQA. Если доли нет, а оценка есть, показано «Оценка DoQA: …» |
| «История, от старых к новым:» | полоса последних прогонов, по значку на прогон, и в скобках расшифровка значков, см. Статусы как в DoQA |
| «В карантине: падения не влияют на гейт» | только у автотеста в карантине |
| «Ключ автотеста:» | внешний ID теста; если плагин не может его вычислить, написано «вычислит адаптер» и причина в скобках |
| «Автотест в DoQA: #…» | номер автотеста в каталоге |
| карточка кейса | номер и название первого привязанного кейса, его статус, приоритет и число шагов; «Ещё кейсов: N», если привязано несколько |
| ссылки | «История прогонов» и «Меню DoQA» открывают историю и меню действий, а «Кейс в DoQA» и «Автотест в DoQA» ведут на страницы в браузере |

Связанные кейсы в подсказке
Первая строка подсказки говорит, какие кейсы связаны с автотестом в DoQA. Если связи в DoQA и ID в @DoqaCaseIds (doqa.case_ids в pytest) расходятся, плагин показывает и то и другое:
| Ситуация | Что написано |
|---|---|
| в DoQA есть связи | «ID связанных кейсов в DoQA: 15, 16» |
связей в DoQA нет, но ID кейсов стоят в @DoqaCaseIds | «ID кейсов в @DoqaCaseIds: 15 (в DoQA ещё не привязаны, привяжутся при следующем прогоне)» |
| связи есть и там и там, но ID различаются | первая строка про DoQA, ниже отдельной строкой «В @DoqaCaseIds: …» |
| связей нет нигде | «Связанных кейсов в DoQA нет» |
Кейсы из @DoqaCaseIds DoQA привяжет сам при следующем прогоне теста: адаптер передаёт их вместе с результатом. Кейсы, которых нет в пространстве, не привязываются и не создаются.
Если плагин не может сопоставить тест с автотестом в DoQA, ниже идёт отдельная строка с причиной:
- «Автотеста ещё нет в каталоге DoQA: он появится после первого прогона»;
- «Каталог DoQA ещё не проверен: связи в DoQA неизвестны», например пока каталог грузится или не выбрано пространство;
- «Ключ автотеста вычислит адаптер при запуске, поэтому связи в DoQA не проверить»;
- «Ключ с плейсхолдером: у каждого набора параметров свой автотест, связи в DoQA не проверить», если в ключе есть плейсхолдер (
@DoqaId("LOGIN-{browser}")).
Пока каталог не проверен, первая строка говорит только о коде: «ID кейсов в @DoqaCaseIds: 15» или «В @DoqaCaseIds кейсов нет». Про связи в DoQA плагин в этом случае ничего не утверждает.
Статусы как в DoQA
Исходы прогонов и оценки DoQA плагин называет так же, как веб-интерфейс DoQA.
Исход прогона в строке «Последний прогон:», в CodeLens и в истории прогонов: «Пройден», «Провален», «Сломан», «Заблокирован», «Пропущен». Внутри строки VS Code пишет их со строчной буквы: «Последний прогон: провален».
Полоса «История, от старых к новым:» повторяет колонку «История» в каталоге автотестов: один значок на прогон, слева старые, справа новые.
| Значок | Прогон |
|---|---|
✓ | Пройден |
✗ | Провален |
! | Сломан или Заблокирован |
· | Пропущен; сюда же попадают прогоны, которые не начинались |
В скобках после полосы плагин расшифровывает только те значки, которые в ней есть, например «✓ пройден, ✗ провален». DoQA отдаёт полосу одной отметкой на сломанные и заблокированные прогоны, поэтому точный статус ! плагин называет, только если такая отметка одна и стоит у последнего прогона: «сломан» или «заблокирован». Для остальных смотрите историю прогонов.
Оценка DoQA после «·» в строке «Стабильность:» и в конце CodeLens: «Нестабильный», «Сломан», «В карантине», «Отключён», «Исправлен». У стабильного автотеста оценка не пишется.
Откуда берутся данные
CodeLens и подсказка читают статусы из кэша плагина и сами за ними в сеть не ходят. Подсказка обращается к DoQA только за карточкой привязанного кейса, если её ещё нет в кэше. Кэш статусов наполняется:
- когда файл с тестами становится активным: при открытии и при переключении на его вкладку;
- при сохранении файла;
- по команде «DoQA: Обновить статусы в файле»;
- в фоне, когда в файле появляется тест, которого кэш ещё не знает: новый тест или только что закреплённый ключ.
Автоматическое обновление работает, пока включена настройка doqa.coverage.autoRefresh. Команда «Обновить статусы в файле» работает всегда.
Кэш хранится на диске, отдельно для каждого сервера и пространства, и переживает правку файла и перезапуск VS Code. Если DoQA недоступен, CodeLens показывает последние известные данные, а в подсказке появляется «DoQA недоступен: данные от ДД.ММ.ГГГГ ЧЧ:ММ». После смены адреса, пространства или токена кэш сбрасывается.
Меню действий над тестом
Все действия над одним тестом собраны в меню DoQA. Его открывают:
- щелчок по строке CodeLens над тестом;
- Ctrl+Shift+Alt+D (в macOS Cmd+Shift+Alt+D), когда курсор в тесте;
- ссылка «Меню DoQA» в подсказке над тестом;
- команда «DoQA: Действия с тестом…» из палитры команд или из подменю DoQA.
Меню открывается списком быстрого выбора с заголовком «DoQA: <имя метода>». В поле ввода можно набрать часть названия действия, Enter выполняет выбранное.

| Действие | Что делает | Когда есть в меню |
|---|---|---|
| «История прогонов» | вкладка с последними прогонами и стеком падения, см. История прогонов | всегда; если ключ не вычисляется, под пунктом пояснение «ключ автотеста не вычисляется из исходника» |
| «Карточка кейса» | вкладка с шагами привязанного кейса | к тесту привязан кейс |
| «Открыть кейс в DoQA» | привязанный кейс в браузере; если кейсов несколько, сначала спросит какой | к тесту привязан кейс |
| «Привязать кейс…» | поиск кейса, @DoqaCaseIds в коде и связь в DoQA | всегда |
| «Отвязать кейс…» | снимает связь в DoQA и убирает ID кейса из аннотации | к тесту привязан кейс |
| «Закрепить ключ (@DoqaId)» | записывает внешний ID в код, см. Закрепление @DoqaId | всегда |
| «Поместить в карантин…» / «Снять с карантина» | ставит автотест в карантин или снимает с карантина | ключ теста вычисляется |
| «Скопировать ключ автотеста» | копирует внешний ID в буфер обмена; сам ключ виден справа от пункта | ключ теста вычисляется |
| «Статус теста» | сводка по тесту в уведомлении, см. Статус теста | всегда |
| «Обновить статусы в файле» | перечитывает каталог для всех тестов файла | всегда |
В файлах pytest пункт закрепления называется «Закрепить ключ (@doqa.id)», а плагин пишет декораторы @doqa.id и @doqa.case_ids вместо аннотаций.
Действия работают с тестом под курсором. Щелчок по CodeLens сам ставит курсор на тест. Если курсор выше первого теста, плагин напишет «DoQA: поставьте курсор внутри тестового метода.».
Подменю DoQA и палитра команд
Те же команды есть ещё в трёх местах:
- в контекстном меню редактора, подменю DoQA;
- в кнопке DoQA в заголовке вкладки редактора;
- в палитре команд: наберите «DoQA».
Подменю и кнопка есть у файлов Java, Kotlin и Python. В подменю и кнопке команды названы без приставки «DoQA:», например «Статус теста», а в палитре с ней. В палитре команды над тестом и файлом видны, только когда открыт такой файл, а «DoQA: Каталог автотестов» и «DoQA: Настроить (адрес, токен, space)» видны всегда.

| Команда | Что делает |
|---|---|
| «DoQA: Действия с тестом…» | меню действий над тестом под курсором |
| «DoQA: Статус теста» | сводка по тесту в уведомлении |
| «DoQA: История прогонов» | вкладка с историей прогонов |
| «DoQA: Карточка кейса» | вкладка с карточкой привязанного кейса |
| «DoQA: Привязать ручной кейс к тесту…» | поиск и привязка кейса |
| «DoQA: Отвязать кейс от теста…» | отвязка кейса |
| «DoQA: Карантин (поместить или снять)» | ставит автотест в карантин или снимает с карантина, смотря по текущему состоянию |
| «DoQA: Закрепить ключ автотеста (@DoqaId / doqa.id)» | закрепление ключа у теста под курсором |
| «DoQA: Создать тест из кейса…» | черновик теста по ручному кейсу, см. Тест из кейса |
| «DoQA: Закрепить ключи всех тестов файла» | закрепление ключей у всех тестов файла без @DoqaId |
| «DoQA: Обновить статусы в файле» | перечитывает каталог для тестов открытого файла |
| «DoQA: Каталог автотестов» | список автотестов пространства, см. Каталог автотестов |
| «DoQA: Настроить (адрес, токен, space)» | адрес, токен и пространство по умолчанию |
В отличие от меню действий, подменю показывает все команды всегда. Если команда к тесту не подходит, она объяснит почему: например, «Карточка кейса» у теста без кейсов ответит «DoQA: к тесту не привязан ни один кейс.».
«Закрепить ключи всех тестов файла» есть и в контекстном меню проводника у файлов .java, .kt и .py, в подменю DoQA.
Результаты приходят уведомлениями VS Code в правом нижнем углу, а короткие сообщения в строке состояния. Модальный диалог появляется, только когда нужен выбор или подтверждение. Правки кода, которые делает плагин, отменяются одним Ctrl+Z.
Статус теста
«Статус теста» перечитывает каталог для теста под курсором и показывает уведомление в одну строку, части разделены «·»:
- связанные кейсы, как в подсказке над тестом, с теми же пояснениями, если автотест не найден в каталоге или ключ не вычисляется;
- «фреймворк:» JUnit 5, JUnit 4, TestNG или pytest;
- «ключ:» внешний ID и в скобках, откуда он взят:
explicit(из@DoqaId),title(номер из названия теста),allure(из@AllureId),signature(хэш сигнатуры),unresolved(плагин ключ не вычислил); - «ключ не вычислен:» и причина, если ключа нет;
- «автотест:» номер автотеста в каталоге, «нет в каталоге» или «не проверен», если каталог по тесту не ответил.
Привязка кейса
- Поставьте курсор в тест и выберите в меню «Привязать кейс…» (в палитре «DoQA: Привязать ручной кейс к тесту…»).
- Откроется список «DoQA: кейс для <имя метода>». Сразу, без ввода, в нём появляются кейсы из верхних папок дерева. Сверху стоят кейсы, похожие на тест по названию: они отмечены звёздочкой и пометкой «похож» рядом с номером, а справа у группы подписано «похожие на тест». Ниже идёт группа «остальные».
- Начните вводить название: список обновляется по мере ввода. Стрелки двигают выбор.
- Нажмите Enter.
Под названием кейса видны папка и статус автоматизации: «ручной», «подлежит автоматизации» или «автоматизирован». Что сейчас происходит, плагин пишет в заголовке списка: «ищу похожие на тест…», «поиск…», «кейсы не найдены», «сверху похожие на тест. Enter — привязать, Esc — закрыть».

Плагин добавляет ID кейса в @DoqaCaseIds над тестом (импорт дописывается сам, существующие ID сохраняются) и создаёт связь в DoQA. Появится уведомление «DoQA: кейс #N «название» привязан к тесту …» с кнопкой «Открыть кейс». Привязка только добавляет связь: прежние связи теста не снимаются.
Похожие кейсы подбираются так же, как в IntelliJ: по словам из @DisplayName, @DoqaTitle, description у TestNG и имени метода, а не по смыслу. Подробнее об этом в разделе Привязка кейса страницы про IntelliJ. Одна особенность VS Code: пока в поле поиска есть текст, VS Code сам сортирует список по совпадению с вводом, и похожие кейсы могут оказаться не сверху. Звёздочка и пометка «похож» у них остаются.
Поиск останавливается на 50 кейсах. Если нашлось больше, в заголовке появится «показаны не все совпадения — уточните запрос».
Что происходит с внешним ID при привязке:
- тест, которого в DoQA ещё нет, привязывается под читаемым ключом, и плагин сразу закрепляет его в
@DoqaId. В уведомлении тогда есть «Ключ автотеста: …»; - тест, который уже есть в каталоге, сохраняет свой ключ. Если это хэш, в уведомлении будет «Ключ автотеста — хэш: переименование теста его сменит.» и кнопка «Закрепить @DoqaId»;
- если ключ по тексту файла не вычислить, плагин предложит выбрать автотест из каталога в списке «DoQA: ключ автотеста, чтобы привязать кейс» или пункт «Ввести ключ вручную…». Выбранный или введённый ключ тоже закрепляется в коде.
Карточка кейса
Карточку привязанного кейса открывает «Карточка кейса» в меню или Ctrl+клик по ID в @DoqaCaseIds (doqa.case_ids в pytest). При наведении на ID видна подсказка «Карточка кейса DoQA #N».
Карточка открывается вкладкой «Кейс #N» рядом с редактором:
- название кейса;
- статус, приоритет, статус автоматизации и путь по папкам;
- «Предусловия»;
- «Шаги» с ожидаемым результатом каждого шага («Ожидается:»);
- «Ожидаемый результат» кейса;
- ссылка «Открыть в DoQA».
Вкладка карточки одна: следующий кейс открывается в ней же. Если к тесту привязано несколько кейсов, команда сначала предложит выбрать один в списке «DoQA: карточка кейса». Когда DoQA недоступен, показывается карточка из кэша с пометкой «DoQA недоступен: показана карточка с последнего обновления.», если плагин уже загружал её раньше.

Отвязка кейса
- Выберите «Отвязать кейс…». Если кейсов несколько, выберите нужный в списке «DoQA: отвязать кейс».
- Подтвердите в диалоге: «Отвязать кейс #N «название» от теста …?». Под вопросом сказано, что будет сделано: «Связь в DoQA будет снята.» и «id уберётся из @DoqaCaseIds.».
- Нажмите «Отвязать».
Плагин сообщит «DoQA: кейс #N отвязан от …». ID убирается и из аннотации: иначе следующий прогон привязал бы кейс снова.

Кейс, записанный в @DoqaCaseIds на классе, для одного теста не отвязать, как и последний ID метода, если свои ID есть у класса: без него адаптер возьмёт ID класса. Плагин объяснит это предупреждением и предложит перенести @DoqaCaseIds с класса на методы или убрать ID с класса. Подробнее об этом в разделе Отвязка кейса страницы про IntelliJ.
Читаемый ключ и закрепление @DoqaId
Закрепление записывает внешний ID в код аннотацией @DoqaId, и дальше тест можно переименовывать и переносить без потери истории. Плагин предлагает читаемый ключ, то есть полное имя теста, например com.example.minibank.tests.CalculatorSmokeTest.multiplicationWorksWithoutAnyMarkup. Зачем это нужно и чем читаемый ключ лучше хэша, описано в разделе Читаемый ключ и закрепление @DoqaId страницы про IntelliJ. Правила выбора ключа в VS Code те же:
| Ситуация | Что делает плагин |
|---|---|
ключ уже читаемый: DOQA-123 из названия теста, ALLURE-42 из Allure | закрепляет его как есть |
| теста в DoQA ещё нет | закрепляет читаемый ключ, в уведомлении будет «Новый тест: в DoQA его ещё нет, поэтому ключ читаемый.» |
| тест уже есть в DoQA под хэшем | спрашивает, что закрепить (см. ниже) |
| читаемый ключ уже занят другим автотестом | просит ввести другой ключ в строке «DoQA: @DoqaId», по умолчанию предлагает <ключ>-2 |
| ключ по тексту файла не вычислить | предлагает выбрать автотест из каталога или ввести ключ, по умолчанию читаемый |
у теста уже есть @DoqaId | ничего не пишет: «DoQA: @DoqaId уже стоит: …» |
@DoqaId стоит на классе | ничего не пишет: «DoQA: ключ задан на классе (…), под ним отчитываются все тесты класса. Чтобы закрепить ключ у отдельного теста, уберите @DoqaId с класса.» |
Когда тест уже есть в DoQA под хэшем, появляется модальный диалог «DoQA: @DoqaId»: «Тест уже есть в DoQA под ключом-хэшем (автотест #N). Читаемый ключ заведёт новый автотест: история прогонов останется у старого, привязки кейсов плагин перенесёт.» Ниже показаны оба ключа: «Читаемый ключ:» и «Текущий ключ:».
- «Сохранить историю» (основная кнопка, выделена цветом): закрепить текущий ключ-хэш. История остаётся, но ключ нечитаемый.
- «Читаемый ключ»: закрепить читаемый ключ. Привязки кейсов плагин переносит на новый ключ и сообщает: «DoQA: кейсы #… привязаны к новому ключу …. История прогонов осталась у автотеста #N. Ctrl+Z вернёт ключ в коде, но не привязки в DoQA.».
- «Cancel»: ничего не менять.
Если плагин не настроен, он не может проверить каталог. Тогда в диалоге другой текст: «Каталог DoQA не проверен: плагин не настроен. Если тест уже запускался, читаемый ключ заведёт новый автотест, и история прогонов останется у старого.», и основной становится кнопка «Читаемый ключ».
После записи появляется уведомление «DoQA: закреплено @DoqaId("…"). Отменить — Ctrl+Z.».

Весь файл
«DoQA: Закрепить ключи всех тестов файла» проставляет ключи всем тестам файла без @DoqaId, у которых ключ вычисляется. Команду можно вызвать и из контекстного меню файла в проводнике. Тесты, которых в DoQA нет, получают читаемый ключ, тесты с историей сохраняют текущий. Перед записью плагин один раз спрашивает подтверждение, например: «Проставить @DoqaId у 5 тест(ов): читаемый ключ — у 3 (в DoQA их ещё нет); текущий ключ — у 2 (сохраняется история прогонов).», кнопка «Закрепить». Если плагин не настроен и каталог не проверить, везде записываются текущие ключи, о чём сказано в том же диалоге. Если DoQA ответил ошибкой, плагин покажет её и ничего не запишет.
Если закреплять нечего, плагин ответит «DoQA: закреплять нечего — у всех тестов файла уже есть @DoqaId или ключ не вычисляется.».
История прогонов
«История прогонов» открывает рядом с редактором вкладку «DoQA: история — <имя метода>» с последними 30 прогонами автотеста. Вкладку можно держать открытой рядом с кодом, пока чините тест. Для каждого автотеста вкладка своя: повторная команда выводит её вперёд со свежими данными.
- Сверху показаны имя метода, кнопка «Открыть в DoQA» и сводка: стабильность, оценка DoQA, «В карантине» и полоса последних прогонов с расшифровкой: «История: ✗ (✗ провален)».
- Таблица: «Результат», «Прогон», «Когда», «Ветка», «Окружение», «Длительность». В колонке «Результат» статус прогона: «Пройден», «Провален», «Сломан», «Заблокирован» или «Пропущен». Прогон, который DoQA отметил как нестабильный, помечен «нестабильный». Если прогонов больше 30, под таблицей написано «Показаны последние 30 из N.».
- Ниже показан выбранный прогон: заголовок с номером, попыткой, исходом, временем, веткой, коммитом и окружением, затем сообщение об ошибке и стек. У пройденного прогона вместо ошибки написано «Прогон пройден.».
- При открытии выбран последний проваленный или сломанный прогон. Другой прогон выбирается щелчком по строке или стрелками.
Строки стека вида FlakyTransferTest.java:83 работают как ссылки: щелчок открывает файл из рабочей области на этой строке. Если файлов с таким именем несколько, плагин выберет тот, чей путь совпадает с пакетом из стека, а если не сможет выбрать, спросит в списке «DoQA: какой … открыть». Если файла нет, появится «DoQA: файла … в рабочей области нет.».

Если автотеста ещё нет в каталоге, плагин напишет «DoQA: автотеста … ещё нет в DoQA: он появится после первого прогона.». Если у теста ключ с плейсхолдером (@DoqaId("LOGIN-{browser}")), у каждого набора параметров свой автотест, и история для теста целиком недоступна.
Версия DoQA
История, отвязка кейса и карантин работают, только если сервер DoQA принимает для этих запросов персональный API-токен. На сервере, где это ещё не так, плагин напишет, что сервер DoQA пока не принимает API-токен для истории прогонов (отвязки, карантина) и эта возможность появится после обновления DoQA. Токен при этом в порядке, менять его не нужно. Подробнее в разделе Ограничения.
Карантин
- Выберите в меню «Поместить в карантин…».
- В строке ввода «DoQA: карантин — <имя метода>» при желании укажите причину: «Падения автотеста в карантине не влияют на гейт качества. Причина (необязательно):». Причину можно не писать.
- Нажмите Enter. В строке состояния появится «DoQA: <имя метода> в карантине.», значок в CodeLens сменится на паузу, а в конце строки появится «В карантине».
Esc отменяет постановку в карантин.

Если автотест уже в карантине, пункт меню называется «Снять с карантина» и спрашивает в модальном диалоге: «Снять … с карантина? Его падения снова будут влиять на гейт.», кнопка «Снять». В палитре обе операции собраны в одну команду «DoQA: Карантин (поместить или снять)».
Плагин не передаёт ветку: карантин ставится и снимается для автотеста целиком. Что карантин меняет, описано на странице Нестабильные тесты и карантин.
Каталог автотестов
«DoQA: Каталог автотестов» ищет автотесты пространства открытого файла:
- В строке «DoQA: каталог автотестов» введите часть названия или ключа автотеста либо оставьте поле пустым, чтобы увидеть все. Нажмите Enter.
- Откроется список «DoQA: автотесты (всего N)», в нём до 100 автотестов. В строке показано название автотеста, справа ключ («(без ключа)», если его нет), ниже «ID связанных кейсов в DoQA: …» или «Связанных кейсов в DoQA нет». Ввод текста дальше фильтрует список по названию, ключу и кейсам.
- Enter на автотесте с кейсом открывает первый привязанный кейс в браузере. У автотеста без кейсов Enter просто закрывает список.
Если пространство не выбрано, плагин сначала попросит ввести его номер: «Space не выбран. Введите его номер или выполните «DoQA: Настроить».». Если по запросу ничего не нашлось, плагин напишет «DoQA: автотестов по этому фильтру нет.».

Полный каталог с фильтрами, стабильностью и массовыми действиями есть в веб-интерфейсе, см. Каталог автотестов.
Тест из кейса
«DoQA: Создать тест из кейса…» пишет в открытый файл черновик автотеста по ручному тест-кейсу: название кейса, привязку к нему, внешний ID, предусловия и шаги комментариями. Тест выключен, пока вы не напишете проверку.
- Откройте файл с тестами (
.java,.ktили.py) и поставьте курсор на пустую строку между тестами, туда, где нужен новый тест. - Выполните «DoQA: Создать тест из кейса…» из палитры команд или подменю DoQA.
- В списке «DoQA: тест из кейса» начните вводить название кейса, выберите кейс стрелками и нажмите Enter.
Плагин вставит черновик, поставит курсор на объявление теста и покажет уведомление «DoQA: черновик из кейса #N вставлен. Реализуйте шаги и включите тест. Отменить — Ctrl+Z.». Вся вставка вместе с импортами отменяется одним Ctrl+Z.

Черновик в VS Code такой же, как в IntelliJ. Какая разметка пишется для JUnit 5, JUnit 4, TestNG и pytest, как называется метод и куда встаёт черновик, описано в разделах Что попадает в черновик и Куда вставляется черновик.
Дополнение тегов и меток
Внутри строки в @DoqaTags и @DoqaLabels (в pytest в doqa.tag и doqa.label) плагин предлагает теги и метки, которые уже есть у автотестов в каталоге пространства. Список открывается сам сразу после открывающей кавычки, вызвать его вручную можно сочетанием Ctrl+Space. У каждого варианта подписано «тег DoQA» или «метка DoQA». В @DoqaTags предлагаются только теги, а в @DoqaLabels только метки.

Список тегов и меток плагин загружает при первом дополнении из первых 200 автотестов пространства и обновляет не чаще раза в 10 минут. Если DoQA недоступен или в каталоге нет ни одного тега и метки, плагину нечего предложить. Чем теги отличаются от меток, описано на страницах адаптеров, например Адаптер JUnit 5.
Проверка doqa.properties
В файле doqa.properties плагин подчёркивает строки, которые JVM-адаптер DoQA прочитал бы не так, как вы ожидаете. Текст предупреждения виден при наведении на подчёркнутое место и в панели Problems (Ctrl+Shift+M) с источником «DoQA».

Проверки и тексты предупреждений те же, что в IntelliJ. Полная таблица есть в разделе Проверка doqa.properties. Несколько отличий VS Code:
- отдельный плагин для
.propertiesне нужен: проверка работает в любом файле с именемdoqa.properties; - токен считается закоммиченным, если файл уже добавлен в git (плагин спрашивает
git ls-files). Для этого в системе должен быть git. Проверка повторяется при сохранении файла; - на месте ключа плагин предлагает ключи, которых в файле ещё нет, с коротким описанием, а после
=или:подсказывает допустимые значения:true/falseдля флагов,selective,existingиnewдляadapterMode,auto,api,filesиoffдляreporting.
Повторяющийся внешний ID
Если у двух тестов одинаковый @DoqaId (в pytest @doqa.id), DoQA сочтёт их одним автотестом и смешает их прогоны. Плагин подчёркивает значение аннотации у каждого из таких тестов: «Ключ «…» повторяется (…): DoQA сочтёт тесты одним автотестом». В скобках перечислены другие тесты этого файла с тем же ключом («у имяМетода») и другие файлы, где он встречается («в ИмяФайла.java»).
Чтобы исправить повтор, поставьте курсор на подчёркнутое значение, нажмите Ctrl+. (или щёлкните по лампочке) и выберите «DoQA: заменить на «…»». Плагин запишет вместо повторяющегося ключа читаемый: полное имя теста. Этого варианта нет, если у теста уже стоит его читаемый ключ или ключ задан на классе: тогда поменяйте ключ у другого теста или впишите свой.

Повторы в других файлах плагин находит после того, как в фоне прочитает файлы рабочей области (кроме node_modules, build, target, .venv и подобных каталогов). Сравниваются ключи файлов, которые отчитываются в одно пространство: одинаковый ключ в разных пространствах означает два разных автотеста. Выключить эту проверку в настройках нельзя.
Смена ключа у существующего автотеста
Если автотест с этим ключом уже есть в DoQA, новый ключ станет новым автотестом, и история прогонов останется у старого. Меняйте ключ у того теста, который появился позже.
Настройки
Настройки плагина находятся в File → Preferences → Settings (Ctrl+,), в поиске наберите «doqa». Адрес, пространство и проект по умолчанию удобнее задавать командой «DoQA: Настроить»: она записывает их в пользовательские настройки.

| Настройка | Что задаёт | Где действует |
|---|---|---|
doqa.baseUrl | адрес DoQA, например https://tenant.doqa.ru. Если значение пустое, плагин не настроен | пользователь, рабочая область |
doqa.defaultSpaceId | пространство по умолчанию; выбирается в «DoQA: Настроить». При 0 пространство не выбрано | пользователь, рабочая область |
doqa.defaultProjectId | проект пространства по умолчанию, нужен только для ссылок в веб-интерфейс; заполняется сам | пользователь, рабочая область |
doqa.spaceId | пространство для тестов этой папки или рабочей области; перекрывает пространство по умолчанию. При 0 пространство не задано | пользователь, рабочая область, папка |
doqa.projectId | проект, к которому относится doqa.spaceId на том же уровне; нужен только для ссылок | пользователь, рабочая область, папка |
doqa.coverage.autoRefresh | подтягивать статусы тестов из DoQA при открытии и сохранении файла; включено по умолчанию | пользователь, рабочая область, папка |
Токена среди настроек нет: он хранится в ключнице ОС, см. Где хранится токен.
Отличия от плагина для IntelliJ
Функции у плагинов одни и те же, а интерфейс устроен по-разному:
| IntelliJ | VS Code | |
|---|---|---|
| Статус теста | значок в gutter | строка CodeLens над тестом |
| Подсказка | при наведении на значок | при наведении на объявление или аннотации теста |
| Меню действий | попап у значка, кнопка в тулбаре, Tools → DoQA, Alt+Enter | список быстрого выбора по щелчку на CodeLens или Ctrl+Shift+Alt+D, подменю DoQA, палитра команд |
| История прогонов, карточка кейса | всплывающие окна | вкладки рядом с редактором |
| Space проекта | .idea/doqa.xml, отдельно для модулей | doqa.spaceId в .vscode/settings.json, отдельно для папок рабочей области |
| Плагин не настроен | баннер над файлом | «DoQA: войти» в строке состояния |
| Обновление статусов | при открытии файла | при открытии, переключении на вкладку и сохранении файла |
| Каталог автотестов | первые 200 автотестов, Enter без кейса копирует ключ | поиск на сервере, до 100 автотестов, Enter без кейса закрывает список |
| Быстрые действия Alt+Enter | привязать кейс, закрепить ключ, открыть кейс | нет; Ctrl+. только исправляет повторяющийся ключ |
Проверка doqa.properties | нужен плагин Properties | работает сразу, для проверки токена нужен git |
| Повторяющийся ключ | инспекцию можно выключить | проверка всегда включена |
Ограничения
Ограничения плагина для IntelliJ относятся и к VS Code: плагин читает текст файла, не видит наследования из других файлов, в pytest знает только сам файл и конфигурацию pytest, поиск кейсов останавливается на 50 результатах. Полный список приведён в разделе Ограничения страницы «Помощь в редакторе и черновики тестов».
Что есть только в VS Code:
- CodeLens и подсказки есть только у файлов на диске. У несохранённого нового файла и файлов из других источников (например, сравнение версий в git) строк CodeLens нет.
- Похожие кейсы сверху только до начала ввода. Пока в поле поиска есть текст, VS Code сортирует список сам, см. Привязка кейса.
- Для ссылок в веб-интерфейс нужен номер проекта. Если
doqa.spaceIdзадан вручную безdoqa.projectId, ссылок «Кейс в DoQA», «Автотест в DoQA» и «Открыть в DoQA» не будет. - Пока нет баннера «DoQA не настроен» над файлом, проверки «кейс устарел» и панели с деревом покрытия.
Смотрите также
- Плагины для IDE: установка плагина и персональный токен
- Работа с тестами в IntelliJ: тот же набор функций в IntelliJ IDEA и PyCharm
- Помощь в редакторе и черновики тестов: разметка черновика, проверки
doqa.properties, общие ограничения - Автотесты: что такое внешний ID и как DoQA опознаёт автотест
- Каталог автотестов: тот же каталог в веб-интерфейсе
- Нестабильные тесты и карантин: как DoQA определяет стабильность и что делает карантин