Yes, you can use
waitForResponse() in Playwright to wait until a page is fully loaded. This method waits for a network response after an action like a button click. You can use it with a glob URL pattern, RegExp, or a predicate taking a Response object.
Here's an example:
// Use a glob URL pattern. Note no await. const responsePromise = page.waitForResponse('https://ray.run/api/fetch_data'); await page.getByText('Update').click(); const response = await responsePromise;
But, there's a catch.
waitForResponse() may not be suitable if the page loading involves multiple network requests and responses. It waits for one specific network response and doesn't guarantee that all resources on the page have been fully loaded.
Playwright also offers
waitForLoadState(). This function returns when the required load state has been reached. It might be more appropriate if you want to ensure that the entire page has been loaded.
await page.getByRole('button').click(); // Click triggers navigation. await page.waitForLoadState(); // The promise resolves after 'load' event.
Playwright also performs actionability checks on elements before making actions. It auto-waits for all relevant checks (like ensuring element is attached to DOM, visible, stable etc.) to pass and only then performs the requested action.
waitForResponse() can be useful in certain scenarios, it may not always be suitable when you need assurance that an entire webpage has completely loaded. Other methods provided by Playwright such as
waitForLoadState() or automatic actionability checks could potentially serve better in those cases.
If you still have questions, please ask a question and I will try to answer it.
Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email email@example.com.