This is documentation for the next version of K6. For the latest stable release, go to the latest version.
waitForFunction(pageFunction, arg[, options])
Returns when the pageFunction
returns a truthy value.
Parameter | Type | Default | Description |
---|---|---|---|
pageFunction | function | Function to be evaluated in the page context. | |
arg | string | '' | Optional argument to pass to pageFunction |
options | object | null | |
options.polling | number or raf | raf | If polling is 'raf' , then pageFunction is constantly executed in requestAnimationFrame callback. If polling is a number, then it is treated as an interval in milliseconds at which the function would be executed. |
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
Type | Description |
---|---|
Promise<JSHandle> | The JSHandle instance associated with the page. |
Example
import { browser } from 'k6/browser';
import { check } from 'https://jslib.k6.io/k6-utils/1.5.0/index.js';
export const options = {
scenarios: {
browser: {
executor: 'shared-iterations',
options: {
browser: {
type: 'chromium',
},
},
},
},
};
export default async function () {
const page = await browser.newPage();
try {
await page.evaluate(() => {
setTimeout(() => {
const el = document.createElement('h1');
el.innerHTML = 'Hello';
document.body.appendChild(el);
}, 1000);
});
const ok = await page.waitForFunction("document.querySelector('h1')", {
polling: 'mutation',
timeout: 2000,
});
await check(ok, {
'waitForFunction successfully resolved': async (ok) =>
await ok.innerHTML() == 'Hello'
});
} finally {
await page.close();
}
}