Контекст выполнения и окружение
В Complex QA окружение — это не одна строка в поле бага и не произвольный комментарий к прогону. Это согласованный набор условий, в которых тестировщик выполнял работу или в которых был найден дефект.
Ниже — концепция модели и то, что уже доступно в интерфейсе (раздел Контекст выполнения в проекте).
Зачем это нужно
Без фиксированного контекста теряется воспроизводимость: «баг на стейдже» через полгода не отвечает на вопросы, какой браузер, какая сборка и какой URL имелись в виду. Контекст связывает ручное тестирование, результаты прогонов и баги одним языком: одни и те же оси окружения, а не разные свободные поля в каждой сущности.
Два слоя: справочник и снимок
Справочники — общие «оси» окружения: браузер, ОС, разрешение экрана, класс устройства, локаль, целевая среда развёртывания. Часть значений поставляется сервисом; проект может добавлять свои записи.
Снимок контекста выполнения (execution_context) — запись о том, что именно было в момент события: выбранные пункты справочников, хост, базовый URL, протокол, версия сборки в снимке. История не должна «плыть», если позже переименуют пункт каталога: в API отдаётся гидрированное значение (объект справочника), а не только ID.
Оси окружения (справочники)
| Ось | Поле в снимке | Примеры значений |
|---|---|---|
| Браузер | browser_context_id | Chrome, Firefox, Safari, … |
| ОС | os_context_id | Windows, macOS, Linux, Android, iOS |
| Разрешение экрана | screen_resolution_context_id | 1920×1080, 390×844, … |
| Устройство | device_context_id | Desktop, Mobile, Tablet |
| Локаль | locale_context_id | ru-RU, en-US, … |
| Среда развёртывания | deployment_target_context_id | staging, production, preview, … |
Справочники общие для сервиса (не привязаны к project_id при поиске в селекте). В снимке контекста при этом хранится project_id — снимок принадлежит проекту.
Дополнительные текстовые поля снимка:
| Поле | Назначение |
|---|---|
context_title | Краткое имя снимка (заголовок) |
context_description | Описание (HTML) |
protocol | HTTP или HTTPS |
host | Хост без схемы |
base_url | Полный базовый URL |
build_version | Версия сборки в момент снимка |
Интерфейс: раздел «Контекст выполнения»
Доступ из карточки проекта и бокового меню проекта.
Listing (список)
- Таблица снимков текущего проекта.
- Создать — новая пустая запись в проекте.
- Редактирование в ячейках (в т.ч. оси окружения через reference-селекты).
- Переход в детали по клику на строку.
Детали снимка
- Редактируемый заголовок (
context_title). - Вкладка Details: pivot-таблица полей + блок описания.
- Оси окружения — выпадающие справочники с поиском (live search по имени
context_name). - Действия: Клонировать (копия снимка), Удалить.
При сохранении поля со ссылкой на справочник отображается человекочитаемое имя, не голый ID. Пока идёт запрос на сервер, таблица показывает индикатор загрузки.
Reference-селекты
- Пустой поиск загружает полный каталог оси (с кешированием на клиенте для повторных открытий).
- Ввод текста — фильтр на бекенде (
LIKEпоcontext_name). - Значение «Не назначено» — очистка связи (
null).
Где используется контекст
| Сущность | Сейчас | План |
|---|---|---|
| Снимок в проекте | Listing + детали, CRUD | — |
| Результат тест-рана | В модели данных | Привязка в UI |
| Баг | Отдельные поля версий продукта | Ссылка на снимок воспроизведения |
| Автотесты | Те же справочники в API | Заполнение runner при старте |
Тестовые аккаунты остаются отдельной сущностью; снимок может ссылаться на учётную запись, когда это будет включено в сценарии прогона.
Версии продукта vs окружение
Версия сборки в баге (bug_build_version, affected/fixed) — про релиз продукта.
build_version в снимке — что было зафиксировано в окружении в момент события.
Поля не дублируют справочники браузера/ОС.
Чего ждать дальше
- Пресеты («типовой desktop Chrome на staging»).
- Привязка снимка к failed результату и создание бага с переносом контекста.
- Проектные дополнительные атрибуты в снимке.
- Интеграция с CI и автозаполнение из runner.
См. также
| Версия | 1.1 |
| Последнее изменение | 2026-06-13 |