Menu

This is documentation for the next version of Grafana k6 documentation. For the latest stable release, go to the latest version.

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.