frame behaviors: use frame.evaluate() instead of custom evaluteWithCLI() #964
+77
−108
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.
Removes our custom evaluateWithCLI() call in favor of using standard
frame.evaluate().The custom method became more tricky to use, and doesn't work for all iframes.
The main benefit of it was to inject
getEventListeners(), which is now only used in Autoscroll to potentially skip scrolling, and not needed for any other behaviors.We could potentially use this workaround: https://stackoverflow.com/questions/75517220/geteventlistener-function-support-for-latest-puppeteer-versions/75581410#75581410 to bring back
getEventListenersor, adding a custom callback, likehasEventListener()would suffice for that check.This simplifies the codebase and ensures that running behaviors is more reliable.
Also, adds a callback for new frames that may get added to page, such as during scrolling, an ensures behaviors are called on those iframes as well.