How to set the browser's language in Cypress.io (electron/chrome)?

后端 未结 4 1285
感动是毒
感动是毒 2021-02-14 10:00

My question is about configuring Cypress to launch a browser instance in a certain language.

In order to:

  • make assertions on localized (i18n) text labels?<
相关标签:
4条回答
  • 2021-02-14 10:13

    navigator has two lang props:

    • language ({ value: 'en-GB'}
    • languages(['en-GB'])

    navigator.language refers to the first element of navigator.languages but some libraries check navigator.languages[0] instead of navigator.language, so better if you set both properties

    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

    0 讨论(0)
  • 2021-02-14 10:13

    In support/index.js

    Cypress.on('window:before:load', window => {
      Object.defineProperty(window.navigator, 'language', { value: 'fr' });
    });
    
    0 讨论(0)
  • 2021-02-14 10:14

    To set the language in the browser and also for request, which was what I had to do for my tests, the following worked for me:

    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',
        },
    });
    
    0 讨论(0)
  • 2021-02-14 10:23

    from Gleb Bahmutov:

    you set it during cy.visit using onBeforeLoad with something like Object.defineProperty(navigator, 'language', { value: 'de-GE' })

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

    0 讨论(0)
提交回复
热议问题