What is the recommended way to wait for a specific duration before refreshing a page in Playwright?


Waiting for a Specific Duration in Playwright

Instead of using page.wait_for_timeout(), you can rely on Playwright's built-in auto-waiting mechanism to ensure stable and reliable scripts when dealing with dynamic web applications. Playwright automatically waits for elements to become actionable before performing actions like page.click().

Here's how Playwright checks the actionability of an element:

  • Attached to the DOM
  • Visible
  • Stable (not animating or animation completed)
  • Receives events (not obscured by other elements)
  • Enabled

To set a default timeout value for all actions, use the setDefaultTimeout() method provided by browserContext or page objects. This way, you won't have to specify timeout values explicitly every time you perform an action.

import { test, expect } from '@playwright/test';

test('Wait for a specific duration before refreshing', async ({ page }) => {
  await page.setDefaultTimeout(10000); // Set default timeout to 10 seconds
  await page.goto('https://ray.run/');
  await page.click('#someElement');
  // Playwright will automatically wait for the element to become actionable
  await page.reload();
  // Continue with your test

Additionally, you can use the noWaitAfter option if you want to opt out of waiting for navigations and pages loading after performing an action that initiates navigation. This can be useful when navigating to inaccessible pages or when you don't want your script execution time to increase due to unnecessary waiting.

await page.click('#someElement', { noWaitAfter: true });

By using Playwright's auto-waiting mechanism and setting default timeouts, you can ensure a stable and reliable way to wait for a specific duration before refreshing a page.

Thank you!
Was this helpful?
Still have questions?

If you still have questions, please ask a question and I will try to answer it.

AboutQuestionsDiscord ForumBrowser ExtensionTagsQA Jobs

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 luc@ray.run.