Прежде всего, признайте избыточность тестирования точной формулировки каждого конкретного элемента пользовательского интерфейса. Это означает, что у вас есть файл локализации, который выполняет фактическую локализацию (например, файл PO gettext), и у вас снова есть та же самая информация в ваших тестовых файлах, просто распространяйте больше. По моему опыту, небольшие детали текста могут меняться время от времени, поэтому каждый раз, когда вы обновляете формулировку, вам также необходимо обновлять тесты. По сути, вы просто синхронизируете свои тесты c с PO-файлом, чтобы тесты проходили успешно. Это много лишней работы без большого роста.
Что вы на самом деле тестируете, делая это? Ваш главный приоритет, вероятно, состоит в том, чтобы проверить, работает ли ваша система l10n. Если в вашей системе i18n / l10n есть ошибка, как правило, все локализации будут нарушены. Так что излишне проверять все. Вы можете просто написать один тест, который выполняет выборочные проверки некоторых хорошо известных строк и проверяет, правильно ли они локализованы на разных языках. Этого должно быть достаточно для обнаружения сбоев в системе i18n как таковой.
Если вы используете заполнители, такие как LOGIN_BUTTON_TEXT
, вы можете проверить, являются ли тексты ваших кнопок не"LOGIN_BUTTON_TEXT "и не пусто, чтобы увидеть, работают ли локализации вообще, без необходимости подтверждать, какой текст каждой кнопки точно .
Возможно, загрузите каталог ПО, который вы используете локализовать ваш текст и убедиться, что строка, отображаемая в пользовательском интерфейсе, переведена из PO-файла. Опять же, это выявляет ошибки, когда l10n почему-то не работает, без необходимости копировать все строки из PO-файла в ваши тесты.
Вы можете выполнять свои функциональные тесты, не заботясь о точных текстах; Адресация элементов пользовательского интерфейса с помощью идентификаторов кнопок и т. д., проверьте, находятся ли входы, как правило, «в состоянии ошибки» или нет, проверьте, существуют ли элементы, которые должны отображать сообщения об ошибках, в целом и не являются ли они пустыми. Опять же, возможно, сделайте выборочные проверки для определенных указанных c локализованных строк, но необязательно для всех .
Вы должны провести качественный аудит ваших PO-файлов отдельно из этого. Системы i18n, такие как gettext, имеют огромную экосистему вокруг проверок качества переводов, и вы должны использовать их для этой цели. Тесты E2E не обязательно являются подходящим местом для этого.
Единственный раз, когда имеет смысл жестко закодировать точную строку, которая должна появляться в пользовательском интерфейсе в ваших тестах, это если вы работаете с TDD подход, и у вас есть 100% пиксельные макеты с 100% точным текстом, предопределенные вашей командой дизайнеров / UX, и на 100% важно, чтобы эти макеты были реализованы на 100% как есть. В этом случае тесты - это spe c, а реализация следует за тестами. Это также требует, чтобы при любом изменении текста вы go выполняли макет → spe c → тест → цикл реализации. Тогда это имеет смысл.
В любом другом случае ваши тесты будут просто отслеживать реализацию, а это редко полезно.