Skip to content

Lupa API Reference / network / Network

Class: Network

Defined in: src/network/index.ts:85

The developer-facing API for network interception and mocking. Available in browser tests via the network fixture on the TestContext.

Constructors

Constructor

new Network(context): Network

Defined in: src/network/index.ts:86

Parameters

context

TestContext

Returns

Network

Accessors

bypass

Get Signature

get bypass(): typeof bypass

Defined in: src/network/index.ts:104

A sentinel value to indicate that a request should not be intercepted and should be allowed to proceed normally.

You can use this value in dynamic response handlers to selectively bypass the mock and let the request go through to the actual network.

Example
ts
test('bypasses network', async ({ network }) => {
  const mock = await network.mock('/api/data', () => {
    // your logic to decide whether to bypass the mock
    return network.bypass
  })
})
Returns

typeof bypass


error

Get Signature

get error(): typeof NetworkError

Defined in: src/network/index.ts:120

Collection of network error types which can be used to simulate network errors.

Example
ts
test('simulates a network connection failure', async ({ network }) => {
  const mock = await network.mock('/api/data', () => {
    return { error: network.error.ConnectionFailed }
  })
})
Returns

typeof NetworkError

Methods

ignoreCors()

ignoreCors(ignore?): Promise<void>

Defined in: src/network/index.ts:142

Tells the network interceptor to automatically bypass CORS rules by intercepting preflight OPTIONS requests and injecting Access-Control-Allow-Origin: * headers into any fulfilled network mock.

This setting automatically reverts at the end of the test.

Parameters

ignore?

boolean = true

Whether to ignore CORS or enforce it. Defaults to true.

Returns

Promise<void>

Example

ts
test('ignores CORS', async ({ network, assert }) => {
  await network.ignoreCors()
  const res = await fetch('https://example.com/api/data')
  assert.equal(res.headers.get('access-control-allow-origin'), '*')
})

mock()

Call Signature

mock(match, respond): Promise<NetworkInterceptor>

Defined in: src/network/index.ts:202

Registers a new network mock to intercept requests matching the provided criteria. Intercepted requests can be bypassed, stubbed with static payloads, or handled by dynamic closures.

Note: All mocks created during a test are automatically restored when the test finishes.

Parameters
match

NetworkMatch

The matching criteria (e.g. URI string or request options).

respond

NetworkRespondPayload | NetworkRespondDynamic

The static payload or dynamic closure used to fulfill the matched request.

Returns

Promise<NetworkInterceptor>

A NetworkInterceptor to manage the mock and assert against captured requests.

Example
ts
test('handles 500 error', async ({ network }) => {
  const mock = await network.mock('/api/users', {
    status: 500,
    body: { error: 'Internal Server Error' }
  })

  button.click()
  await mock.assert.calledOnce()
})

Call Signature

mock(options): Promise<NetworkInterceptor>

Defined in: src/network/index.ts:226

Registers a new network mock to intercept requests using a single configuration object. Intercepted requests can be bypassed, stubbed with static payloads, or handled by dynamic closures.

Note: All mocks created during a test are automatically restored when the test finishes.

Parameters
options

NetworkMockOptions

The configuration defining the matching criteria and response behavior.

Returns

Promise<NetworkInterceptor>

A NetworkInterceptor to manage the mock and assert against captured requests.

Example
ts
test('handles 500 error', async ({ network }) => {
  const mock = await network.mock({
    match: '/api/users',
    respond: { status: 500, body: { error: 'Internal Server Error' } }
  })

  button.click()
  await mock.assert.calledOnce()
})

setOffline()

setOffline(offline): Promise<void>

Defined in: src/network/index.ts:169

Toggles the offline state of the browser context.

IMPORTANT

Automatic Cleanup: Unlike emulation.setOffline(...), this method is scoped to the current test. The network offline state will automatically revert back to online mode at the end of the test.

Parameters

offline

boolean

Whether to set the network offline.

Returns

Promise<void>

Example

ts
test('simulates offline behavior', async ({ network }) => {
  await network.setOffline(true)
  // verify application handles network failure...
})