chore: publish clean community baseline
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
# Authenticated Staging Pass
|
||||
|
||||
## 1. Назначение
|
||||
|
||||
Этот документ описывает тот кусок Community staging smoke, который нельзя честно закрыть одними `curl` и unauthenticated route checks.
|
||||
|
||||
Он покрывает:
|
||||
|
||||
- login/logout;
|
||||
- UI shell после входа;
|
||||
- `Secrets -> Auth Profiles -> Wizard -> Test run`;
|
||||
- `REST` smoke через UI и MCP.
|
||||
|
||||
Использовать вместе с:
|
||||
|
||||
- [deploy-and-staging-smoke.md](deploy-and-staging-smoke.md)
|
||||
- [staging-regression-notes.md](staging-regression-notes.md)
|
||||
- [manual-regression-checklist.md](manual-regression-checklist.md)
|
||||
|
||||
## 2. Что нужно заранее
|
||||
|
||||
- свежий deploy уже прошел helper smoke:
|
||||
- `just staging-smoke https://<domain>`
|
||||
- Community deploy был собран из `deploy/community/docker-compose.yml`
|
||||
- automated browser-authenticated smoke при необходимости запускается так:
|
||||
- `CRANK_STAGING_ADMIN_EMAIL=... CRANK_STAGING_ADMIN_PASSWORD=... just authenticated-staging-smoke https://<domain>`
|
||||
- известны bootstrap admin credentials;
|
||||
- на стенде есть demo data или подготовленный disposable workspace;
|
||||
- браузер открыт с devtools, чтобы фиксировать network и console findings.
|
||||
|
||||
## 3. Канонический проход
|
||||
|
||||
Перед ручным проходом можно прогнать automated baseline:
|
||||
|
||||
```bash
|
||||
export CRANK_STAGING_ADMIN_EMAIL=owner@example.com
|
||||
export CRANK_STAGING_ADMIN_PASSWORD=secret
|
||||
just authenticated-staging-smoke https://<domain>
|
||||
```
|
||||
|
||||
После завершения прохода готовый блок для [staging-regression-notes.md](staging-regression-notes.md) можно сгенерировать так:
|
||||
|
||||
```bash
|
||||
just staging-note-block <domain> <deploy-sha> "codex + operator"
|
||||
```
|
||||
|
||||
### 3.1. Login and shell
|
||||
|
||||
1. Открыть `/login`
|
||||
2. Проверить:
|
||||
- invalid login -> корректная ошибка;
|
||||
- valid login -> redirect на `/`;
|
||||
- нет redirect loop;
|
||||
- password-only note видна;
|
||||
3. После входа проверить:
|
||||
- current workspace в navbar;
|
||||
- user identity;
|
||||
- language switch;
|
||||
- logout.
|
||||
|
||||
### 3.2. Core UI pages
|
||||
|
||||
После повторного входа открыть:
|
||||
|
||||
- `/`
|
||||
- `/agents`
|
||||
- `/api-keys`
|
||||
- `/secrets`
|
||||
- `/logs`
|
||||
- `/usage`
|
||||
- `/workspace-setup`
|
||||
- `/settings`
|
||||
- `/wizard/`
|
||||
|
||||
Для каждой страницы зафиксировать:
|
||||
|
||||
- `status: passed | partial | failed`
|
||||
- есть ли console errors;
|
||||
- есть ли failing XHR или fetch;
|
||||
- есть ли broken layout.
|
||||
|
||||
### 3.3. Secrets and auth profiles
|
||||
|
||||
1. Открыть `/secrets`
|
||||
2. Создать disposable `token` secret
|
||||
3. При необходимости создать еще:
|
||||
- `header`
|
||||
- `username_password`
|
||||
4. Проверить:
|
||||
- list/update timestamps;
|
||||
- rotate;
|
||||
- delete;
|
||||
- usage references
|
||||
|
||||
### 3.4. Wizard auth flow
|
||||
|
||||
1. Открыть `/wizard/`
|
||||
2. На шаге 2:
|
||||
- выбрать `No auth`;
|
||||
- выбрать existing auth profile;
|
||||
- создать quick secret;
|
||||
- создать quick auth profile;
|
||||
3. Сохранить upstream
|
||||
4. Дойти до `Test run`
|
||||
5. Подтвердить, что:
|
||||
- нет `${secrets.*}`;
|
||||
- upstream сохраняется;
|
||||
- test run отрабатывает с `auth_profile_ref`.
|
||||
|
||||
### 3.5. REST protocol smoke
|
||||
|
||||
Использовать:
|
||||
|
||||
- [public-smoke-targets.md](public-smoke-targets.md)
|
||||
|
||||
Обязательный кейс:
|
||||
|
||||
- `REST`
|
||||
|
||||
Порядок:
|
||||
|
||||
1. создать или открыть operation;
|
||||
2. выполнить `Test run`;
|
||||
3. publish;
|
||||
4. привязать к agent;
|
||||
5. выполнить MCP smoke:
|
||||
- `tools/list`
|
||||
- `tools/call`
|
||||
|
||||
## 4. Что нужно занести в staging notes
|
||||
|
||||
По итогам authenticated pass в [staging-regression-notes.md](staging-regression-notes.md) обязательно добавить:
|
||||
|
||||
- deploy commit;
|
||||
- кто проходил smoke;
|
||||
- что именно проверено;
|
||||
- что прошло;
|
||||
- findings с severity;
|
||||
- infra notes;
|
||||
- explicit status для:
|
||||
- auth;
|
||||
- secrets/auth profiles;
|
||||
- wizard;
|
||||
- REST;
|
||||
- MCP smoke.
|
||||
|
||||
## 5. Готовый блок для вставки
|
||||
|
||||
Этот же блок можно получить через:
|
||||
|
||||
```bash
|
||||
just staging-note-block <domain> <deploy-sha> "codex + operator"
|
||||
```
|
||||
|
||||
```md
|
||||
## YYYY-MM-DD HH:MM TZ — rmcp.itexp.me (authenticated pass)
|
||||
|
||||
- deploy commit: `<sha>`
|
||||
- checked by: `<name>`
|
||||
- smoke status: `passed | partial | failed`
|
||||
- scope:
|
||||
- auth
|
||||
- ui shell
|
||||
- operations
|
||||
- wizard
|
||||
- agents
|
||||
- api keys
|
||||
- secrets
|
||||
- logs
|
||||
- usage
|
||||
- rest smoke
|
||||
- mcp smoke
|
||||
|
||||
### Passed
|
||||
|
||||
- login/logout completed
|
||||
- shell pages open after auth
|
||||
- secrets/auth profile flow status: `<passed|partial|failed>`
|
||||
- REST smoke: `<passed|partial|failed>`
|
||||
- MCP smoke: `<passed|partial|failed>`
|
||||
|
||||
### Findings
|
||||
|
||||
- none
|
||||
|
||||
### Infra notes
|
||||
|
||||
- ...
|
||||
|
||||
### Follow-up
|
||||
|
||||
- ...
|
||||
```
|
||||
|
||||
## 6. Почему automated smoke недостаточно
|
||||
|
||||
Скрипт [scripts/authenticated-staging-smoke.sh](../scripts/authenticated-staging-smoke.sh) полезен как быстрый sanity check, но он:
|
||||
|
||||
- проверяет только минимальный browser flow;
|
||||
- не создает реальный disposable operation;
|
||||
- не заменяет ручной `REST -> publish -> MCP call` проход;
|
||||
- не должен отмечаться как `passed`, пока результаты не занесены в [staging-regression-notes.md](staging-regression-notes.md).
|
||||
Reference in New Issue
Block a user