Menu
Documentationbreadcrumb arrow Grafana k6breadcrumb arrow JavaScript APIbreadcrumb arrow k6/browserbreadcrumb arrow Pagebreadcrumb arrow waitForResponse(urlPattern[, options])
Open source

waitForResponse(urlPattern[, options])

Waits for an HTTP response that matches the specified URL pattern. This method is particularly useful for waiting for responses from AJAX/fetch requests, API calls, or specific resources to be loaded before proceeding with the test.

ParameterTypeDefaultDescription
urlPatternstring | RegExp-Required. URL or URL pattern to match against responses. Can be an exact URL string, a regular expression, or an empty string to match any response.
optionsobjectnull
options.timeoutnumber30000Maximum time in milliseconds. Pass 0 to disable the timeout. Default is overridden by the setDefaultTimeout option on BrowserContext or Page.

Returns

TypeDescription
Promise< Response>A Promise that fulfills with the Response object when a URL matches and the response is received.

Examples

Wait for API response

JavaScript
import { browser } from 'k6/browser';
import { check } from 'k6';

export const options = {
  scenarios: {
    ui: {
      executor: 'shared-iterations',
      options: {
        browser: {
          type: 'chromium',
        },
      },
    },
  },
};

export default async function () {
  const page = await browser.newPage();

  try {
    await page.goto('https://quickpizza.grafana.com/');

    // Test waitForResponse with user interaction
    const pizzaResponsePromise = page.waitForResponse('https://quickpizza.grafana.com/api/pizza');

    await page.getByRole('button', { name: /pizza/i }).click();

    const pizzaResponse = await pizzaResponsePromise;

    // Check that the pizza API call was successful
    check(pizzaResponse, {
      'pizza API status is 200': (r) => r.status() === 200,
      'pizza API URL is correct': (r) => r.url() === 'https://quickpizza.grafana.com/api/pizza',
    });
  } finally {
    await page.close();
  }
}

Best practices

  1. Use appropriate patterns: Choose the right matching method based on your needs:

    • Exact strings for known, static API endpoints
    • RegExp for pattern-based matching and dynamic URLs
  2. Set up promise before trigger: Always set up the waitForResponse promise before triggering the action that causes the request:

JavaScript
// Correct
const responsePromise = page.waitForResponse('/api/data');
await page.click('#submit');
const response = await responsePromise;

// Incorrect - may miss the response
await page.click('#submit');
const response = await page.waitForResponse('/api/data');
  1. Verify response content: After waiting for the response, verify that the response status and content match your expectations.