--- sidebar_label: Frame.waitForFunction --- # Frame.waitForFunction() method #### Signature: ```typescript class Frame { waitForFunction< Params extends unknown[], Func extends EvaluateFunc = EvaluateFunc, >( pageFunction: Func | string, options?: FrameWaitForFunctionOptions, ...args: Params ): Promise>>>; } ``` ## Parameters
Parameter Type Description
pageFunction Func \| string the function to evaluate in the frame context.
options [FrameWaitForFunctionOptions](./puppeteer.framewaitforfunctionoptions.md) _(Optional)_ options to configure the polling method and timeout.
args Params arguments to pass to the `pageFunction`.
**Returns:** Promise<[HandleFor](./puppeteer.handlefor.md)<Awaited<ReturnType<Func>>>> the promise which resolve when the `pageFunction` returns a truthy value. ## Example The `waitForFunction` can be used to observe viewport size change: ```ts import puppeteer from 'puppeteer'; (async () => { . const browser = await puppeteer.launch(); . const page = await browser.newPage(); . const watchDog = page.mainFrame().waitForFunction('window.innerWidth < 100'); . page.setViewport({width: 50, height: 50}); . await watchDog; . await browser.close(); })(); ``` To pass arguments from Node.js to the predicate of `page.waitForFunction` function: ```ts const selector = '.foo'; await frame.waitForFunction( selector => !!document.querySelector(selector), {}, // empty options object selector ); ```