За пределами линтинга: почему мы перешли на семантические контракты для доступности и локализации
Я помню, как сидел в "военной комнате" за три дня до крупного релиза. Мы были уверены: наш статический линтер доступности (a11y) проходил тесты, а наши юнит-тесты локализации (l10n), которые выполняли простое сравнение строк, показывали зеленый свет. Затем бета-пользователь сообщил, что нажать на кнопку primary_submit_action было физически невозможно, потому что наш файл локализации увеличил длину подписи кнопки, вытолкнув область касания за пределы экрана.Наши тесты не провалились, потому что они не смотрели на экран. Они смотрели на текстовые файлы. В тот момент я понял, что наша зависимость от хрупкого сравнения строк и базового статического линтинга уперлась в глухую стену при масштабировании. Нам нужен был новый подход, который не просто проверял бы наличие подписи, но и подтверждал бы семантическое соответствие между макетом и пользователем.
primary_submit_actionбыло физически невозможно, потому что наш файл локализации увеличил длину подписи кнопки, вытолкнув область касания за пределы экрана.Наши тесты не провалились, потому что они не смотрели на экран. Они смотрели на текстовые файлы. В тот момент я понял, что наша зависимость от хрупкого сравнения строк и базового статического линтинга уперлась в глухую стену при масштабировании. Нам нужен был новый подход, который не просто проверял бы наличие подписи, но и подтверждал бы семантическое соответствие между макетом и пользователем.