Source
QA Co-pilot | Timezone Hell: Чому ваші юзери "старіють" на день швидше (і як це тест...
24 Views/Reach
2026-03-31 07:54
Message №247
⏰ Timezone Hell: Чому ваші юзери "старіють" на день швидше (і як це тестувати)Привіт, екіпаж! Сьогодні розберемо баг, який хоч раз у житті ламав мозок кожному айтішнику. ☕️Уявіть ситуацію: користувач заходить у свій профіль і вказує дату народження — 10 жовтня. Тисне "Зберегти". Оновлює сторінку, а там... 9 жовтня. Він знову ставить 10-те, зберігає — а сторінка вперто показує 9-те. Юзер лютує, саппорт розривається.Ласкаво просимо в Timezone Hell (Пекло часових поясів).Чому це відбувається?У програмуванні час — це не просто "10:00". Це складна структура. Головне правило здорової архітектури: Бекенд завжди зберігає час у UTC (Всесвітній координований час, +0). А фронтенд вже переводить його в локальний час користувача.Але розробники постійно в цьому плутаються:
1️⃣Фронтенд бере локальну дату Києва (UTC+3) і відправляє на сервер.2️⃣Сервер думає: "Ага, мені прислали дату, відніму-но я 3 години, щоб зберегти в UTC".3️⃣Дата народження (яка стояла як 00:00 10 жовтня) перетворюється на 21:00 9 жовтня!4️⃣При поверненні даних фронтенд забуває додати ці 3 години назад, або бекенд відрізає години взагалі. Результат — день народження змістився.
Або ще гірше: юзер з Нью-Йорка купує квиток на концерт у Лондоні. У якому часі має показуватися початок події? Якщо показати в локальному часі юзера — він запізниться на рейс.Як QA має тестувати дати? (Чек-лист виживання)Зробіть це прямо сьогодні на своєму проєкті, і ви гарантовано знайдете пару багів:🌍 Тест "Мандрівника у часі"Не міняйте нічого в коді. Просто зайдіть у налаштування вашого Windows/macOS (або в DevTools Chrome: Sensors -> Location) і змініть свій часовий пояс на Токіо (UTC+9), а потім на Лос-Анджелес (UTC-8).Пройдіть флоу створення сутності (поста, транзакції, бронювання). Подивіться, чи не з'їхали дати в таблицях і графіках на вчора/завтра.
🧛♂️ "Вампірський" тест (Рівно північ)Більшість багів з датами вилазить на стику днів. Створюйте події або звіти з часом рівно 00:00 або 23:59. Це ідеальні крайові значення (Boundary Values), де найчастіше "відкушується" або додається зайвий день при конвертації.
🔀 Формат ISO 8601Відкрийте Network і подивіться, як фронт відправляє дати. Якщо ви бачите щось на кшталт "10-10-2025" — бийте на сполох. Формат має бути стандартизованим, наприклад: 2025-10-10T15:30:00.000Z (де літера Z в кінці означає Zulu time, тобто чистий UTC).
Висновок: Якщо ваш додаток працює більш ніж в одній країні — робота з датами має бути покрита залізобетонними тестами. І ніколи не дозволяйте розробникам писати власні конвертери часу — для цього є готові перевірені бібліотеки.А ви стикалися з "магічним" зникненням або появою днів у календарях? 👇🔥 — О так, баги з UTC — це класика нашого проєкту!👀 — Завжди думав(ла), що дати це просто текст...🤯 — Прямо зараз іду міняти часовий пояс на Токіо і ламати прод!