---
name: tg-playwright-probe-addressing
description: "Правила адресации сообщений в Telegram-Web Playwright-пробах — только data-mid, инлайн-кнопки редактируют сообщение, ждать кнопки а не текст"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 805ead91-dfa3-49d2-a5e6-01a980e715fd
  modified: 2026-08-03T19:18:56.876Z
---

Живые probe по Telegram Web (любой бот, не только ВакХантер) стабильны
только при соблюдении четырёх правил. Каждое стоило отдельного разбора
на плавающих 4/6…7/8 прогонах; после всех четырёх — 5 прогонов подряд 8/8.

**Why:** симптомы выглядят как поломка продукта («нет кнопки», «письмо не
сгенерировалось»), а на деле это адресация теста. Легко потратить час,
починяя исправный код.

**How to apply:**
1. **Только `data-mid`.** Индексы `.bubble.is-in` nth() плывут — Telegram
   подгружает/выгружает историю, «бабл #12» через секунды другой.
   `.last` тем более переезжает на новые сообщения.
2. **Инлайн-кнопка РЕДАКТИРУЕТ сообщение, а не шлёт новое.** Список →
   карточка происходит в том же `mid`; перебирать элементы можно только
   возвращаясь кнопкой «Назад». Ждать надо изменения того же `mid`.
3. **Плейсхолдеры ИИ тоже редактируются.** «⏳ Генерирую…» превращается в
   готовый ответ в том же сообщении — кто ждёт «новый бабл», вечно читает
   плейсхолдер и считает это провалом.
4. **Ждать КНОПКИ, а не текст.** Текст часто содержит то же слово, что и
   кнопка («Жми «Подробнее»»), поэтому ожидание по тексту срабатывает до
   отрисовки клавиатуры и следующий клик падает.

Плюс: reply-кнопки слать текстом + клик `.btn-send` (Enter после fill с
emoji не отправляет). И отличать сработавший продуктовый гейт (лимит ИИ,
тариф) от поломки — иначе повторные прогоны дают ложные ❌.
См. [[vakhunter_no_apply_feature]], скилл vakhunter-e2e.
