12 KiB
Ручной regression checklist
1. Назначение
Этот документ фиксирует post-integration baseline для Community UI, auth, secrets и REST/MCP slices.
Цель:
- дать воспроизводимый regression pass после крупных вертикальных срезов;
- отделить автоматический baseline от ручного smoke на стенде;
- не заставлять следующего агента заново собирать сценарии по всему проекту.
2. Автоматический baseline
Локальный regression baseline на 2026-04-07:
cargo check --workspace-> passed;cd apps/ui && npm run e2e->11 passed;- e2e стек поднимает:
postgres;admin-api;mcp-server;- локальный UI proxy.
Покрытые автоматикой сценарии:
- login;
- operations catalog;
- agents;
- api keys;
- logs;
- usage;
- workspace/settings;
- wizard;
- REST draft/test/publish flow.
3. Когда запускать этот pass
Запускать обязательно после изменений в:
- auth/session;
- workspace switching;
- operations/wizard;
- agents;
- secrets/auth profiles;
- MCP transport;
- deploy routing/UI routes.
4. Обязательные команды перед ручным проходом
cargo check --workspace
cd apps/ui && npm run e2e
Если одна из команд не проходит, ручной regression pass не считается завершенным.
5. Ручной smoke checklist
5.1. Auth и shell
- открыть
/login; - проверить, что страница не зацикливается на redirect;
- проверить invalid login;
- войти bootstrap admin-пользователем;
- убедиться, что после входа открывается
/; - проверить logout;
- войти повторно;
- проверить header identity;
- проверить language switch;
- проверить workspace switch в navbar.
5.2. Operations
- открыть
/; - убедиться, что demo operations загружены;
- проверить search;
- проверить protocol/category/agent filters;
- открыть edit существующей operation;
- убедиться, что delete доступен только never-published Draft, а Published предлагает archive с подтверждением;
- открыть одну Operation в двух вкладках, сохранить обе и проверить, что вторая получает localized stale recovery без потери local edits;
- проверить success/error toasts;
- проверить clean routes без
/html/....
5.3. Wizard
- открыть
/wizard/; - убедиться, что доступна только
RESTprotocol card; - для нового upstream проверить режимы auth:
No authUse existing auth profileCreate auth profile now
- создать quick secret из wizard;
- создать quick auth profile из wizard;
- сохранить upstream;
- убедиться, что
execution_config.auth_profile_refпопадает в draft/test flow; - проверить sample upload;
- проверить YAML export/import;
- проверить
Test run; - проверить, что Test run показывает безопасные Request ID и Trace ID с copy controls;
- проверить
Publish, затем edit: Published vN остаётся неизменной, новая правка становится Draft vN+1; - экспортировать Published vN как YAML v2, выполнить semantic no-op и changed upsert; previous Published Version не должна меняться;
- архивировать Operation и проверить, что существующий published Agent по-прежнему list/call pinned vN, а новая binding отклоняется.
5.4. Agents
- открыть
/agents; - проверить cards и lifecycle badges;
- открыть drawer;
- проверить bindings;
- создать или обновить agent;
- проверить publish/unpublish/archive flow;
- проверить copy MCP endpoint.
5.5. API Keys
- открыть
/api-keys; - создать MCP client key;
- убедиться, что raw key показывается один раз;
- проверить copy;
- закрыть reveal modal и убедиться, что raw key очищен из интерфейса;
- проверить revoke и убедиться, что существующая MCP session теряет доступ без restart;
- проверить delete revoked key: metadata остаётся со статусом
deleted, raw/hash не отображаются; - создать approval key с
allowed_origins; - проверить, что approval запрос с чужим
Originотклоняется. - создать Operation с human approval, вызвать Tool дважды с одинаковыми аргументами и разными control-token: должна остаться одна pending заявка;
- убедиться, что pending approval summary показывает Agent/Operation Version, expiry и безопасные параметры без raw token/secret;
- подтвердить заявку и повторить approve: второй запрос должен вернуть terminal status без повторного upstream side effect.
- проверить
last_used_atпосле реального machine-auth вызова при необходимости.
5.6. Secrets
- открыть
/secrets; - проверить list/create/rotate/delete;
- создать:
token;username_password;header;generic;
- убедиться, что plaintext не возвращается после create/rotate;
- проверить usage references через auth profiles;
- проверить, что удаление Secret, используемого Auth Profile, возвращает
409 secret_referenced_by_auth_profile; - проверить, что rotation Secret меняет credential для следующего Wizard Test run без изменения Auth Profile/Operation refs;
- проверить audit/log evidence: нет plaintext, ciphertext, hash или raw key;
- проверить, что wizard quick-create синхронизируется с этой страницей.
5.7. Logs и Usage
- открыть
/logs; - проверить loading/error/empty states;
- проверить фильтры period, explicit UTC window, status, outcome group, level/search и кнопку Load more;
- открыть detail expansion и убедиться, что видны Request ID, Trace ID и точная Operation Version, но нет raw секретов;
- экспортировать CSV из Logs и проверить, что выбранные фильтры применились без page-limit обрезки;
- открыть
/usage; - проверить summary cards;
- проверить timeline chart;
- проверить outcome groups
success,upstream,client,schema,crank; - проверить server-side CSV export из
/usage/export.csv, а не client-side snapshot браузера.
5.8. Workspace и Settings
- открыть
/workspace-setup; - проверить редактирование имени, slug, описания и цвета единственного workspace;
- проверить, что интерфейса приглашений, ролей и управления пользователями нет;
- проверить export workspace;
- проверить, что delete workspace не отображается;
- открыть
/settings; - проверить profile update;
- проверить password change.
5.9. Getting Started: протокол usability для пяти участников
Этот протокол является планом сбора ручного evidence, а не заявлением о пройденном исследовании. Выполнять его на пяти независимых участниках с fresh self-hosted installation и отдельным новым Admin account для каждого прогона. Участнику нельзя помогать документацией, исходным кодом, поиском по репозиторию или подсказками оператора; разрешён только сам продукт и нормальное MCP client окружение.
Для каждого участника:
- запустить таймер с первого authenticated рендера protected Admin UI;
- использовать Getting Started, создать manual REST Operation, выполнить test, publish, создать/publish Agent и один MCP client key;
- сохранить key только через one-time reveal , выполнить публичные
initialize,notifications/initialized,tools/list,tools/callпо canonical endpoint; - остановить таймер после server-authoritative
first_callс Agent/key/Tool, Request ID и Trace ID в snapshot/Invocation History; - проверить, что refresh/resume не раскрывает raw key, а revoke предлагает deliberate recovery без автоматического создания дубликата;
- зафиксировать завершение, duration, все recovery/error states и факт eligibility отдельно от completion. Не записывать bearer, payload, URL частного контура или скриншоты с секретами.
Цель — median времени от первого authenticated render до authoritative first
call не более 15 минут. Незавершивший участник цензурируется на 30-й минуте, но
остаётся в conversion denominator; eligibility denominator и completion
numerator публикуются раздельно. До фактического пятиучастникового запуска
результат этого протокола остаётся not_run, а не pass.
6. Protocol smoke pass
Для smoke-проверки MCP использовать готовый public target из public-smoke-targets.md.
Обязательный кейс:
- REST: Frankfurter examples
7. Acceptance criteria
Regression pass считается завершенным, если одновременно выполнены условия:
cargo check --workspacepassed;- Playwright suite passed;
- login/shell/manual navigation не ломаются;
Secrets -> Auth Profiles -> Wizard -> Test runсвязка работает;- public REST smoke target проходит;
- нет критичных UI regressions на clean routes, i18n и auth redirects.
8. Если что-то падает
- сначала фиксировать failing automated spec;
- потом чинить ручной smoke regression;
- после фикса повторять:
cargo check --workspace;cd apps/ui && npm run e2e;
- только потом фиксировать результат в текущем рабочем трекере.