Rayrun

How do I use Playwright's API to save and load session storage for handling a random modal in a specific test?

Answer

Handling Random Modals with Session Storage in Playwright

You can handle random modals in your tests by saving and loading session storage using Playwright's API. Here's how you can do it:

Saving Session Storage

First, save the session storage as an environment variable in your test setup. Use page.evaluate() to execute JavaScript code on the page. Here's an example:

const sessionStorage = await page.evaluate(() => JSON.stringify(sessionStorage));
fs.writeFileSync('playwright/.auth/session.json', JSON.stringify(sessionStorage), 'utf-8');

This code gets the session storage from the current page and saves it as a JSON file named "session.json" in the ".auth" directory.

Loading Session Storage

Next, load the previously saved session storage in your specific test. Use fs.readFileSync() to do this:

const sessionStorage = JSON.parse(fs.readFileSync('playwright/.auth/session.json', 'utf-8'));
await context.addInitScript(storage => {
  if (window.location.hostname === 'ray.run') {
    for (const [key, value] of Object.entries(storage))
      window.sessionStorage.setItem(key, value);
  }
}, sessionStorage);

This code sets up a new context and its initial script to set each key-value pair from the loaded session storage into window.sessionStorage. Remember to replace 'ray.run' with your target domain.

By following these steps, you can handle any random modal that appears during testing.

References

Thank you!
Was this helpful?
Still have questions?

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

Related Discord Threads

Related Questions

TwitterGitHubLinkedIn
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.