Есть ли программный способ изменить пользовательский агент в Cypress.io? - PullRequest
0 голосов
/ 26 июня 2018

У меня есть рекламные звонки, которые сделаны только на мобильных устройствах. В Chrome я могу использовать режим устройства и моделировать мобильное устройство, и полученный рекламный вызов с сервера корректно адаптируется к мобильному устройству. Я не уверен, как Chrome делает это, за исключением, возможно, отправки другого агента пользователя.

В документации Cypress.io говорится, что пользовательский агент может быть изменен в файле конфигурации (Cypress.json). Но мне нужно запустить тест для видового экрана на рабочем столе, а затем для мобильного видового экрана с мобильным пользовательским агентом. Есть ли способ изменить пользовательский агент программно?

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Немного опоздал на вечеринку, но, если вам нужно, например, установите userAgent как Googlebot :

before(() => {
    cy.visit(url, {
        onBeforeLoad: win => {
            Object.defineProperty(win.navigator, 'userAgent', {
                value: 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
            });
        },
    });
});
0 голосов
/ 27 марта 2019

Другие ответы не устанавливают заголовок User-Agent базового HTTP-запроса, только свойство userAgent win.navigator. Чтобы задать для заголовка User-Agent пользовательское значение для всех HTTP-запросов, вы можете установить userAgent параметр конфигурации :

{
  // rest of your cypress.json...
  "userAgent": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
}

Вы упомянули, что не хотите использовать cypress.json. Пользовательский агент может быть установлен программно, для каждого специфицированного файла, используя Cypress.config():

Cypress.config('userAgent', 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)')
0 голосов
/ 08 февраля 2019

Поскольку Cypress-тесты написаны на Javascript, вы можете установить пользовательский агент, используя метод Object.defineProperty(), например:

Object.defineProperty(navigator, 'userAgent', {
    get: function () { return 'Mozilla/5.0 (Windows NT 6.2; WOW64; 
    rv:28.0) Gecko/20100101 Firefox/28.0)'; }
});

Затем, чтобы изменить окно просмотра, вы можете использовать команду cy.viewport(). В документации Cypress здесь вы можете найти примеры того, как организовать ваш рабочий стол по сравнению с мобильными тестами отдельно и как динамически тестировать несколько окон просмотра.

...