Перейти к основному содержимому

abort

Обзор​

Прерывает подходящие запросы, пока правило активно. Сигнатуры BiDi и Classic/CDP различаются. В BiDi не передавайте строку с кодом ошибки: она не задает сетевую ошибку и может изменить однократность правила.

Использование​

BiDi: mock.abort(once = false)

Classic/CDP: mock.abort(errorReason, sticky = true)

Параметры и результат​

BiDi: once — boolean, по умолчанию false; для одного запроса удобнее abortOnce. Classic/CDP: errorReason задает ошибку, sticky по умолчанию true сохраняет правило.

Коды ошибки Classic/CDP: Failed, Aborted, TimedOut, AccessDenied, ConnectionClosed, ConnectionReset, ConnectionRefused, ConnectionAborted, ConnectionFailed, NameNotResolved, InternetDisconnected, AddressUnreachable, BlockedByClient, BlockedByResponse.

BiDi возвращает тот же объект мока синхронно; Classic/CDP не возвращает полезного значения. Правила BiDi делят очередь с request и redirect. Постоянное правило заменяет очередь, однократное сохраняет другие однократные правила и убирает постоянное. В CDP правила добавляются в очередь: ранее добавленное постоянное правило может не дать примениться следующему.

Пример​

Пример использует Chrome с WebDriver BiDi. Укажите в baseUrl адрес тестового HTTP-сервера: / отдает HTML-страницу, а /api/items — JSON с полем source: "original" и статусом 200. Явная подписка на события нужна для новых сессий в одном воркере в WDIO 9.6.2.

const assert = require("node:assert/strict");

it("mock.abort: block matching BiDi requests", async ({ browser }) => {
await browser.url("/");
await browser.sessionSubscribe({
events: ["network.beforeRequestSent", "network.responseStarted"],
});
const mock = await browser.mock("/api/items");
try {
mock.abort();
for (let i = 0; i < 2; i++) {
const failed = await browser.execute(async () => {
try {
await fetch("/api/items", { cache: "no-store" });
return false;
} catch {
return true;
}
});
assert.equal(failed, true);
}
} finally {
await mock.restore();
}
});

Источники​

Материал учитывает исходную статью WebdriverIO.