После переключения relay на Sanctum introspect (#79) и фикса cmd-channel hang (#77).
Synthetic smokes удалены 2026-04-30. Файлы
mvp_smoke.py,quickstart.py,login_flow.py(example.com / app.example.com) удалены. Browserlend MVP smoke = real-site тест (Reddit/Twitter/GitHub) — см. отдельный smoke-runner у ceki-qa.
- connect — agent WS подключается к relay (Sanctum introspect, type=agent, ability browser:relay)
- session — создание сессии (matchmaker, provider match, WebRTC P2P handshake)
- navigate + query + click — команды через ceki-cmd DataChannel (баг #77: cmd-channel не виснет после navigate)
- screenshot — получение скриншота через P2P
- chat — отправка/получение сообщений и изображений через relay chat
- session end — корректное завершение сессии
Скрипт: examples/mvp_smoke_p2p.py — relay chat + P2P commands (навигация на github.com)
-
browser-relay запущен на dev из ветки
feature/browserlend(коммит0e1bdb7+):docker compose logs browser-relay | grep "introspect" # должно быть: listening on 0.0.0.0:8443
-
Chrome extension собран dev-сборкой, распакован в Chrome у провайдера (Константин):
chrome://extensions/> Load unpacked >dist-extension/dev/- Залогиниться как provider, нажать "Go Online"
-
Provider онлайн — виден в relay-логах:
docker compose logs -f browser-relay | grep "provider" # должно быть: [ws] provider connected connId=...
-
Agent-токен сгенерирован — Sanctum PAT с ability
browser:relay:docker compose exec api php artisan tinker --execute="echo App\Models\User::find(1)->createToken('smoke-agent', ['browser:relay'])->plainTextToken;"
Выведет токен вида
123|abc...xyz. ЭтоCEKI_TOKEN.
cd python-sdk
pip install -e .
CEKI_TOKEN="<токен из шага 4>" \
RELAY_URL="wss://browser.ittribe.org/ws/agent" \
python examples/mvp_smoke_p2p.pyINFO mvp_smoke_p2p: PASS connect — agent_id=...
INFO mvp_smoke_p2p: PASS session_matched — session_id=...
INFO mvp_smoke_p2p: PASS rtc_connected — connectionState=connected
INFO mvp_smoke_p2p: PASS chat_available — relay chat API ready
INFO mvp_smoke_p2p: PASS navigate — url=https://github.com
INFO mvp_smoke_p2p: PASS query_dom — text='...'
INFO mvp_smoke_p2p: PASS click — a
INFO mvp_smoke_p2p: PASS screenshot — 1920x1080 150KB
INFO mvp_smoke_p2p: PASS session_end — reason=completed
INFO mvp_smoke_p2p: STATUS: PASS
Критические шаги (FAIL = smoke красный):
connect, session_matched, rtc_connected, navigate, query_dom, screenshot, chat_send_text, chat_send_image, session_end
Терминал 1 — relay-логи:
docker compose logs -f browser-relayИскать:
[auth] agent introspect ok: user_id=1 subject_type=agent— auth прошёл через новый introspect[session] REQUESTED → MATCHING → OFFERED → STARTING → ACTIVE— сессия создана[revocation]— если появится, значит Redis subscriber работает
Терминал 2 — Chrome DevTools у провайдера:
chrome://extensions/> service worker > Inspect- Консоль:
[ceki]сообщения о подключении, offer/answer, session state
typestep может бытьtype_skipped— на целевом сайте может не быть input-полей, это ожидаемоchat_recv_messageможет FAIL если провайдер не ответил вручную в течение 30с — не баг runner'аchat_history_partial— история может быть пустой если chat-service не сохранил сообщения, не критично- В
session.test.ts(js-sdk) 2 pre-existing failures — не связаны со smoke
| Результат | Что значит |
|---|---|
STATUS: PASS |
Все шаги прошли, smoke зелёный |
STATUS: PARTIAL PASS |
Некритические шаги (type, chat_recv) failed — OK для первого прогона |
STATUS: FAIL |
Критический шаг failed — нужна диагностика |
Если connect FAIL с Auth failed: 401 — токен невалиден или relay ещё на старом коде (не introspect).
Если session_matched FAIL с timeout — провайдер не онлайн или extension не подключён к relay.
Если navigate FAIL с timeout — cmd-channel hang (баг #77), проверить что python-sdk на коммите f8497ef+.