Defaŭlta lingvo
Название сегодняшней темы пришло из языка Эсперанто и означает “язык по умолчанию”.
Вы могли заметить, что некоторые веб-приложения и сайты автоматически меняют свой язык в зависимости от настроек вашего браузера или вашего местоположения.
Проблема
В том случае, когда у вас в команде интернационал разработчиков, которые пишут и запускают тесты на разных компьютерах, вы могли обратить внимание, что иногда одни и те же тесты начинают падать из-за того, приложение запустилось не на том языке, для которого писались тесты.
Если приложение выбирает язык в зависимости от местоположения пользователя, то писать стабильные тесты запускающиеся в разных странах будет непросто. Зато, если приложение всего лишь смотрит в браузере на язык предпочитаемый пользователем по умолчанию, задача сильно упрощается.
Решение
Итак, допустим у вас есть тесты, написанные для языка, другого чем тот, который является языком вашего браузера по умолчанию. Например - ваши тесты ожидают немецкий.
Теперь у вас есть следующие опции:
- Поменяйте язык по умолчанию вашей системы. Теперь большинство ваших программ на компьютере заговорят по-немецки. Ordnung muss sein!
- Поменяйте в вашем браузере порядок языков так, чтобы самым предпочитаемым стал немецкий. Сохраните профиль браузера. С помощью гугла, напильника и удачи сконфигурируйте тесты так, чтобы профиль загружался перед запуском каждого теста. Да, не забудьте удалить немецкий из топа в списке предпочитаемых языков, иначе, ну вы поняли - Ordnung….
- Ну или - просто воспользуйтесь Chrome preference “intl.accept_languages” установив её значение на “de” (немецкий язык).
Разумеется, вы можете легко сделать это в Selenide.
Установите значение системной переменной chromeoptions.prefs=intl.accept_languages=de
или в коде:
System.setProperty("chromeoptions.prefs","intl.accept_languages=de");
или, лучше, в конфигурационных файлах Maven или Gradle
Maven
maven pom.xml
...
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.xx.yy</version>
<configuration>
<systemPropertyVariables>
...
<chromeoptions.prefs>intl.accept_languages=de</chromeoptions.prefs>
</systemPropertyVariables>
</configuration>
</plugin>
...
Gradle
аналогично для Gradle в gradle.properties
(вам придётся еще добавить строчку-другую в build.gradle
чтобы передать эти параметры в test task грэдла, но про это - в другой раз)
systemProp.chromeoptions.prefs=intl.accept_languages=de
Командная строка
Вы можете переопределять значения при запуске mvn test
или gradle test
определяя новое значение в -Dchromeoptions.prefs=intl.accept_languages=ru
Пример
Просто запускайте этот маленький тест с различными параметрами языка и понаблюдайте за результатом.
open("http://wikipedia.org");
$("[data-jsl10n=slogan]").shouldHave(exactText("Die freie Enzyklopädie"));
Я желаю всем вам Fröhliche Weihnachten и Guten Rutsch!
Alexei Vinogradov
22.12.19