Menu

Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.

Documentationbreadcrumb arrow Grafana k6breadcrumb arrow JavaScript APIbreadcrumb arrow k6/experimentalbreadcrumb arrow browserbreadcrumb arrow Pagebreadcrumb arrow waitForFunction(pageFunction, arg[, options])
Open source

waitForFunction(pageFunction, arg[, options])

Returns when the pageFunction returns a truthy value.

ParameterTypeDefaultDescription
pageFunctionfunctionFunction to be evaluated in the page context.
argstring''Optional argument to pass to pageFunction
optionsobjectnull
options.pollingnumber or rafrafIf 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.timeoutnumber30000Maximum time in milliseconds. Pass 0 to disable the timeout. Default is overridden by the setDefaultTimeout option on BrowserContext or Page.

Returns

TypeDescription
Promise<JSHandle>The JSHandle instance associated with the page.

Example

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

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

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

  try {
    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,
    });
    check(ok, { 'waitForFunction successfully resolved': ok.innerHTML() == 'Hello' });
  } finally {
    page.close();
  }
}