fix(webdriverio): switchWindow supports exact window handle match#13857
Merged
christian-bromann merged 3 commits intowebdriverio:mainfrom Nov 6, 2024
Merged
Conversation
This change enables browser.switchWindow(matcher) to accept an exact window handle and switch to it directly without cycling through all the open tabs. Enables serenity-js/serenity-js#2572
eslint-plugin-wdio
@wdio/allure-reporter
@wdio/browser-runner
@wdio/appium-service
@wdio/browserstack-service
@wdio/cli
@wdio/concise-reporter
@wdio/config
@wdio/cucumber-framework
@wdio/dot-reporter
@wdio/firefox-profile-service
@wdio/globals
@wdio/jasmine-framework
@wdio/json-reporter
@wdio/junit-reporter
@wdio/lighthouse-service
@wdio/local-runner
@wdio/logger
@wdio/mocha-framework
@wdio/protocols
@wdio/repl
@wdio/reporter
@wdio/runner
@wdio/sauce-service
@wdio/shared-store-service
@wdio/smoke-test-cjs-service
@wdio/smoke-test-reporter
@wdio/smoke-test-service
@wdio/spec-reporter
@wdio/static-server-service
@wdio/sumologic-reporter
@wdio/testingbot-service
@wdio/types
@wdio/utils
@wdio/webdriver-mock-service
webdriver
webdriverio
commit: |
Contributor
Author
|
Looks like we have a couple of tests in the pipeline failing due to timeout issues that don't seem to be related to the proposed change. |
Member
christian-bromann
left a comment
There was a problem hiding this comment.
Thanks @jan-molak for the contribution!
Mind adding to the example a version where we switch to a window with a given handle?
Contributor
Author
|
Sure thing. Please hold off on merging for a moment. I just noticed something I'd like to fix. By the way, pkg.pr.new is awesome 👍 I just pulled the packages it published into Serenity/JS test suite and picked up another bug. |
Contributor
Author
|
@christian-bromann - should be good to go I think |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This change enables
browser.switchWindow(matcher)to accept an exact window handle and switch to it directly without cycling through all the open tabs.Enables serenity-js/serenity-js#2572
Proposed changes
Serenity/JS offers a sophisticated API to allow developers to switch the active browser window to a desired one.
Under the hood, Serenity/JS relies on the following WebdriverIO APIs:
browser.getWindowHandlebrowser.getWindowHandlesbrowser.switchToWindow(deprecated)However,
switchToWindow(handle)is now deprecated, and theswitchWindow(matcher)that replaces it does not currently support switching to the exact window handle Serenity/JS has found.This change extends and improves the performance of
browser.switchWindow(matcher)by making it exit early and avoid looping over the open window handles if:matcheris the current window handlematcheris one of the already open window handlesIf there's no exact window handle match, the
switchWindowfunction continues as before.Types of changes
Checklist
Backport Request
//: # (The current
mainbranch is the development branch for WebdriverIO v9. If your change should be released to the current major version of WebdriverIO (v8), please raise another PR with the same changes against thev8branch.)v9and doesn't need to be back-ported#XXXXXFurther comments
Reviewers: @webdriverio/project-committers
Discussed with @christian-bromann