DEV Community

Cover image for Intercept & Mock API Requests in Playwright C# | Web Testing Examples
JigNect Technologies
JigNect Technologies

Posted on • Edited on

Intercept & Mock API Requests in Playwright C# | Web Testing Examples

In the world of web automation testing, Quality Assurance (QA) professionals often encounter flaky tests caused by slow network responses, unstable third-party APIs, or dynamic data. Wouldn’t it be great if QA could “control” what the API returns or even block unnecessary calls (like ads)? That’s exactly where Playwright’s network interception and mocking feature shines.

Playwright is a modern automation framework that supports multiple languages (C#, Java, JavaScript, Python). It gives us powerful tools to:

  • Intercept network requests & responses
  • Mock API data
  • Simulate errors
  • Control third-party dependencies

In this blog, we’ll walk through everything – from setup to real-world usage – using Playwright with C#.

If you’re new to API testing in Playwright or need help setting up your project, check out this blog: Enhancing API Automation Testing with Playwright and TypeScript: GET and POST Operations Explained.

Importance of Intercepting or Mocking Network Calls in Test Automation
Intercepting and mocking network calls offer several benefits in test automation:

  • Isolate Frontend Testing: Test the frontend independently by mocking API responses without relying on the backend.
  • Handle Third-Party Dependencies: Simulate third-party APIs to avoid dependency on external systems.
  • Speed Up Tests: Reduce test execution time by bypassing real network delays.
  • Simulate Edge Cases: Test scenarios like server errors (500), unauthorized access (401), or empty responses that may be hard to reproduce with a real backend.
  • Ensure Data Consistency: Provide predictable and consistent responses to avoid flakiness in tests caused by dynamic data.

Understanding Network Interception and Mocking

What is Network Interception?
Network interception allows you to observe or manipulate HTTP requests and responses while running a test. For example, you can:

  • Log every API call our app makes
  • Block some requests (e.g., ads or analytics)
  • Modify requests on the fly

What is Mocking?

Mocking replaces the actual API response with fake (mocked) data. This is useful when:

  • The backend is not ready
  • You want to simulate errors or slow responses
  • You want predictable data in your tests

Difference Between Interception & Mocking

Difference Between Interception & Mocking

Benefits of Mocking in Tests

  • Faster execution (no waiting for real APIs)
  • Better stability (no flaky responses)
  • Ability to test rare scenarios (like 500 errors)

How to Set Up Playwright with C#

Step 1: Create a .NET Console Project

  • dotnet new console -n PlaywrightNetworkDemo
  • cd PlaywrightNetworkDemo

Step 2: Add Playwright

  • dotnet add package Microsoft.Playwright
  • playwright install

Step 3: Program.cs Structure
Your Program.cs will contain all the code for the examples. Here’s a base structure:

Code

Capturing & Logging Network Requests and Responses

Steps:
Step 1: Create a Simple HTML Page that Triggers an API Call

Step 1 Code

Step 2: Save this file locally
Example path:
C:\Users\XXXX\OneDrive\Documents\CapturingAndLoggingNetworkRequestAndResponse.html

Step 3: Create a Playwright Test Project with C#

Use Visual Studio and install the required NuGet packages:

  • ‘Microsoft.Playwright’
  • ‘NUnit’
  • ‘Microsoft.NET.Test.Sdk’
  • ‘NUnit3TestAdapter’

Step 4: Write a Playwright test to open the HTML file

Playwright code

Use Visual Studio and install the required NuGet packages:

-‘Microsoft.Playwright’

  • ‘NUnit’
  • ‘Microsoft.NET.Test.Sdk’
  • ‘NUnit3TestAdapter’

Read the full blog here:-[Jignect Technologies](https://jignect.tech/intercept-mock-api-requests-in-playwright-c-real-examples-for-web-testers/?utm_source=Dev.to&utm_medium=organic&utm_campaign=intercept+mock+api+requests+in+playwright+c)

Top comments (1)

Collapse
 
pauljlucas profile image
Paul J. Lucas

This is mistagged. #c is for C; #csharp is for C#.