Menu
Scroll for more
This is documentation for the next version of Grafana k6 documentation. For the latest stable release, go to the latest version.
Open source
waitForRequest(urlPattern[, options])
Waits for an HTTP request that matches the specified URL pattern. This method is particularly useful for waiting for requests to be initiated before proceeding with the test, such as verifying that form submissions or API calls are triggered.
| Parameter | Type | Default | Description |
|---|---|---|---|
| urlPattern | string | RegExp | - | Required. URL or URL pattern to match against requests. Can be an exact URL string, a regular expression, or an empty string to match any request. |
| options | object | null | |
| options.timeout | number | 30000 | Maximum time in milliseconds. Pass 0 to disable the timeout. Default is overridden by the setDefaultTimeout option on
BrowserContext or
Page. |
Returns
Examples
Wait for API request
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 waitForRequest with user interaction
const pizzaRequestPromise = page.waitForRequest('https://quickpizza.grafana.com/api/pizza');
await page.getByRole('button', { name: /pizza/i }).click();
const pizzaRequest = await pizzaRequestPromise;
// Check that the pizza API request was initiated
check(pizzaRequest, {
'pizza API URL is correct': (r) => r.url() === 'https://quickpizza.grafana.com/api/pizza',
'pizza API method is POST': (r) => r.method() === 'POST',
});
} finally {
await page.close();
}
}Best practices
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
Set up promise before trigger: Always set up the
waitForRequestpromise before triggering the action that causes the request:
JavaScript
// Correct
const requestPromise = page.waitForRequest('/api/data');
await page.click('#submit');
const request = await requestPromise;
// Incorrect - may miss the request
await page.click('#submit');
const request = await page.waitForRequest('/api/data');- Verify request content: After waiting for the request, verify that the request URL, method, and headers match your expectations.
Related
- page.on() - Subscribe to page events
- page.waitForEvent() - Wait for page events with predicate functions
- page.waitForLoadState() - Wait for load states
- page.waitForNavigation() - Wait for navigation events
- page.waitForResponse() - Wait for HTTP responses
- page.waitForURL() - Wait for URL changes
- Request - Request object methods and properties
Was this page helpful?
Related resources from Grafana Labs
Additional helpful documentation, links, and articles:
Video

Performance testing and observability in Grafana Cloud
Optimize user experiences with Grafana Cloud. Learn real-time insights, performance testing with k6, and continuous validation with Synthetic Monitoring.
Events

User-centered observability: load testing, real user monitoring, and synthetics
Learn how to use load testing, synthetic monitoring, and real user monitoring (RUM) to understand end users' experience of your apps. Watch on demand.