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

Configuration 如何设置浏览器';Cypress.io中的s语言(电子/铬)?,configuration,internationalization,e2e-testing,cypress,lang,Configuration,Internationalization,E2e Testing,Cypress,Lang,我的问题是如何配置以启动特定语言的浏览器实例 为了: 是否对本地化(i18n)文本标签进行断言 检查i18n功能(在语言之间切换) 绕过连续集成(CI/CD)问题,例如,在 本地计算机,浏览器默认为fr\u fr,在CI/CD虚拟机上默认为en\u US 我试过(没有多大成功): 使用终端调用中的LANGUAGE=en_US 使用浏览器的API插件(请参见Cypress) 谢谢 来自Gleb Bahmutov: 您可以在cy.visit期间使用onBeforeLoad和类似Object.

我的问题是如何配置以启动特定语言的浏览器实例

为了:

  • 是否对本地化(i18n)文本标签进行断言
  • 检查i18n功能(在语言之间切换)
  • 绕过连续集成(CI/CD)问题,例如,在 本地计算机,浏览器默认为
    fr\u fr
    ,在CI/CD虚拟机上默认为
    en\u US
我试过(没有多大成功):

  • 使用终端调用中的
    LANGUAGE=en_US
  • 使用浏览器的API插件(请参见Cypress)
谢谢

来自Gleb Bahmutov:

您可以在cy.visit期间使用
onBeforeLoad
和类似
Object.defineProperty(导航器,'language',{value:'de GE'})的内容设置它。


src:

navigator有两个lang道具:

  • 语言({value:'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:

要在浏览器中设置语言,也要为请求设置语言,这是我在测试中必须做的,以下操作对我有效:

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',
    },
});
在support/index.js中

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

我们尝试在onBeforeLoad期间使用垫片覆盖navigator.locale,该垫片返回所需的区域设置,但这不会更改GET请求中使用的区域设置。找到解决方案了吗?无法使其工作,只是忽略了我的代码:
javascript cy.visit('/',{onBeforeLoad:(_contentWindow)=>{Object.defineProperty(navigator,'language',{value:'fr'}}}})
你能用
cy.visit('/',{onBeforeLoad:(_contentWindow)=>{Object.defineProperty(_contentWindow.navigator,'language',{value:'fr'})})试试吗
我尝试了这两种组合,但都没能成功:(对此有任何帮助吗?请注意,这只实现了更改浏览器语言的一种效果-例如,这不会更改
日期的行为。ToLocalString
,并且不会发送
接受语言
标题。仅此一项对我有效。谢谢:竖起大拇指:…这有效!