Skip to content

break: ExecuteAsync() under the hood implementation after bumping to Selenium 4.23 #804

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

Merged
merged 13 commits into from
Jul 28, 2024

Conversation

kelmelzer
Copy link
Contributor

@kelmelzer kelmelzer commented Jul 8, 2024

List of changes

This bumps to Selenium 4.23 and fixes the build errors in AppiumDriver and AppiumCommandExecutor to flow through the new ExecuteAsync() methods in Selenium 4.23+. Fixes #798

Types of changes

What types of changes are you proposing/introducing to the .NET client?

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • New feature (non-breaking change which adds value to the project)
  • Breaking change (fix or feature that would cause existing functionality not to work as expected)

@KazuCocoa
Copy link
Member

Will this require selenium 3.22+? (Just I don't have much knowledge about deps handling in dotnet lock files, or src/Appium.Net/Appium.Net.csproj handles it)

@KazuCocoa KazuCocoa requested review from Dor-bl and laolubenson July 9, 2024 05:23
@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 9, 2024

Will this require selenium 3.22+? (Just I don't have much knowledge about deps handling in dotnet lock files, or src/Appium.Net/Appium.Net.csproj handles it)

@KazuCocoa I assume you meant 4.22+.
Indeed we need to make sure it won't break backward compatibility

@KazuCocoa
Copy link
Member

Yea, 4.22. If we need to bump the required version, that will also be fine with at least bumping the minor version such as 5.1.0 dotnet driver and changelog etc. A matrix such as https://github.com/appium/python-client?tab=readme-ov-file#compatibility-matrix would help.

@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 9, 2024

Yea, 4.22. If we need to bump the required version, that will also be fine with at least bumping the minor version such as 5.1.0 dotnet driver and changelog etc. A matrix such as https://github.com/appium/python-client?tab=readme-ov-file#compatibility-matrix would help.

At first look, this will be a breaking change since we inherit from WebDriver the ExecuteAsync method which doesn't exist on previous versions.
A matrix of compatibility is a good idea to have regardless.

@Dor-bl Dor-bl requested a review from titusfortner July 9, 2024 05:41
@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 9, 2024

@nvborisenko your feedback will be appreciated as well :)

@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 19, 2024

@kelmelzer , the selenium team has released a patch (4.23.0) can you please check if we still need adjustments from our side?

@kelmelzer
Copy link
Contributor Author

kelmelzer commented Jul 19, 2024 via email

@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 19, 2024

I hope no fires related to crowdstrike 😅

@kelmelzer
Copy link
Contributor Author

I hope no fires related to crowdstrike 😅

Definitely related 👎

Anyways, Appium 5 still doesn't build with Selenium 4.23 due to ICommandExecutor's ExecuteAsync() not being implemented by AppiumCommandExecutor. Adding this simple passthrough fixes:

    public Task<Response> ExecuteAsync(Command commandToExecute) => Task.Run(() => this.Execute(commandToExecute));

@kelmelzer
Copy link
Contributor Author

I (should have) updated my pull request with 4.23 and the small change I mentioned previously.

@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 19, 2024

I hope no fires related to crowdstrike 😅

Definitely related 👎

Anyways, Appium 5 still doesn't build with Selenium 4.23 due to ICommandExecutor's ExecuteAsync() not being implemented by AppiumCommandExecutor. Adding this simple passthrough fixes:

    public Task<Response> ExecuteAsync(Command commandToExecute) => Task.Run(() => this.Execute(commandToExecute));

I see the build still fails. Did you checked the changes locally?

@kelmelzer
Copy link
Contributor Author

I hope no fires related to crowdstrike 😅

Definitely related 👎
Anyways, Appium 5 still doesn't build with Selenium 4.23 due to ICommandExecutor's ExecuteAsync() not being implemented by AppiumCommandExecutor. Adding this simple passthrough fixes:

    public Task<Response> ExecuteAsync(Command commandToExecute) => Task.Run(() => this.Execute(commandToExecute));

I see the build still fails. Did you checked the changes locally?

Let's see what happens with these recent commits...hopefully I got it right.

@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 19, 2024

@kelmelzer Please update PR title

@kelmelzer kelmelzer changed the title ExecuteAsync() implementation and build errors fixed after bumping to Selenium 4.22 ExecuteAsync() implementation and build errors fixed after bumping to Selenium 4.23 Jul 19, 2024
@kelmelzer kelmelzer requested a review from Dor-bl July 19, 2024 19:11
@kelmelzer kelmelzer requested a review from Dor-bl July 19, 2024 19:27
Copy link
Collaborator

@Dor-bl Dor-bl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you happen to run some tests to make sure everything plays well together?

@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 26, 2024

@kelmelzer, Please fix the merge conflicts.

@kelmelzer
Copy link
Contributor Author

@kelmelzer, Please fix the merge conflicts.

Been out of pocket most of the week. I accepted your change.

@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 27, 2024

@kelmelzer, Please fix the merge conflicts.

Been out of pocket most of the week. I accepted your change.

Sorry for the confusion. I updated drawing.common yesterday. Can you please align with the main branch?

@Dor-bl
Copy link
Collaborator

Dor-bl commented Jul 28, 2024

@kelmelzer, Please fix the merge conflicts.

Been out of pocket most of the week. I accepted your change.

Sorry for the confusion. I updated drawing.common yesterday. Can you please align with the main branch?

@kelmelzer, Hope you don't mind but I resolved the conflict myself so we can speed up this PR :)

@Dor-bl Dor-bl changed the title ExecuteAsync() implementation and build errors fixed after bumping to Selenium 4.23 break: ExecuteAsync() implementation and build errors fixed after bumping to Selenium 4.23 Jul 28, 2024
@Dor-bl Dor-bl changed the title break: ExecuteAsync() implementation and build errors fixed after bumping to Selenium 4.23 break: ExecuteAsync() under the hood implementation after bumping to Selenium 4.23 Jul 28, 2024
@Dor-bl Dor-bl self-requested a review July 28, 2024 09:37
@Dor-bl Dor-bl merged commit c9c4913 into appium:main Jul 28, 2024
3 checks passed
@KazuCocoa KazuCocoa added the size:S contribution size: S label Sep 6, 2024
@jlipps
Copy link
Member

jlipps commented Sep 6, 2024

Hi @kelmelzer , congrats, the Appium project wants to compensate you for this (and perhaps other) contribution(s) this month! Please reply to this comment mentioning me and sharing your OpenCollective account name, so that we can initiate payment! Or let me know if you decline to receive compensation via OpenCollective. Thank you!

@kelmelzer
Copy link
Contributor Author

Hi @kelmelzer , congrats, the Appium project wants to compensate you for this (and perhaps other) contribution(s) this month! Please reply to this comment mentioning me and sharing your OpenCollective account name, so that we can initiate payment! Or let me know if you decline to receive compensation via OpenCollective. Thank you!

@jlipps That's wonderful. My account name is kelmelzer there as well.

@nvborisenko
Copy link
Contributor

That's great!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BreakingChange size:S contribution size: S
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: Selenium 4.22 introduces breaking change in ICommandExecutor implementations in Appium
6 participants