Cypress белый список только наших доменов - PullRequest
0 голосов
/ 12 октября 2018

У меня есть страница, на которой есть реклама, иногда в iframe, иногда нет.

Проблема в том, что время ожидания страницы (60 с), даже если она выглядит загруженной.Я думаю, это может быть реклама или какое-либо другое отслеживание, поэтому я хотел бы добавить белый список к URL-адресу наших ресурсов, чтобы исключить любые объявления или подобные ресурсы.

Это может быть не на 100% точный способ тестирования, нодостаточно для нашего случая.

Я пытался использовать это в beforeEach (не оптимально, но если бы это работало, я бы превратил это в команду и поработал с ней)

cy.server({
    whitelist(xhr) {
        //  Basicly, does it match any of whitelisted URLs?
        console.log('whitelisting', xhr.url)
        const url = new URL(xhr.url);
        const URLwhitelist: string[] = Cypress.env('URLwhitelist');
        if (!URLwhitelist.length) {
            return true
        }
        return URLwhitelist.some(allowerdUrl => {
            if (allowerdUrl.split('.').length == 2) {
                return url.host.includes(allowerdUrl);
            } else if (allowerdUrl.startsWith('*.')) {
                allowerdUrl = allowerdUrl.slice(1);
                return url.host.includes(allowerdUrl);
            }

            throw new Error(`Unparsable whitelist URL (${allowerdUrl})`);
        });
    }
});

Iтакже нашел какой-то вариант черного списка в cypress.json, но мне нужен белый, а не черный список.

1 Ответ

0 голосов
/ 18 октября 2018

Cypress имеет белый список по умолчанию, и информацию можно найти здесь: https://docs.cypress.io/api/commands/server.html#Options

Изменить белый список по умолчанию

cy.server () поставляется с функцией белого списка, которая по умолчаниюотфильтровывает любые запросы, относящиеся к статическим ресурсам, таким как .html, .js, .jsx и .css.

Любой запрос, который проходит белый список, будет игнорироваться - он не будет зарегистрирован и не будет вставлен в заглушку.любым способом (даже если он соответствует определенному cy.route ()).

Идея состоит в том, что мы никогда не хотим вмешиваться в статические ресурсы, которые выбираются через Ajax.

Функция белого списка по умолчаниюв Cypress:

const whitelist = (xhr) => {
// this function receives the xhr object in question and
// will whitelist if it's a GET that appears to be a static resource
return xhr.method === 'GET' && /\.(jsx?|html|css)(\?.*)?$/.test(xhr.url)
}

Вы можете переопределить эту функцию с вашей собственной определенной логикой:

cy.server({
whitelist: (xhr) => {
// specify your own function that should return
// truthy if you want this xhr to be ignored,
// not logged, and not stubbed.
}
})

Похоже, вы можете навсегда переопределить этот белый списокустановив параметры на cypress.server: https://docs.cypress.io/api/cypress-api/cypress-server.html#Syntax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...