Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Request blocking causes CSS.enable to hang forever #10041

Closed
2 tasks
adamraine opened this issue Apr 18, 2023 · 2 comments · Fixed by #10046
Closed
2 tasks

[Bug]: Request blocking causes CSS.enable to hang forever #10041

adamraine opened this issue Apr 18, 2023 · 2 comments · Fixed by #10046

Comments

@adamraine
Copy link
Contributor

adamraine commented Apr 18, 2023

Bug expectation

I expected the CDP call to CSS.enable to complete when request blocking is enabled.

Bug behavior

  • Flaky
  • PDF

Minimal, reproducible example

import puppeteer from 'puppeteer'

const url = 'https://chromestatus.com/features'
const URLS_TO_BLOCK = ['https://www.google-analytics.com/analytics.js']

// Use Puppeteer to launch headful Chrome and don't use its default 800x600 viewport.
const browser = await puppeteer.launch({
  headless: false,
  defaultViewport: null,
  ignoreDefaultArgs: ['--enable-automation']
})
const page = await browser.newPage()

// Intercept request and block.
// See https://pptr.dev/guides/request-interception for reference
await page.setRequestInterception(true)
page.on('request', request => {
  if (request.isInterceptResolutionHandled()) return

  const requestURL = request.url()

  const requestShouldBeBlocked = URLS_TO_BLOCK.includes(requestURL)

  if (requestShouldBeBlocked) {
    console.log(`Blocked request to ${requestURL}`)
    request.abort()
  } else {
    request.continue()
  }
})

const session = await page.target().createCDPSession(); 
await page.goto(url, {waitUntil: ['networkidle0']});
await session.send('DOM.enable');

console.log('Attempting CSS.enable...');

await session.send('CSS.enable');

console.log('######## END ########');

await browser.close()

Error string

Script hangs

Puppeteer configuration

No response

Puppeteer version

19.9.1

Node version

16.17.0

Package manager

yarn

Package manager version

1.22.19

Operating system

macOS

@github-actions
Copy link

github-actions bot commented Apr 18, 2023

This issue was not reproducible. Please check that your example runs locally and the following:

  • Ensure the script does not rely on dependencies outside of puppeteer and puppeteer-core.
  • Ensure the error string is just the error message.
    • Bad:

      Error: something went wrong
        at Object.<anonymous> (/Users/username/repository/script.js:2:1)
        at Module._compile (node:internal/modules/cjs/loader:1159:14)
        at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
        at Module.load (node:internal/modules/cjs/loader:1037:32)
        at Module._load (node:internal/modules/cjs/loader:878:12)
        at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
        at node:internal/main/run_main_module:23:47
    • Good: Error: something went wrong.

  • Ensure your configuration file (if applicable) is valid.
  • If the issue is flaky (does not reproduce all the time), make sure 'Flaky' is checked.
  • If the issue is not expected to error, make sure to write 'no error'.

Once the above checks are satisfied, please edit your issue with the changes and we will
try to reproduce the bug again.


Analyzer run

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 19, 2023

Looks like CSS.enable causes some network requests which do not emit proper events so Puppeteer keeps waiting for those events and CSS agent in Chromium keeps waiting for the requests to finish.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants