fix(🐛): Handle page and snapshot errors #562
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Sometimes, due to various reasons, the running browser might disconnect from Puppeteer during asset discovery causing a
target closed
error. This error can happen anytime CDP sends a message to the browser, such as enabling JS or setting viewport options. Since it is unhandled it can result in the local server being unable to respond to requests which can then result in request timeouts.Approach
Within asset discovery, move any interaction with the
page
object into an error handler. The various request event registrations do not have to be protected since they are generic event emitter registration methods.I also noticed that none of the methods within the snapshot handler were protected, which might contribute to the server hanging since it does not respond for unhandled async errors by default. I wrapped the snapshot method with another try-catch to help ensure that the server responds when an error is encountered.