Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:DevExpress Testcafe RequestHook TypeDefs

From Leeroopedia
Knowledge Sources
Domains Type_Definitions, Testing, Request_Interception
Last Updated 2026-02-12 12:00 GMT

Overview

Concrete TypeScript type declarations for TestCafe's request interception APIs: RequestHook, RequestLogger, and RequestMock.

Description

This file defines the type declarations for TestCafe's request hooks. RequestHook is the abstract base class for custom hooks with onRequest and onResponse methods. RequestLogger records HTTP traffic with filter rules and provides query methods (contains, count, requests). RequestMock enables response mocking with a fluent builder API (onRequestTo().respond()). These hooks are attached to tests or fixtures and can be dynamically managed via t.addRequestHooks().

Usage

Use these types when implementing custom request hooks, logging HTTP traffic in tests, or mocking API responses.

Code Reference

Source Location

Signature

declare class RequestHook {
    constructor(requestFilterRules?: Array<any>, responseEventConfigureOpts?: object);
    onRequest(event: object): Promise<void>;
    onResponse(event: object): Promise<void>;
}

declare class RequestLogger extends RequestHook {
    constructor(filter?: string | RegExp | object | ((req: any) => boolean),
                options?: { logRequestHeaders?: boolean; logRequestBody?: boolean;
                           logResponseHeaders?: boolean; logResponseBody?: boolean;
                           stringifyResponseBody?: boolean; stringifyRequestBody?: boolean; });
    contains(predicate: (request: LoggedRequest) => boolean): Promise<boolean>;
    count(predicate: (request: LoggedRequest) => boolean): Promise<number>;
    requests: LoggedRequest[];
    clear(): void;
}

declare class RequestMock {
    onRequestTo(filter: string | RegExp | object | ((req: any) => boolean)): RequestMock;
    respond(body?: object | string | Function, statusCode?: number, headers?: object): RequestMock;
}

Import

import { RequestHook, RequestLogger, RequestMock } from 'testcafe';

I/O Contract

Inputs

Name Type Required Description
filter string, RegExp, object, function No URL or predicate to match requests
options object No Logger options (log headers, body, etc.)
body object, string, Function No Mock response body
statusCode number No Mock response status code

Outputs

Name Type Description
RequestLogger.requests LoggedRequest[] Array of recorded request/response pairs
RequestLogger.contains() Promise<boolean> Whether any logged request matches predicate
RequestMock RequestMock Chainable mock builder

Usage Examples

import { RequestLogger, RequestMock, RequestHook } from 'testcafe';

// 1. Request Logger - record API calls
const logger = RequestLogger(/api\/users/, {
    logRequestBody: true,
    logResponseBody: true,
    stringifyResponseBody: true,
});

fixture('Request Hooks').page('https://example.com');

test.requestHooks(logger)('Log API calls', async (t: TestController) => {
    await t.click('#load-users');
    await t.expect(logger.count(r => r.response.statusCode === 200)).eql(1);
    console.log(logger.requests[0].response.body);
});

// 2. Request Mock - mock API responses
const mock = RequestMock()
    .onRequestTo('https://api.example.com/users')
    .respond({ users: [{ id: 1, name: 'Test' }] }, 200, {
        'content-type': 'application/json',
    });

test.requestHooks(mock)('Mocked API', async (t: TestController) => {
    await t.click('#load-users');
    await t.expect(Selector('.user').count).eql(1);
});

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment