Тест, що вимкнув мережу зарано
Перший червоний Verify на main після відкриття сайту дав тест завислого оновлення воркера: оновлення мало здатися через 45 секунд, а впало за 122 мілісекунди. Винен не воркер, а сам тест. Він вимикав мережу, поки новий воркер ще не отримав усіх файлів оболонки, і перший такий файл обривався. Тепер тест спершу чекає ці файли. На старому тесті збій відтворено, на новому його немає.
Що впало
Verify на 3230ae6 почервонів, хоча коміт стосувався лише імен у даних. Упала одна спека з pwa.spec.ts: оновлення, у якого один файл оболонки ніколи не відповідає, має здатися саме через SHELL_WAIT, тобто через 45 секунд. Тест вимагає, щоб минуло хоч пів цього часу, а минуло 122 мілісекунди. Наступний прогін, на 9acd8f5, пройшов, як і чотири до цього. Спека не зламана, вона нестабільна.
Що показав запис прогону
У трасі прогону видно запити самого воркера. Нова збірка тягне оболонку української осі. Файл Timeline тест навмисно тримає, і він висить, як і мав. Але react-dom і relations воркер попросив уже після того, як тест вимкнув мережу, щоб відкрити вісь офлайн в іншій вкладці. Обидва впали з ERR_INTERNET_DISCONNECTED, і встановлення завершилося через мережу, а не через межу очікування. Воркер зробив саме те, що мав: файл, що не прийшов, скасовує встановлення. Помилка була в тесті, який вимикав мережу, не дочекавшись, поки воркер попросить усе інше.
Раніше тест проходив, бо воркер зазвичай встигав за ті 80 мілісекунд, що тест відкривав другу вкладку. На раннері 28.09 не встиг.
Виправлення
Тест тепер збирає кожен запит воркера, що завершився. Мережу він вимикає лише тоді, коли прийшли всі файли оболонки, крім затриманого, а затриманий дійшов до шлюзу. Сам воркер не змінено, межу не піднято.
Спершу я відтворив збій. Проба тримала react-dom до трьох секунд і обривала його, щойно тест вимикав мережу, так само як Chromium обірвав його в CI. Старий тест упав так, як у CI: 78 мілісекунд замість понад 22 500. Новий дочекався файлу й пройшов. Проба в репозиторій не ввійшла.
Що перевірено
Локально в Chromium спека тричі поспіль пройшла. З решти pwa.spec.ts пройшло все, крім тесту аварійного вимикача: він збирає сайт у тимчасову теку, а на цьому комп’ютері вона на іншому диску, ніж репозиторій, і Windows не дає переносити туди файли. Це не пов’язано з виправленням, у CI той тест проходить. CI побачить виправлення на цьому пуші. Перезапускати червоний прогін на 3230ae6 я не став: це робиться лише за командою «6 в 1».
Запис зроблено 28 вересня 2026 р.
Коміти, про які цей запис
2b047a5