Rayrun

How can I use Playwright to simulate different server responses in a Next.js application?

Answer

Sure, you can mock network calls in your Next.js app using Playwright. It provides APIs to intercept and modify network traffic, including HTTP and HTTPS requests.

Here's how you can do it:

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

test('mocks an API call', async ({ page }) => {
  await page.route('https://ray.run/api/v1/fruits', async (route) => {
    const json = [{ name: 'Strawberry', id: 21 }];
    await route.fulfill({ json });
  });

  // Now, perform actions that trigger the mocked API call

  // Then, assert that the expected data is present on the page
});

In this example, page.route() intercepts calls to https://ray.run/api/v1/fruits and fulfills them with a custom JSON response. This lets you test your app's behavior under different conditions without relying on actual backend services.

But be careful if you're using tools like Mock Service Worker (MSW). It may interfere with Playwright's native browserContext.route() and page.route() methods. In such cases, it's better to use Playwright's built-in routing capabilities for response mocking.

So, Playwright gives you powerful APIs to mock and modify network calls in your Next.js app. By defining custom routes and intercepting requests, you can simulate different responses and test your app's behavior under various scenarios.

For more details, check out this blog post on how to mock HTTP traffic in Playwright tests.

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.