如何在Cypress.io(电子/铬)中设置浏览器的语言?

时间:2019-06-27 13:11:07

标签: configuration internationalization e2e-testing cypress lang

我的问题是关于配置Cypress以使用某种语言启动浏览器实例。

为了:

  • 对本地化(i18n)文本标签进行断言?
  • 检查i18n功能(在语言之间切换)
  • 例如,在以下情况下,
  • 绕过持续集成(CI / CD)的问题: 本地计算机上,浏览器默认为fr_FR,在CI / CD VM上默认为en_US

我尝试了(没有成功):

谢谢!

4 个答案:

答案 0 :(得分:1)

来自格莱布·巴穆托夫(Gleb Bahmutov):

  

您在cy.visit期间使用onBeforeLoadObject.defineProperty(navigator, 'language', { value: 'de-GE' })来设置它

src:https://gitter.im/cypress-io/cypress?at=5d61408a07d1ff39f8769545

答案 1 :(得分:1)

导航器有两个郎道具:

  • 语言({值:'en-GB'}
  • 语言(['en-GB'])

navigator.language指的是navigator.languages的第一个元素 但是某些库会检查navigator.languages [0]而不是navigator.language,因此如果同时设置这两个属性,则效果更好

onBeforeLoad: (window, ...args) => {
  Object.defineProperty(window.navigator, 'language', { value: 'en-GB' });
  Object.defineProperty(window.navigator, 'languages', ['en-GB']);

ref:https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages

答案 2 :(得分:0)

要在浏览器中设置语言以及请求语言(这是我为测试做的事情),以下对我有用:

cy.visit('url', {
    onBeforeLoad(win) {
      Object.defineProperty(win.navigator, 'language', { value: 'de-DE' });
      Object.defineProperty(win.navigator, 'languages', { value: ['de'] });
      Object.defineProperty(win.navigator, 'accept_languages', { value: ['de'] });
    },
    headers: {
      'Accept-Language': 'de',
    },
});

答案 3 :(得分:0)

在support / index.js

Cypress.on('window:before:load', window => {
  Object.defineProperty(window.navigator, 'language', { value: 'fr' });
});