-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
misc: Close extra tabs/windows between tests #28204
Conversation
Passing run #52334 ↗︎
Details:
Review all test suite changes for PR #28204 ↗︎ |
681023a
to
e9a94ff
Compare
c911035
to
4bfd3c0
Compare
@@ -573,6 +573,18 @@ export class BrowserCriClient { | |||
this.extraTargetClients.delete(targetId) | |||
} | |||
|
|||
async closeExtraTargets () { | |||
for (const [targetId] of this.extraTargetClients) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this for loop with the awaited promise will be blocking -- would it be better to map these and use Promise.all to ensure each completes if we do need to wait on these?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's intended to be blocking and will await all of them as-is. Using Promise.all would run them in parallel, but I'm not sure that's advisable with CDP. I think it's a safer bet to run them serially.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why wouldn't that be advisable with CDP? I think using Promise.all
makes sense here as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought there was a case where CDP had trouble with too many commands being run at once, but I can't find that instance. I updated it to run the target closing in parallel.
* Closes extra targets that are not the Cypress tab | ||
*/ | ||
async closeExtraTargets () { | ||
if (!instance || !instance.browser) return |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if (!instance || !instance.browser) return | |
if (!instance?.browser) return |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Addressed in 62e08a3
Released in This comment thread has been locked. If you are still experiencing this issue after upgrading to |
Additional details
Closes any extra targets (tabs/windows) between tests so that new tests always start with only the main Cypress tab, in order to maintain test isolation and a clean slate before each test. This is in anticipation of support for testing multiple tabs/windows with the future
@cypress/puppeteer
plugin.Steps to test
How has the user experience changed?
PR Tasks
cypress-documentation
?type definitions
?