TGViewer
PRO автотесты PRO автотесты @test_automation_pro · 311 subscribers
Post #14 1.21K
В продолжение темы о предупреждениях в тестах расскажу еще про сообщения вида:

An update to <название_компонента> inside a test was not wrapped in act


Это предупреждение возникает, когда после завершения теста React продолжает выполнять обновления компонентов. В интернете много информации на эту тему (например, здесь и здесь). Статьи по этим ссылкам, а также документация React, рекомендуют взаимодействовать с компонентами в тестах через какую-нибудь готовую библиотеку, которая обрабатывает эту особенность.

Но дело в том, что при запуске тестов мы продолжали видеть предупреждения "... not wrapped in act", хотя на тот момент в проекте уже использовалась testing-library и обрабатывались краевые случаи, описанные в статьях. Предупреждений было очень много, несколько сотен 😱

Мы стали копать дальше и нашли обсуждение на GitHub. Оказалось, что логика обработки этой ситуации в @testing-library завязана на статический объект, создаваемый кодом библиотеки @testing-library/dom. Если в проекте содержится несколько разных версий этой библиотеки (например, установлены как транзитивные зависимости), то может оказаться, что разные вызовы API обращаются к разным экземплярам этого объекта и из-за этого они не понимают, что действие уже обернуто в act.

В конфиге Jest мы настроили маппинг, чтобы при сборке все импорты из @testing-library/dom разрешались в одну версию библиотеки (в конкретную папку в node_modules на верхнем уровне).

  moduleNameMapper: {
'^@testing-library/dom$': `<rootDir>/node_modules/@testing-library/dom`
}


Это помогло, предупреждения исчезли. Консольный вывод модульных тестов теперь короткий и понятный 😎
  • 👍 12
  • 🔥 5
  • 😎 5
More from @test_automation_pro
  1. Aug 28, 2026Генератор стабов из TypeScript-типов Когда тестируешь компонент — надо откуда-то взять дан…
  2. Jul 30, 2026photo post
  3. Jul 30, 2026В субботу я читал лекцию об автотестах в Школе разработки интерфейсов Яндекса. В этом году…
  4. Jul 18, 2026https://youtu.be/EZXj-bTG82w На прошлой неделе я был в гостях у Володи Гриненко и мы запис…
  5. Jun 28, 2026Скоро начало 3 квартала и в Яндекс 360 идет квартальное планирование. Два сервиса запланир…
  6. May 21, 2026Еще один случай с участием #ии Мы сегодня обнаружили тест, который проходил успешно, но не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →