Мой вопрос касается настройки Кипарис для запуска экземпляра браузера на определенном языке.
Чтобы:
fr_FR, а на виртуальной машине CI/CD — en_US?Я пробовал (без особого успеха):
LANGUAGE=en_US из вызова терминала,Спасибо!
Вы нашли решение?





от Глеба Бахмутова:
you set it during cy.visit using
onBeforeLoadwith something likeObject.defineProperty(navigator, 'language', { value: 'de-GE' })
источник: https://gitter.im/cypress-io/cypress?at=5d61408a07d1ff39f8769545
Не удалось заставить это работать, просто проигнорировал мой код: javascript cy.visit('/', { onBeforeLoad: (_contentWindow) => { Object.defineProperty(navigator, 'language', { value: 'fr-FR' }) } })
можешь попробовать с cy.visit('/', { onBeforeLoad: (_contentWindow) => { Object.defineProperty(_contentWindow.navigator, 'language', { value: 'fr-FR' }) } })
Я попробовал обе комбинации и не смог заставить их работать :( любая помощь в этом?
navigator имеет два реквизита lang:
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']);
ссылка: https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/languages
Обратите внимание, что это реализует только один эффект изменения языка браузера — например, это не меняет поведение Date.toLocaleString, и заголовок Accept-Language не будет отправлен.
Это единственное решение, которое сработало для меня.
Чтобы установить язык в браузере, а также для запроса, что я должен был сделать для своих тестов, у меня сработало следующее:
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',
},
});
В поддержке/index.js
Cypress.on('window:before:load', window => {
Object.defineProperty(window.navigator, 'language', { value: 'fr' });
});
мы пытались перезаписать navigator.locale прокладкой во время onBeforeLoad, которая возвращает желаемую локаль, но это не меняет локаль, используемую в запросах GET.