Defaŭlta lingvo

Defaŭlta lingvo

Selenide Advent Calendar
День 22
22.12.19

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