playwright: [BUG] Protocol error (Network.getResponseBody): Request content was evicted from inspector cache

I am trying to read a large JSON file around 24.9 MB using playwright. When I am making the request and trying to read the body using the playwright.BrowserContext response event but I am getting this error response.json: Protocol error (Network.getResponseBody): Request content was evicted from inspector cache at BrowserContext.<anonymous>

This issue is raised and it’s closed. I have tried to execute same code snippet but it’s not working in playwright.

  • Playwright Version: 1.20.1
  • Operating System: macOS Monterey v12.3 ( M1 )
  • Node.js version: v17.7.0
  • Browser: Chromium

What steps will reproduce the problem?

import playwright from 'playwright';

const getBrowser = async () => {
  const launchOptions = {
    devtools: false,
    headless: false,
    ignoreDefaultArgs: ['--disable-extensions', '--enable-automation'],
    args: [`--start-maximized`],
  };
  const browser = await playwright['chromium'].launch(launchOptions);
  const context = await browser.newContext({ viewport: null });
  return {
    context: context,
    newPage: () => context.newPage(),
    close: () => browser.close(),
  };
};

(async () => {
  const { newPage, context } = await getBrowser();
  const page = await newPage();
  const client = await page.context().newCDPSession(page);
  await client.send('Page.setLifecycleEventsEnabled', { enabled: true });
  await client.send('Network.enable', {
    maxResourceBufferSize: 1024 * 1204 * 100,
    maxTotalBufferSize: 1024 * 1204 * 200,
  });

  context.on('response', async (response) => {
    try {
      const url = response.url();
      if (url.includes('json')) {
        await response.json();
        // getting error in console:
      }
    } catch (e) {
      console.log(e);
    }
  });

  await page.goto(`https://raw.githubusercontent.com/json-iterator/test-data/master/large-file.json`, {
    waitUntil: 'networkidle',
  });
})();

What is the expected result? The expected result it the response of JSON

What happens instead? It throws following error

Protocol error (Network.getResponseBody): Request content was evicted from inspector cache
   at BrowserContext.<anonymous>

About this issue

  • Original URL
  • State: open
  • Created 2 years ago
  • Reactions: 16
  • Comments: 18 (2 by maintainers)

Most upvoted comments

Chromium holds a maximum of 10 megabytes in memory for resources, see here and here.

In theory it should be possible to increase it with Network.enable, but this needs to be done in Playwright’s CDP session. I tried to increase it and it was working then fine with your repro.

Will clarify it with the team later.

Same problem here…

We’ll p3 it for now an collecting feedback to see if other folks run into it since loading 10mb+ bodies is not very common.

In theory it should be possible to increase it with Network.enable, but this needs to be done in Playwright’s CDP session. I tried to increase it and it was working then fine with your repro.

Just hit this issue.

How to send ‘Network.enable’ command for the Playwright’s CDP session? Sending this command in CDPSession returned by newCDPSession is not working

hey, any updates on this issue. I’m still getting the same Error: response.json: Protocol error (Network.getResponseBody): Request content was evicted from inspector cache when the response resource was only 7.8MB Any workaround or at least any timeline when we can expect it to be fixed, looks like it’s opened for more then a year and a half now, image

Same 😢

Running into the same issue while trying to download video clips of ~12-15 MB. I tried

await client.send('Network.enable', {
    maxResourceBufferSize: 1024 * 1024 * 25,
    maxTotalBufferSize: 1024 * 1024 * 1000,
});

which works in Puppeteer but not in Playwright.

I ran into this issue. Is there a workaround for the time being?