mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	docs: add a new fruit when mocking response (#29137)
Strawberry is already in the original list. Fixes https://github.com/microsoft/playwright/issues/29114
This commit is contained in:
		
							parent
							
								
									cec2ff1772
								
							
						
					
					
						commit
						9cd2916623
					
				@ -118,7 +118,7 @@ test('gets the json from api and adds a new fruit', async ({ page }) => {
 | 
				
			|||||||
  await page.route('*/**/api/v1/fruits', async route => {
 | 
					  await page.route('*/**/api/v1/fruits', async route => {
 | 
				
			||||||
    const response = await route.fetch();
 | 
					    const response = await route.fetch();
 | 
				
			||||||
    const json = await response.json();
 | 
					    const json = await response.json();
 | 
				
			||||||
    json.push({ name: 'Playwright', id: 100 });
 | 
					    json.push({ name: 'Loquat', id: 100 });
 | 
				
			||||||
    // Fulfill using the original response, while patching the response body
 | 
					    // Fulfill using the original response, while patching the response body
 | 
				
			||||||
    // with the given JSON object.
 | 
					    // with the given JSON object.
 | 
				
			||||||
    await route.fulfill({ response, json });
 | 
					    await route.fulfill({ response, json });
 | 
				
			||||||
@ -128,7 +128,7 @@ test('gets the json from api and adds a new fruit', async ({ page }) => {
 | 
				
			|||||||
  await page.goto('https://demo.playwright.dev/api-mocking');
 | 
					  await page.goto('https://demo.playwright.dev/api-mocking');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Assert that the new fruit is visible
 | 
					  // Assert that the new fruit is visible
 | 
				
			||||||
  await expect(page.getByText('Playwright', { exact: true })).toBeVisible();
 | 
					  await expect(page.getByText('Loquat', { exact: true })).toBeVisible();
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -137,7 +137,7 @@ async def test_gets_the_json_from_api_and_adds_a_new_fruit(page: Page):
 | 
				
			|||||||
    async def handle(route: Route):
 | 
					    async def handle(route: Route):
 | 
				
			||||||
        response = await route.fetch()
 | 
					        response = await route.fetch()
 | 
				
			||||||
        json = await response.json()
 | 
					        json = await response.json()
 | 
				
			||||||
        json.append({ "name": "Playwright", "id": 100})
 | 
					        json.append({ "name": "Loquat", "id": 100})
 | 
				
			||||||
        # Fulfill using the original response, while patching the response body
 | 
					        # Fulfill using the original response, while patching the response body
 | 
				
			||||||
        # with the given JSON object.
 | 
					        # with the given JSON object.
 | 
				
			||||||
        await route.fulfill(response=response, json=json)
 | 
					        await route.fulfill(response=response, json=json)
 | 
				
			||||||
@ -148,7 +148,7 @@ async def test_gets_the_json_from_api_and_adds_a_new_fruit(page: Page):
 | 
				
			|||||||
    await page.goto("https://demo.playwright.dev/api-mocking")
 | 
					    await page.goto("https://demo.playwright.dev/api-mocking")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Assert that the new fruit is visible
 | 
					    # Assert that the new fruit is visible
 | 
				
			||||||
    await page.get_by_text("Playwright", exact=True).to_be_visible()
 | 
					    await page.get_by_text("Loquat", exact=True).to_be_visible()
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```python sync
 | 
					```python sync
 | 
				
			||||||
@ -156,7 +156,7 @@ def test_gets_the_json_from_api_and_adds_a_new_fruit(page: Page):
 | 
				
			|||||||
    def handle(route: Route):
 | 
					    def handle(route: Route):
 | 
				
			||||||
        response = route.fetch()
 | 
					        response = route.fetch()
 | 
				
			||||||
        json = response.json()
 | 
					        json = response.json()
 | 
				
			||||||
        json.append({ "name": "Playwright", "id": 100})
 | 
					        json.append({ "name": "Loquat", "id": 100})
 | 
				
			||||||
        # Fulfill using the original response, while patching the response body
 | 
					        # Fulfill using the original response, while patching the response body
 | 
				
			||||||
        # with the given JSON object.
 | 
					        # with the given JSON object.
 | 
				
			||||||
        route.fulfill(response=response, json=json)
 | 
					        route.fulfill(response=response, json=json)
 | 
				
			||||||
@ -167,28 +167,28 @@ def test_gets_the_json_from_api_and_adds_a_new_fruit(page: Page):
 | 
				
			|||||||
    page.goto("https://demo.playwright.dev/api-mocking")
 | 
					    page.goto("https://demo.playwright.dev/api-mocking")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Assert that the new fruit is visible
 | 
					    # Assert that the new fruit is visible
 | 
				
			||||||
    page.get_by_text("Playwright", exact=True).to_be_visible()
 | 
					    page.get_by_text("Loquat", exact=True).to_be_visible()
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```csharp
 | 
					```csharp
 | 
				
			||||||
await page.RouteAsync("*/**/api/v1/fruits", async (route) => {
 | 
					await page.RouteAsync("*/**/api/v1/fruits", async (route) => {
 | 
				
			||||||
    var response = await route.FetchAsync();
 | 
					    var response = await route.FetchAsync();
 | 
				
			||||||
    var fruits = await response.JsonAsync<Fruit[]>();
 | 
					    var fruits = await response.JsonAsync<Fruit[]>();
 | 
				
			||||||
    fruits.Add(new Fruit() { Name = "Playwright", Id = 100 });
 | 
					    fruits.Add(new Fruit() { Name = "Loquat", Id = 100 });
 | 
				
			||||||
    // Fulfill using the original response, while patching the response body
 | 
					    // Fulfill using the original response, while patching the response body
 | 
				
			||||||
    // with the given JSON object.
 | 
					    // with the given JSON object.
 | 
				
			||||||
    await route.FulfillAsync(new ()
 | 
					    await route.FulfillAsync(new ()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      Response = response,
 | 
					      Response = response,
 | 
				
			||||||
      Json = json
 | 
					      Json = fruits
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
// Go to the page
 | 
					// Go to the page
 | 
				
			||||||
await page.GotoAsync("https://demo.playwright.dev/api-mocking");
 | 
					await page.GotoAsync("https://demo.playwright.dev/api-mocking");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Assert that the Strawberry fruit is visible
 | 
					// Assert that the Loquat fruit is visible
 | 
				
			||||||
await Expect(page.GetByTextAsync("Playwright", new () { Exact = true })).ToBeVisibleAsync();
 | 
					await Expect(page.GetByTextAsync("Loquat", new () { Exact = true })).ToBeVisibleAsync();
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```java
 | 
					```java
 | 
				
			||||||
@ -196,7 +196,7 @@ page.route("*/**/api/v1/fruits", route -> {
 | 
				
			|||||||
  Response response = route.fetch();
 | 
					  Response response = route.fetch();
 | 
				
			||||||
  byte[] json = response.body();
 | 
					  byte[] json = response.body();
 | 
				
			||||||
  parsed = new Gson().fromJson(json, JsonObject.class)
 | 
					  parsed = new Gson().fromJson(json, JsonObject.class)
 | 
				
			||||||
  parsed.add(new JsonObject().add("name", "Playwright").add("id", 100));
 | 
					  parsed.add(new JsonObject().add("name", "Loquat").add("id", 100));
 | 
				
			||||||
  // Fulfill using the original response, while patching the response body
 | 
					  // Fulfill using the original response, while patching the response body
 | 
				
			||||||
  // with the given JSON object.
 | 
					  // with the given JSON object.
 | 
				
			||||||
  route.fulfill(new Route.FulfillOptions().setResponse(response).setBody(json.toString()));
 | 
					  route.fulfill(new Route.FulfillOptions().setResponse(response).setBody(json.toString()));
 | 
				
			||||||
@ -205,8 +205,8 @@ page.route("*/**/api/v1/fruits", route -> {
 | 
				
			|||||||
// Go to the page
 | 
					// Go to the page
 | 
				
			||||||
page.goto("https://demo.playwright.dev/api-mocking");
 | 
					page.goto("https://demo.playwright.dev/api-mocking");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Assert that the Strawberry fruit is visible
 | 
					// Assert that the Loquat fruit is visible
 | 
				
			||||||
assertThat(page.getByText("Playwright", new Page.GetByTextOptions().setExact(true))).isVisible();
 | 
					assertThat(page.getByText("Loquat", new Page.GetByTextOptions().setExact(true))).isVisible();
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In the trace of our test we can see that the API was called and the response was modified.
 | 
					In the trace of our test we can see that the API was called and the response was modified.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user