RequestLogger не перехватывает все HTTP-запросы

Я пытаюсь проверить эту страницу http://prebid.org/ Я хочу знать, что изображение http://vcdn.adnxs.com/p/creative-image/27/c0/52/67/27c05267-5a6d-4874-834e-18e218493c32.png загружено или нет.

Поэтому я создал регистратор и проверил количество регистраторов, но он не записывает этот запрос.

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

Как я могу это реализовать?


person Jaimin    schedule 10.10.2018    source источник
comment
Небольшое примечание: мы изучаем это и сообщим вам, как только получим какие-либо результаты.   -  person Alex Skorkin    schedule 16.10.2018
comment
Спасибо @AlexSkorkin. Я провел некоторую отладку и обнаружил, что testing-hammerhead не соответствует ни одному запросу внутри динамически созданного iframe. Это происходило только для Edge и IE. Хотя в Хроме работал нормально   -  person Jaimin    schedule 16.10.2018


Ответы (1)


TestCafe основан на прокси-сервере testcafe-hammerhead.

Все запросы проходят через этот прокси, что приводит к задержке загрузки страниц. http://prebid.org/ использует тайм-ауты для "сервера объявлений"/"ставки", поэтому при первой загрузке мы видим ответ сервера «Все участники торгов заняли слишком много времени или не сделали ставку».

Нажатие на кнопку «Обновить это объявление» помогает обойти эту проблему, так как повторные запросы будут намного быстрее.

test-prebid.js:

import { Selector, RequestLogger } from 'testcafe';

const logger     = RequestLogger('http://vcdn.adnxs.com/p/creative-image/27/c0/52/67/27c05267-5a6d-4874-834e-18e218493c32.png');
const refreshBtn = Selector('a').withText('Refresh this ad');

fixture('Prebid')
    .page(`http://prebid.org/`);

test
    .requestHooks(logger)
    (`image loading`, async (t) => {
        await t
            .click(refreshBtn)
            .expect(logger.contains(record => record.response.statusCode === 200)).ok();
    });

Результат испытаний:

> d:\Prebid>testcafe chrome,edge,ie test-prebid.js -e

Using locally installed version of TestCafe.
 Running tests in:
 - Chrome 69.0.3497 / Windows 10.0.0
 - Edge 17.17134.0 / Windows 10.0.0
 - IE 11.0.0 / Windows 10.0.0

 Prebid
 √ image loading

 1 passed (11s)

Примечание: http://devexpress.github.io/testcafe/documentation/using-testcafe/command-line-interface.html#-e---skip-js-errors

person Vladimir A.    schedule 17.10.2018
comment
Эй, спасибо, я обязательно попробую это и дам вам знать. Я поместил console.log в источник testcafe-hammerhead, и он не соответствовал моему запросу. Точно не помню файл. - person Jaimin; 23.10.2018