Improving & refining our Docs translations

We are refining our docs content with help from the community!

A while ago, we started to make the Selenium documentation available in more languages. This, in an effort to offer a more inclusive environment for Selenium users who do not have English as their mother tongue.

This effort grew organically, and we got many pull requests adding content for different languages. Over time, some translations got to a very good state, and others didn’t get much attention. This brought the situation where 9 different languages are available in the documentation, but only a few add value to the readers.

To understand which languages are getting visits, we started using Plausible. After a few weeks, we combined the information collected by the analytics tool with the translated percentage per language, and we got the following:

Here’s the number of visitors on the landing page for a given translation in the past 2 weeks, and the percent of documentation pages translated:

LanguageVisitorsTranslated
ja1,70086%
zh-cn1,50086%
es40942%
fr20331%
pt-br18987%
de8865%
ko7968%
nl226%

This shows that the most used languages (aside from English) are Japanese and Chinese, and that the language that has translated most of the content is Portuguese.

Based on this data, we decided to create a new role in the Selenium project: translators. This role will help the project keep in shape the different translations available. Together with that, we are also putting on hold the other available translations until we find volunteers for each language.

If you have any questions or comments, please reach out through any of all the available options shown at our support page.

Stay tuned for updates by following SeleniumHQ!

Happy testing!

Stepping Down, Stepping Up

Simon is stepping down as lead of the Selenium project. What happens next?

The short version is that I’m stepping down as the Selenium project lead, and will concentrating on pushing WebDriver Bidi forwards. Fortunately, the Selenium TLC have already been steering the project for a while now, so it’s in excellent hands. With Selenium 4 now shipped, the project has a new energy and enthusiasm about it. The future is bright, and I’m looking forward to seeing what it holds.

The longer version? Well, that’s more personal. Let me start at the beginning….

On the 3rd January, 2007 I pushed the initial commit of “WebDriver” to a public repo. I helped with the Selenium 1.0 release, and at the same time made sure that WebDriver emulated the original Selenium RC APIs (in code that lives on to this day). In 2009, Jason Huggins and I merged the Selenium and WebDriver projects, and I took over the leadership of the project. I’ve been the lead for every version of Selenium since then, often being the person who tagged each release in source control, all the way up to the recent Selenium 4 release.

By the numbers, that’s

  • 14 years of WebDriver
  • 12 years of Selenium for me
    • Though the first Selenium commits were in 2004
  • 1 10 year birthday celebration
  • Approximately 130 Selenium releases.
  • I’ve landed just over 5100 commits
    • Which is about 20% of all the changes made to Selenium over the years.
  • 3 different source control systems
  • 5 build systems
  • 14 Selenium conferences
  • 696 different people contributing to the project.

In a way, I blame Michael C for this. He and I worked together at ThoughtWorks in Australia, and had been working with HttpUnit. My assertion was that its API was fine. His was that it should be more Object-Oriented. To explore the idea, I started writing an OO wrapper around HttpUnit, and (of course!) Michael was right.

Or maybe it’s Joe Walnes who I should be talking about. At about the same, he’d been exploring a similar kind of design, but where my API had a Browser, his had the far better sounding WebDriver, and he was generous enough to allow me to use the same name in my next iteration of the idea.

Or, perhaps, it’s Paul Hammant and ThoughtWorks. Paul was the one who suggested Open Sourcing what was then “WebDriver” under the Apache 2 license, and ThoughtWorks supported the decision to make the code available to the world.

In any case, on that day in 2007, I was sitting on the sofa with a glass of red wine, creating the project on Google Code, and thinking (if I was thinking deeply at all) that it’d be nice to get the code out there, and in six months it’ll probably be over. There was absolutely no way I could dream that the project would grow far beyond me, emerging from the Cambrian explosion of the early days of web testing to become first an industry-wide de facto standard, and then, through the work done in the W3C, an actual standard. It’s the only browser automation API that all the browser vendors support.

During these past 14 years, Selenium has been one of the constants of my life. I joke sometimes that I’ve known it longer than my wife and my son, but is it a joke if it’s true?

Why spend that much time and effort on Open Source? On something that you give away for free? Because it’s just been so incredibly rewarding. I’ve had a chance to meet people from all over the globe, work with amazing people from a range of companies I’d never have a chance of working with normally, learn and practice skills I wouldn’t have had a chance to exercise, and to write code that makes people’s lives just a little bit easier.

Most importantly, Selenium has been the way that I’ve met some of the best friends I have in my life. I’ve been very lucky.

I’ve also been lucky to have met and been part of the Selenium community. The conferences and meetups have been a fantastic way to hear about how people are using the tool, and I am constantly impressed by how inventive and thoughtful people can be. The conversations I’ve had at those events have changed how I think about all sorts of things, and not just code. The IRC and Slack channels are vibrant and interesting places to be. There are folks who are there regularly who I’ve never met in person, but who I feel I could count as friends.

Who knew that Open Source could be the source of so much that makes a life bright?

But today, I’m stepping down as the project lead, and will be away from the project until summer, though (in the true spirit of this project), I’m not sure which year.

Why, if all I said above is true, am I stepping down?

The major reason is that the things I like to do, and that I’m good at, are not the things that the project needs right now. It would be hubris to believe that no-one else could do as good a job, particularly when I know how amazing so many people on the project are.

The other reason is that I’m tired. For the past 14 years, much of my free time, as well as hours within work, has been spent working on Selenium. There are other projects and interests I’d like to pour some energy into (just ask me how my Turkish lessons are going!)

In my absence, the project’s “Technical Leadership Committee” will continue to be setting the direction of the project. I’ve been listening to the discussions about where the project can go: it’s going to be brilliant.

That is, while I’m stepping down, the rest of the TLC will be stepping up. They’ve already been running the project for a while. They’ll continue the work we’ve started and carry it forwards and upwards. If you’re reading this, and want to get involved, step in and join the fun. Now’s the perfect time.

When I took over as lead of the Selenium project, Paul joked that he had thrown me the keys and run in the opposite direction. I guess it’s my turn to do that now!

Before finishing, I’d just like to say a heartfelt “thank you” to everyone who’s been involved in the Selenium project. To everyone who’s contributed in some way, or used the code we’ve written, thank you. To everyone who’s filed a bug, thank you too. To all the people who I’ve had the pleasure of so many conversations with, that I would never have met without Selenium, thank you. To my family, who’ve supported me and understood with endless patience that Selenium is a part of our lives, thank you. And to my friends on the project, an extra meaningful thank you.

I won’t be here, but I won’t be far. See you all soon.

A Tour of 4: New Commands

There’s more to Selenium 4 than just the server

Before we ship Selenium 4, I thought it would be nice to introduce some of the new features in-depth. Of course, all of the features we’re covering are in the main WebDriver documentation, so if you’re not one for reading blog posts, then feel free to dive in there!

You may well be familiar with how to start a Selenium server: you just do something like java -jar selenium-server-4.0.0.jar standalone and away you go! But with Selenium 4, there are some more things you can do with this jar.

Least obviously, the server jar is an exectuable on its own. If you’re using Linux or macOS, and have Java installed, you can make the jar executable (eg. chmod 755 selenium-server-4.0.0.jar), rename it to something like selenium and put it on your $PATH. That way, rather than writing java -jar ... you can simply run selenium.

Now you’ve done that, if you run selenium with selenium --help you’ll get a handy list of the available sub-commands you can execute. There are the old favourites, such as standalone (for starting a standalone selenium server), and hub and node (for starting a Selenium Hub and Node setup), but there are other interesting commands that are new to Selenium 4.

The first of these is info. We’ve added this to provide easy to find and access documentation on common tasks when using the selenium server. If you run selenium info on its own, you’ll see something like this:

Info
====

You can find out more about topics concerning Selenium Grid by running the
"info" command followed by: 

* config - Help on how to configure Selenium
* tracing - Help on how distributed tracing works with selenium
* security - Help on how how to secure communications to and within selenium
* sessionmap - Help on different types of sessionmap and how to start them.


Each topic will give you enough information to help you get started, and contains
some pointers on our site to provide more complete information. 

To get more information on a particular topic, just add the name of the topic, for example selenium info security. The hope is that this will make it less daunting to deal with Selenium, and give you a great place to get started with some of the more complicated topics around running a Selenium Grid.

Although it’s incredibly flexible, the selenium command offers a daunting list of command line flags. How are you supposed to remember them all? You’re not! Instead, let selenium completion take the strain for you. If you’re a zsh user, then just source <(selenium completion zsh), and now you have tab completion for the sub-commands, as well as for all the flags, including examples of how to use them.

And, finally, there are some hidden flags. We hid them because they can be a little bit confusing to use or understand what they’re meant to do, but one that can be very useful when debugging how your Grid is configured is the --dump-config flag. When run with a server command such as standalone or hub, it will dump the configuration options used by the Grid as a JSON blob. This can be helpful for tracking down subtle issues with configurations, especially when using environment properties for configuration.

Announcing Selenium 4

Selenium 4.0.0 is released! Get it while it’s hot!

It’s with very great pleasure that we are announcing the release of Selenium 4. This is available for Java, .Net, Python, Ruby, and Javascript. You can download it from your favourite package manager or right from GitHub!

If you’re already a Selenium user, this update should be as easy as just changing your dependency from 3.x to 4.0.0. We’ve worked hard to ensure that this is a “drop-in” upgrade, having focused on keeping the public APIs as stable as possible.

Of course, we’ve made changes, so if you relied on code that was marked as internal to Selenium, or that was deprecated, you might experience some hiccups. Please check our documentation for advice on how to deal with each of the common problems we’re aware of.

But there’s more to Selenium 4 than just being a stable release of what was there before! It brings a whole host of new and exciting features that we hope will make your tests more fun to write, and more stable when you run them. Let’s take a look at some of them!

We’ve introduced “relative locators”. These allow you to specify where on the page an element can be found using language that people use too; things like “above that element”, or “to the right of this other element”. This will hopefully provide you all with a tool to fight against incredibly complex locators, making your tests read a little more clearly, and being more resilient to changes in the page’s DOM. We’re not the first ones to come up with this idea – that honour belongs to Sahi – but if you’ve not used them before, we hope you like them!

If you’re using Firefox or a browser that is derived from Chromium, we’ve added a slew of new capabilities too. These include ways of handling “basic” and “digest” authentication, Network Interception (Are you an HTTP 418?), and also performing commonly requested tasks, like waiting for a change in the DOM, or providing a way to look at Javascript errors.

We’ve added these new features in a way that fits in with our existing APIs. There’s no need to rewrite your tests: just use the new features when it feels right to you.

We have also rebuilt the Selenium Grid, taking lessons from successful projects such as Zalenium and Selenoid to enhance the capabilities. This new Grid runs just as well as a single process, running on a single machine, as it does in the traditional “hub and node” configuration, but it also supports a fully-distributed mode, for use in modern infrastructure running Kubernetes. It has better security baked-in, because we know that securing a Grid can be a difficult task. And at all of these scales and sizes, all the new features we’ve added to the language bindings will work as expected.

The Grid can also manage Docker containers on your local machine, pulling images such as the standalone firefox server so your infrastructure maintenance becomes just a little bit less taxing.

Finally, the Grid is easier to manage. We’ve revamped the UI, placing it on top of a GraphQL model that anyone is free to query and make use of to create their own visualisations or monitors of the Grid. If you’d like to peek into a running session, there are live VNC previews you can open and interact with, providing even better insight into what’s been going on. And if you want even more information, we’ve integrated support for OpenTelemetry into the Grid, so now you can find out exactly what’s happening, where, and when.

I know it’s a cliche to say that it’s a “very great pleasure”, but, being honest with you, it genuinely is. Working on this new version of Selenium has been a chance to work with some amazing engineers, and to be part of a vibrant and energetic community. It’s been a lot of fun to write this code, with these people, and it feels right to say “thank you” to as many of them as possible here. So, without waiting any longer….

We would like to thank all of our users who have helped Selenium be successful over the years. Without you we wouldn’t be where we are today. We would also like to thank all the contributors who have submitted Pull Requests, your contributions make Selenium better. For everyone who’s taken the time to file an issue, and to let us know where there’s been a problem: thank you. We only have a chance to improve when we know that there’s something that needs work!

And finally, thank you to all the Selenium Committers, BrowserStack, Sauce Labs, and our Selenium-Level sponsors for getting this release ready for our users.

We hope you enjoy Selenium 4, and we can’t wait to see what you do with it!

A Tour of 4: Authentication

Introducing how Selenium 4 handles authentication

Before we ship Selenium 4, I thought it would be nice to introduce some of the new features in-depth. Of course, all of the features we’re covering are in the main WebDriver documentation, so if you’re not one for reading blog posts, then feel free to dive in there!

The first thing I’d like to introduce you to is Selenium 4’s new-found ability to authenticate to websites. We’ve always been able to handle “form-based” authentication, where a login page has some INPUT elements that you need to enter the user name and password, but handling sites that use basic or digest authentication has always been harder. When using Selenium 3, the advice has been to get the login cookie and set it on your session before accessing the site, but you can now just call a register method to add a user name and password (or, in the future, other kinds of authentication credentials)

In short, in Selenium 4, the process has become less complicated. Perhaps an example will help?

// This "HasAuthentication" interface is the key!
HasAuthentication authentication (HasAuthentication) driver;

// You can either register something for all sites
authentication.register(() -> new UsernameAndPassword("admin", "admin"));

// Or use something different for specific sites
authentication.register(
  uri -> uri.getHost().contains("mysite.com"),
  new UsernameAndPassword("AzureDiamond", "hunter2"));
  
driver.register(username: 'admin', password: 'admin')
  

Once you’ve done this, every time the driver loads a page that needs authentication, it will automatically use the user name and password you’ve given it.

This feature is currently implemented on top of Selenium 4’s CDP support, and so only works on those browser that support that protocol, but as we push forwards with development of WebDriver Bidi implementations will switch to that when they can.

Selenium 4 Release Candidate 2

The second (and last!) release candidate of Selenium 4 is here!

We’ve listeneed and responded to the feedback from the first release candidate of Selenium 4, and we’re now happy to announce the second release candidate of Selenium 4. This is shipping for .Net, Java, Python, Ruby, and Javascript, and it’s available from all the popular package managers. Go! Try it out!

Unless we encounter a very serious issue or bug, this is likely to be the last release before we push Selenium 4.0.0 itself. What does this mean for you? It’s your last chance to try it on for size and let us know if there are any problems.

In this release, we’ve fixed a nasty issue where closing the first window would cause CDP-related features to break, and have landed a few other cleanups and fixes.

If you’re a Firefox user, please make sure you’re using the very latest version of the geckodriver If you don’t, there may be problems starting sessions as we rely on new features that are included in this new geckodriver release.

If you’re new Selenium 4, then you may want to read this blog post, which explains more, but you might want to have a look at:

  • Relative locators, which provide a way of finding elements by where they are in relation to one another (like “above”, or “to the right of”)
  • Authentication on websites using basic or digest authentication
  • Network interception, which provides an easy easy way to capture and modify HTTP traffic from the browser, as well as making it possible to get HTTP status codes.

Thank you to everyone in the community who’s given us so much helpful and thoughtful feedback on the first release candidate. We really hope that you enjoy this release candidate too!

Selenium 4 Release Candidate

We’re very happy to announce the first release candidate of Selenium 4.

We’re very happy to announce the first release candidate of Selenium 4. We’re shipping this for .Net, Java, Python, Ruby, and JavaScript, so if you’re using any of those languages, go and grab it from your package manager of choice!

This release is the result of a lot of work by the Selenium team project, but most importantly, all the Selenium community who tried our beta releases, and gave us great and valuable feedback.

One thing you may want to do to get ready for the update (which you can do before updating the dependency itself!) is to update the drivers you need. In particular, please update geckodriver to 0.29.1 or later.

Most of the new features in Selenium 4 are mentioned in this blog entry, but the main highlights are:

  • Relative locators, for finding elements using terms that make sense to us humans.
  • The ability to intercept network traffic
  • Authentication with basic or digest authentication.

If this sounds interesting, please download the release candidate from your favourite package manager (maven, nuget, npm, pip, or the gem), or directly from the Selenium site.

All Selenium downloads are now available on GitHub releases

We are happy to announce all Selenium are available on GitHub releases.

We announced on a previous entry our decision to move all binaries from Google Storage to GitHub releases. Today, we would like to announce that this work has been completed and all binaries are also available to be downloaded in each one of the releases we have done in GitHub.

In addition to that, all links on our downloads page have been updated, as well as all references to Google Storage in the Selenium code base.

Please note that all past releases will be available both in Google Storage and GitHub releases, but new ones will only be present in GitHub releases. We recommend everyone to modify your download scripts to keep all tooling up to date.

If you have any questions or comments, please reach out through any of all the available options shown at our support page.

Stay tuned for updates by following SeleniumHQ!

Happy testing!

Selenium downloads will move to GitHub releases

We are moving all Selenium binaries from Google Storage to GitHub releases.

Thanks to Google, Google Storage has been the central place where we have been able to upload all binaries created for each Selenium release, and the place where the Selenium community can download them from. To do so, all people needed to do was visit our downloads page, find the release, and download from there!

The Selenium project hosts its source code on GitHub, and people who are familiar with GitHub know that they can go to the “release” page there to find any downloads for each release of a project.

Rather than hosting the downloads in two places, the Selenium project has decided to host everything on GitHub. We’ll still have links from the download page, but rather than pointing to Google Storage, these will now point to the downloads for each corresponding release tagged on GitHub.

All past releases will be available both in Google Storage and GitHub releases, but new ones will only be present in GitHub releases.

If you are a watcher of the Selenium repo, please note that there will be some noise in your inboxes. We need to create releases for old tags in order to upload the binaries to the release (as is the way GitHub releases work), and we expect to complete this in the next couple of weeks.

If you have any questions or comments, please reach out through any of all the available options shown at our support page.

Stay tuned for updates by following SeleniumHQ!

Happy testing!

The Selenium website has a new look!

We’re very happy to announce the new look for the Selenium website!

We have been working hard during the last few weeks redoing our website. Today, we are very happy to share it with the community and we are hoping to get as much feedback as possible!

We did a major revamp to our website two years ago. However, this revamp had some “technical debt” in it…

We use Hugo to generate our website, and to build a website with Hugo, one normally needs to select a Hugo theme. Our previous website was being built using two different Hugo themes, which was less than ideal. Having two Hugo themes was hard to maintain and accepting contributions was tricky in some cases.

This new website version is using the Docsy theme, made by some folks at Google and used by other popular projects such as Apache Airflow and Kubernetes. Using Docsy helps us to focus more on the website’s content rather than spending lots of time maintaining the underlying details of it.

We all hope you will like the new look and please check our contribution guidelines if you want to contribute to the Selenium website.

Happy testing!

Public Project Meeting - July 15, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on July 15, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 9:00 PM

Here is the agenda proposal:

General project statistics

“se:cdpVersion” is missing in C# and JS

Can all bindings do CDP over Grid?

  • What are the features present in Selenium 4?

Do all bindings implement them

9:01

@AutomatedTester @Puja Jagani @barancev @jimevans @titusfortner @p0deje @harsha509 please tag the ones I forgot

Titus Fortner 9:02 PM

Documentation theme change update

9:03

(I know you’ve been busy)

David Burns 9:04 PM

The python ci will be green today

Diego Molina 9:04 PM

ok, so let’s start

Regarding bugs we had, with @Puja Jagani we fixed the queue issue, so now the Grid runs enough sessions in parallel

9:05

but we still have 3 open issues, mentioned in the agenda

the timeout one has proven to be hard to reproduce, and therefore fix

David Burns 9:05 PM

I was able to reliably recreate the timeout issue. We were hitting issues in chrome that makes us think chrome is breaking

Diego Molina 9:06 PM

really? The original issue is reported with Firefox

David Burns 9:06 PM

Well, I am getting the timeout message, like with Firefox, with chrome 91

9:07

And it’s like the browser tab has hung/crashed and it manifests

@Puja Jagani has the script and I will help reduce if I can

Simon Stewart 9:07 PM

I need to do some rework of NetworkInterceptor to allow everything to be intercepted

9:08

And I think https://github.com/SeleniumHQ/selenium/issues/9594 is fixed by https://github.com/SeleniumHQ/selenium/commit/0795e78559924be1b69b4c8051f5185f289a4268 #9594 Hub reporting no available nodes after a few hours https://github.com/SeleniumHQ/selenium|SeleniumHQ/seleniumSeleniumHQ/selenium | Apr 8th | Added by GitHub

Diego Molina 9:08 PM

I think @Puja Jagani saw the issue this morning, and she said she was having a look

Simon Stewart 9:09 PM

Darn it. I thought we had it fixed

Though we don’t handle the case automatically. I manually tweaked things to make that work

David Burns 9:09 PM

Shoutout to Puja for looking at ALL THE THINGS

Simon Stewart 9:10 PM

+1000

Diego Molina 9:11 PM

aside from those two, now looking into the IE issue with Grid\

as the Grid is sending and invalid JSON to the IEServer

Jim Evans 9:12 PM

um, se:cdpVersion was implemented in .NET in f10cb89

Simon Stewart 9:12 PM

Woot!

Diego Molina 9:12 PM

great, I will update that item :tada:

on the client side, we still need to find time to build the feature parity doc

9:15

Aside from those items, I can give an update on the new (or reworked) website

9:16

I’ve been spending 1-2 hours per day, for now I am only building the website as it is, not digging into the docs yet

Titus Fortner 9:16 PM

“digging into the docs” == “updating the docs theme” ?

Diego Molina 9:16 PM

so, everything below the about menu is already implemented

Titus Fortner 9:16 PM

or writing the docs

Diego Molina 9:17 PM

and I still need to create pages for these links

Titus Fortner 9:18 PM

that all looks great!

Diego Molina 9:18 PM

to bring context, our website is made from two different Hugo themes, glued together during the build process and a few hacks in between

I’ve found https://www.docsy.dev/ a good alternative since it offers a good theme that can contain both things in one

9:19

this requires to recreate our website using the docsy theme, this part is around 60% done then we need to migrate the existing docs into the new theme

9:20

migrating the docs could be done as a task of copying and pasting or we could see it as a chance to reestructure and organise the existing content, and adding a few things more

9:21

if we want to reestructure, it would be nice to see proposals (like a global TOC with brief descriptions of each item)

9:21

then we can reuse what we have currently, and add what is missing

Titus Fortner 9:22 PM

So code snippets would look like this: https://gist.github.com/harsha509/e690dd2c72f1f5c5785be4c8a47c87fd

Simon Stewart 9:22 PM

Lift and shift first, rework second

Diego Molina 9:22 PM

code snippets is an implementation detail

Simon Stewart 9:22 PM

(That is, let’s open the door to contributions first, then figure out how things should be shaped)

Titus Fortner 9:22 PM

I get it’s implementation

9:23

but that’s the piece I can help with :slightly_smiling_face:

Diego Molina 9:23 PM

right now they look similar to that, so it could be a matter of adjusting things

9:24

ideally, the future for code snippets is to render code stored in GitHub, so we can execute it in GitHub actions for example

Titus Fortner 9:25 PM

I guess the question I had about it (what I tried to figure out a few months back and failed) is if there’s a way to point to a repo like you & Christian built for Docusaurus :smile: (another implementation detail) But… there’s nothing preventing us from writing that code now and figuring it out later

David Burns 9:25 PM

I like rust for this reason… when you run tests it also tests the doc snippets

Titus Fortner 9:25 PM

@p0deje implemented that for Ruby

9:26

it’s really neat

I’ll try to find time to propose something here and try to get feedback from people smarter than I am about these things https://seleniumhq.slack.com/archives/CBH302726/p1626364266427200

Diego Molina

if we want to reestructure, it would be nice to see proposals (like a global TOC with brief descriptions of each item) Posted in #selenium-tlc | Today at 9:21 PM | View message

Diego Molina 9:28 PM

all WIP is committed, so if someone wants to have a look, please check https://github.com/SeleniumHQ/seleniumhq.github.io#wip-moving-to-hugo-docsy-theme

SeleniumHQ/seleniumhq.github.io Official Selenium website and documentation Website https://selenium.dev/

Titus Fortner 9:29 PM

Nice work on all of that

Simon Stewart 9:29 PM

Agreed. Excellent work, @diemol. Thank you

Diego Molina 9:29 PM

hopefully I can have the site migrated in a couple of weeks, then we have focus on the docs

9:30

I do not have any more topics, does anyone have something else?

Titus Fortner 9:31 PM

Hopefully I’ll have all my ${paidWork} code in a good place at that point to take a break

9:32

I also promised the chromedriver team that I’d help fix up their Ruby code

Lots of things to update

9:33

Right now I’m busy updating all of my Java test examples from JUnit 4 to JUnit 5 thanks to @Puja Jagani

Diego Molina 9:36 PM

ok, so it seems we are done with today’s public meeting, thank you everyone!

Public Project Meeting - June 17, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on June 17, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 8:52 PM

Here is the proposed agenda:

General project statistics

  • Previous meeting: 167 open issues, 28 open pull requests
  • Currently: 170 open issues, 23 open pull requests

Pending work for the RC 1?

Language bindings

  • “se:cdpVersion” is missing in C# and JS
  • Can all bindings do CDP over Grid?
  • What are the features present in Selenium 4?
  • Do all bindings implement them?

Release process

After beta 4, we should document how each binding and the Grid are released

Selenium IDE

8:56 PM

btw, there is no hurry to start, we can also start when most folks are available, I believe this won’t be a long one

Diego Molina 9:01 PM

Just a comment from the increased number of issues… I believe users are starting to give more feedback, so that’s good

9:05 PM

I believe we can slowly jump into the first topic: Pending work for the RC 1?

9:06 PM

Regarding the Grid, I would say it is feature complete

9:07 PM

but we have a couple of bugs we are checking with @Puja Jagani

9:08 PM

I think we can sort them out during the next week (fingers crossed :slightly_smiling_face:)

Diego Molina 9:13 PM

talking about the language bindings, I think the most relevant thing for RC1 is to check feature parity

Titus Fortner 9:14 PM

@AutomatedTester did the shadow Dom work you did end up in geckodriver /Firefox yet?

9:15 PM

I know some bindings implemented the endpoints already

David Burns 9:15 PM

No, it’s nearly done

Maybe I should hand it to the Mozilla folks and maybe they could finish it off

Titus Fortner 9:15 PM

I kind of wanted to wait until I could make sure tests passed and stuff because I never trust myself :)

David Burns 9:16 PM

There is an issue with something between marionette and geckodriver but those are super hard to diagnose

Titus Fortner 9:17 PM

There were some accessibility endpoints? I’m not sure we’ve all added. And I think ruby deprecated methods that other languages implemented with JS

I’ve been meaning to do a deeper dive into the various tests, but haven’t gotten there yet. Ruby broke CDP in last beta release, we need to figure out

9:21 PM

We probably need to do a beta 4.1 just for ruby with that fix

Diego Molina 9:22 PM

Since the VNC stuff has been implemented, I have a bit of time next week to start working in an issue to document feature parity

Titus Fortner 9:23 PM

I’ll dedicate some time this month to helping with it

Probably the last topic is Release process

9:24 PM

Last week Simon recorded the Java release and shared the video so I can document it

It’d be great if the other folks who also do releases do the same, so we can document and potentially automate releases

Diego Molina 9:30 PM

I believe that was everything we had in the agenda

Titus Fortner 9:36 PM

Documentation. We got an offer from a company to help us with documentation so they can integrate it with their product which is an executable browser IDE thing

Or something. I’m not entirely certain, but sounds potentially interesting.

Diego Molina 9:37 PM

tell us more, @titusfortner :slightly_smiling_face:

Titus Fortner 9:37 PM

I at least want to get a demo and see what they mean.

I don’t know more, yet. :)

Diego Molina 9:37 PM

ah ok, they reached out to you privately :slightly_smiling_face:

Titus Fortner 9:38 PM

Yeah, I’ll loop you in when we set up a demo. Might not work for what we need

Diego Molina 9:39 PM

sounds good

Public Project Meeting - June 03, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on June 03, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 9:01 PM

:wave: Anyone around for our public meeting? @barancev @manoj9788 @mmerrell @simonstewart @harsha509 @Puja Jagani @AutomatedTester @titusfortner @p0deje @jimevans

9:02 PM

Let me post our ongoing agenda

General project statistics

  • Previous meeting: 161 open issues, 25 open pull requests
  • Currently: 167 open issues, 28 open pull requests
  • Pending work for the Beta 4?

Server - Grid

  • Pipe VNC connectors through the WebSocket plumbing for live video
  • Check that the Redis/JDBC backed services actually function
  • Distributor follows spec when allocating new sessions

Language bindings

  • “se:cdpVersion” is missing in C# and JS
  • Can all bindings do CDP over Grid?
  • What are the features present in Selenium 4?
  • Do all bindings implement them?

Release process

  • After beta 4, we should document how each binding and the Grid are released

Selenium IDE

  • Who knows what the release process is? What is needed?

  • Who can help reviewing pull requests?

  • please feel free to add any topics you’d like to add

Todd Tarsi 9:04 PM

I have been puttering on running ide v3 inside of ide v4, and it is kinda coming along. I’ll just post a screencap of where it’s at when we get there

Simon Stewart 9:04 PM

Agenda LGTM

Diego Molina 9:05 PM

A comment on General project statistics It feels as if folks are trying betas a bit more, I see an increase of issues

Simon Stewart 9:06 PM

That’s a Good Thing.

Diego Molina 9:06 PM

Most of the Grid ones can be fixed with docs, so I can take time to do that

other ones, seem to be either bugs or people just figuring out how to use beta 3, not sure

Simon Stewart 9:06 PM

I got some informal feedback from someone who said “btw it seems a ton more stable than 3.141.59 for us on soak test”.

Diego Molina 9:06 PM

That is nice to know

Simon Stewart 9:06 PM

Are there any issues we should be prioritising?

I’ve not read them recently, but if there’s a theme, we can try and address the systemic causes

Diego Molina 9:09 PM

We also have a few PRs pending to review, some of them related to the Grid, which @Puja Jagani created, and maybe when things are less intense, you could have a look @simonstewart, please?

Simon Stewart 9:10 PM

Sure. I’ll get on that ASAP

Diego Molina 9:10 PM

ok, so Pending work for the Beta 4?

Simon Stewart 9:11 PM

Just the .Net bindings, I think New

Diego Molina 9:11 PM

  • Server - Grid
  • Pipe VNC connectors through the WebSocket plumbing for live video
  • Check that the Redis/JDBC backed services actually function
  • Distributor follows spec when allocating new sessions I think “Distributor follows spec when allocating new sessions” was done, right?

and I believe @Puja Jagani tackled “Check that the Redis/JDBC backed services actually function”, not sure

Simon Stewart 9:11 PM

I think so, just checking

Simon Stewart 9:11 PM

I think so, just checking

9:12 PM

Yeah. We follow the spec better now

Before rc1, I’ll do some more command line testing of it using curl. I bet I can still make it fail

Diego Molina 9:13 PM

I was going to start working on “Pipe VNC connectors through the WebSocket plumbing for live video” but I bumped into the StressTest not passing, which lead to a fix. I want to have this before RC1, hopefully for beta 4

Simon Stewart 9:13 PM

Hopefully the infrastructure you’ll need is already in place.

I guess you’re going to expose a se:vnc capability or similar?

Diego Molina 9:14 PM

yes, that is the idea

Simon Stewart 9:14 PM

Perfect

Which reminds me, we should make sure that both Sauce and BS know that the Selenium 4 local ends will all try connecting to se:cdp and their infra could/should/might want to handle that

Titus Fortner 9:18 PM

local ends should only try connecting to that endpoint if using a devtools feature. Might make sense to just let it error out as unknown endpoint if it isn’t supported.

Diego Molina 9:18 PM

We are working internally on that, everyone at Sauce is aware :slightly_smiling_face:

Simon Stewart 9:18 PM

@titusfortner that’s what the java code does

@diemol that’s great news :slightly_smiling_face:

Diego Molina 9:20 PM

Ok, so Language bindings

  • “se:cdpVersion” is missing in C# and JS
  • Can all bindings do CDP over Grid?

I am not sure if @harsha509 and @AutomatedTester had time to use that in the JS bindigns

Simon Stewart 9:21 PM

If bindings are using se:cdp properly, then they should be able to do CDP over Grid.

Sri Harsha 9:22 PM

No @diemol. As discussed in last we punt it to rc1. If time permits i will look into it for sure

Simon Stewart 9:22 PM

I think the .Net bindings aren’t aware of the se:cdp capability yet

A quick grep suggests that’s true

Diego Molina 9:22 PM

thank for the update, @harsha509!

ok, so maybe we can jump to the next topic:

  • What are the features present in Selenium 4?
  • Do all bindings implement them?

I have not been able to get this list done, lack of time and also I do not know where to start to get this information

9:26 PM

from the top of my head, is:

  • Relative locators (Java can accept the locator, the other bindings use withTag)
  • New tab command
  • CDP (but what CDP features?)
  • Full page screenshot in Firefox
  • Print to PDF

9:26 PM

any others?

Sri Harsha 9:26 PM

JS bindings doesnt have /session/{session id}/element/{element id}/shadow endpoint implemented

9:27 PM

not sure of other language bindings

  • computedRole

  • computedLabel

Titus Fortner 9:28 PM

Do any of the drivers have shadow endpoint implemented?

Simon Stewart 9:28 PM

I’ll wire that into Java next week

Jim Evans 9:28 PM

working away at .NET to get ready for beta. :tada: 4

Simon Stewart 9:28 PM

I may wire in a fallback too

Jim Evans 9:29 PM

i want to also include the shadow endpoints, but i may not get to that.

Simon Stewart 9:29 PM

It can wait for rc1.

9:30 PM

For the record, I’m thinking of rc1 as “if we want to, we could tag this as 4.0 and be done”, so until we ship that, we don’t need all the commands in place. :+1: 1

9:30 PM

I’m seriously hoping beta4 is the last beta

Titus Fortner 9:31 PM

So, it’s not explicitly on the agenda, but relates to the languages implementing everything….

documentation.

Would be nice to have something that explains everything that is new with examples in each of the languages

9:31 PM

(as in I am willing to help not just complain about this one)

9:33 PM

but…

  • Do we still want to update to a different theme first?

  • Would it be possible to get help from a “Technical Content Strategist” or the like to help us organize things?

Diego Molina 9:33 PM

that is my idea by listing the features and seeing where they are implemented and where they need to be implemented :+1: 2

Sri Harsha 9:33 PM

I have tried my best to provide examples for all language bindings and a note on top of it like https://www.selenium.dev/documentation/en/webdriver/browser_manipulation/#create-new-window-or-new-tab-and-switch

Simon Stewart 9:34 PM

@titusfortner a human’s guide to the new features is a good idea.

Titus Fortner 9:34 PM

After spending a little time with the Sauce tech content team it has really showed me how much of a difference it makes to have someone who does this for a living organize things

I can look at something and say “this structure doesn’t make sense,” but my solution will be something that also doesn’t make sense. :smile:

Diego Molina 9:36 PM

I want to move to Docsy, a hugo theme that helps us to have website and docs in one single place

Titus Fortner 9:36 PM

and if we can reference code snippets from selenium repo tests rather than having to create/maintain them independently in our docs that would be huge

Is docsy the one I was looking at last time (whenever that was)?

Simon Stewart 9:36 PM

@diemol can the move to docsy be done at the same time as the docs themselves are updated?

Diego Molina 9:36 PM

and I have found Hugo shortcodes that can render real tests hosted in GitHub repositories, so we can run those tests in GitHub actions and provide working examples :tada: 2

Simon Stewart 9:37 PM

Oh! That’s nice!

Diego Molina 9:37 PM

I want to move the website first and leave for last the docs, but it will be hard to sync things, but it can be done

Titus Fortner 9:38 PM

I feel like if we have

  • A more intuitive structure of documentation
  • A template for adding code snippets in tabs

then it’s just a matter of finding the test code in the project for each feature

Diego Molina 9:39 PM

nro. 2, is the Hugo shortcode I found

Titus Fortner 9:39 PM

and I’d like to propose we actually look to hire someone to help us with #1.

Top notch documentation for Selenium 4 could make all the difference

Simon Stewart 9:39 PM

We can easily set up an “example” repo that people can look at

Titus Fortner 9:40 PM

@diemol yeah, I just need an example in the template we want to use, because that’s what I was missing the last time I tried to help :slightly_smiling_face:

Luis Correia 9:41 PM

sorry for intruding, the documentation so far is too “surgical”, lacking proper context. I would provide a full Java/C#/Python Class/Snipped with inline comments that would explain constructs

Titus Fortner 9:41 PM

I loaded the new template, spent like 8 hours tyring to figure out how to get tabs to work, and then gave up. :smile:

Luis Correia 9:42 PM

bonus points would go to code interacting with an example website

Diego Molina 9:42 PM

This is normally the type of thing that gets done when someone spends a few days working on it and then enabling others to work :+1: 1

9:42 PM

So hopefully I can have time for that after beta 4 is released

Titus Fortner 9:43 PM

I think if I understood Go better I might have been successful

9:43 PM

it just is very different from Docusaurus and Jekyll which are the 2 static site implementations I’ve worked with

and I like @Luis Correia’s point about more context

Diego Molina 9:43 PM

We can pair on that, I don’t know Go so much, I just know how to copy & paste properly

Titus Fortner 9:44 PM

but as someone who writes things with a lot more context, it’s also a *much more significant undertaking

9:44 PM

Watir we have the inline docs that are surgical, then “guides” on our website that try to explain things

And we have examples in each of the repos against our test server

something we might do is publish the test server on selenium.dev so anyone can run their own code against it without having to build selenium?

9:45 PM

I did that for the watir test code as well

Luis Correia 9:46 PM

yes, public test servers are a good thing

I can help testing and correct testing code (mainly for Java) against that server

I’m kinda “well versed” into Maven build cycles and can probably help the project in that respect

Titus Fortner 9:48 PM

I just copy/pasted everything to the examples directy: http://watir.com/examples

People can change url_for(“forms_with_input_elements.html”) in the specs to “http://watir.com/examples/forms_with_input_elements.html"

Diego Molina 9:48 PM

maybe we can jump into the next topic? Release process

  • After beta 4, we should document how each binding and the Grid are released

Titus Fortner 9:52 PM

For Ruby you need an account on rubygems. We can probably set one up a common email @selenium.dev with a secret password

9:53 PM

we can build the gem with bazel now, but the actual release requires manual intervention still

but I think we all agree that it is needed and we can do it after Se4 release

Diego Molina 9:56 PM

Something we were talking yesterday was to record the release process in a zoom call or similar and some of us who have more time, can document that process

Simon Stewart 9:58 PM

The java process isn’t too taxing

9:58 PM

The main thing is you need a Sonatype OSS account so you can publish the artifacts

Diego Molina 9:59 PM

so I believe we can focus on this topic a bit more when we feel close to beta 4 release?

Titus Fortner 10:01 PM

or RC :slightly_smiling_face:

Simon Stewart 10:03 PM

We are close to the b4 release :slightly_smiling_face:

@titusfortner getting the leg-rc package working properly again is on my list

Diego Molina 10:04 PM

I think we should find a way to document releases sooner than later because I imagine we will need to iterate faster when RC1 happens

Titus Fortner 10:04 PM

I meant release candidate version vs beta 4, not the RC package, but sure :wink:

Simon Stewart 10:04 PM

@barancev and I both have the keys for java releases

Diego Molina 10:11 PM

ok, I guess the idea would be to simply record those sessions

Sri Harsha 10:11 PM

Coming to Selenium-ide, I have the production build from V3 branch.

At the time of release i can change the build version, build, zip it and pass it over to someone who has access for release

Titus Fortner 10:11 PM

:thumbsup:

Diego Molina 10:12 PM

but I think we can chat more about this when we are actually going to release beta 4?

10:13 PM

Good idea to jump into the next topic :slightly_smiling_face:

Selenium IDE

  • Who knows what the release process is? What is needed?
  • Who can help reviewing pull requests

so releasing it is as easy as uploading the zip somewhere? to the browser stores?

Todd Tarsi 10:16 PM

I can help review pull requests, but I don’t have any permissions around that stuff. Would reviewing PRs stil lhelp?

Diego Molina 10:17 PM

that would definitely help

Todd Tarsi 10:17 PM

Sounds good, I’ll take up a more active role reviewing PRs then.

Diego Molina 10:18 PM

I can help with merging if needed :slightly_smiling_face:

but we really need to figure out how to release

Todd Tarsi 10:18 PM

The release process seems like something that shouldn’t be that complicated. We build for edge, firefox, and chrome and then upload the zip files to the stores, right?

Sri Harsha 10:18 PM

Yes @diemol. Uplaoding the zip in webstore who has release access

Diego Molina 10:18 PM

I will try to ping Dave and Tomer privately

Simon Stewart 10:18 PM

Thank you @Todd Tarsi Helping to review things would be really helpful

There’s a chance I have access to the release account

Sri Harsha 10:19 PM

i asked @corevo . He said @simonstewart may have access to webstore to publish

Simon Stewart 10:19 PM

At least for Firefox, and maybe Chrome

Diego Molina 10:20 PM

sounds good, that would help a lot

Simon Stewart 10:22 PM

Will check tomorrow

IRC channels are moving to Libera.chat

Moving to Libera.Chat

Yesterday, 19 May 2021, all the staff of Freenode, the IRC network, collectively resigned as staff because of what they felt was a hostile takeover.

Freenode has always been seen as the home of Free and Open Software, so it was natural that you could find us on the #selenium channel there. To maintain this openness, and inclusivity, we are moving our IRC Channel over to Libera.chat. It is has been created by the team that previously maintained Freenode.

We are in the process of moving our Slack-to-IRC bridge over and hopefully the matrix bridge will be created soon so that we can have a free and inclusive project on the new IRC Servers. There may be a few hiccups so if you could bear with us.

If you have any questions please feel free to reach out to me on twitter or on one of the chat protocols we support.

Finally, thank you to “Milen from Bulgaria” for helping secure the channel for us on Libera.chat.

Public Project Meeting - May 20, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on May 20, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Simon Stewart 9:00 PM

@AutomatedTester, @p0deje @titusfortner, @harsha509 @Puja Jagani @barancev @jimevans @Todd Tarsi and anyone else who’s interested, come on down!

9:00 PM

Any agenda items?

Diego Molina 9:00 PM

I can paste the ongoing agenda and leave you to it :slightly_smiling_face:

Simon Stewart 9:00 PM

Yes please!

Diego Molina 9:01 PM

Pending work for the 4th Beta?

  • Server - Grid
  • Pipe VNC connectors through the WebSocket plumbing for live video
  • Unify new Session Queue
  • Stress test the new Grid on AWS or similar with >50 simultaneous tests
  • Check that the Redis/JDBC backed services actually function
  • Distributor follows spec when allocating new sessions
  • More than 1 IE session per Node? https://github.com/SeleniumHQ/selenium/issues/9388

Language bindings

  • “se:cdpVersion” is missing in C# and JS
  • Can all bindings do CDP over Grid?
  • What are the features present in Selenium 4?
  • Do all bindings implement them?
  • Selenium IDE
  • Who knows what the release process is?
  • What is needed?
  • Who can help reviewing pull requests?

9388 Grid 4 doesn’t allow more than 1 session for Internet Explorer

:boom: Regression Report

We used Selenium Grid 2 and 3 to run multiple IE sessions in parallel without issues for many years. But now Selenium 4 restrict the number of IE sessions to only 1 without any way to override the restriction.

Last working Selenium version

Worked up to version: 3.141.59

Stopped working in version: 4.0.0-alpha

To Reproduce

  1. Start the hub using java -jar selenium-server-4.0.0-beta-3.jar hub
  2. Start the IE node using java -Dwebdriver.ie.driver=IEDriverServer-3.150.1.exe -jar selenium-server-4.0.0-beta-3.jar node –max-sessions 7 –override-max-sessions true Expected behavior A grid node that allows up to 7 tests that use IE to run in parallel. Environment OS: Windows
    Browser: IE
    Bro… Show more Labels C-grid https://github.com/SeleniumHQ/selenium|SeleniumHQ/seleniumSeleniumHQ/selenium | Apr 17th | Added by GitHub

Simon Stewart 9:01 PM

Thank you!

9:01 PM

I’ll add: What do we want in RC1?

9:01 PM

Anyone want to add anything else?

Diego Molina 9:02 PM

Also

General project statistics

  • Previous meeting: 157 open issues, 25 open pull requests Currently: 161 open issues, 25 open pull requests

9:02 PM

(so, I cannot run the meeting, but I am around :slightly_smiling_face:)

Simon Stewart 9:02 PM

It’s much appreciated. Thank you, @diemol

9:03 PM

I’m guessing silence means that there’s nothing else to add?

In that case: Pending work for beta 4

Simon Stewart 9:04 PM

I saw that @Puja Jagani has got tracing working again, which I’d love to see in b4.

Puja Jagani

Will be landed tomorrow!

Simon Stewart

Woohoo!

Simon Stewart

Thank you :slightly_smiling_face:

Simon Stewart 9:04 PM

And @diemol posted a video of the Grid scaling up to 50 clients

9:04 PM

I’ve done some perf work to get better utilisation

9:05 PM

And we’ve unified the session queue too

9:05 PM

That is, I think Grid is good to go for b4 once the tracing work is landed

9:05 PM

Anyone (@harsha509 @AutomatedTester) know about se:cdpVersion in the JS bindings?

David Burns 9:07 PM

I’ve not done it

Simon Stewart 9:07 PM

(I see that @harsha509 is typing….)

Sri Harsha 9:07 PM

cdp version check is not implememted on js.

Simon Stewart 9:07 PM

OK. Do we need it for beta 4, or should we punt it to rc1?

David Burns 9:08 PM

We can punt it

Simon Stewart 9:08 PM

Great. Let’s punt it to rc 1

David Burns 9:08 PM

No one has noticed how it works and no bug reports so…

Simon Stewart 9:08 PM

What about CDP over the Grid?

If you’re using se:cdp for the websocket endpoint, it’ll work

9:09 PM

(@titusfortner and @p0deje I’m curious about the ruby bindings and CDP-over-Grid too)

David Burns 9:09 PM

That is there already

Titus Fortner 9:11 PM

yeah, for Remote, Ruby gets the version from se:cdpVersion

9:12 PM

We run the tests for both local and via the Grid, and everything is passing

Simon Stewart 9:12 PM

Do the Ruby bindings use se:cdpVersion too?

I guess you lean into the typing less than Java and .Net, so maybe it doesn’t matter so much

Titus Fortner 9:13 PM

https://github.com/SeleniumHQ/selenium/blob/411b883645023d1e1a629a3197d3552253b93f2f/rb/lib/selenium/webdriver/remote/driver.rb#L54 driver.rb

capabilities[‘se:cdpVersion’].split(’.’).first

https://github.com/SeleniumHQ/selenium|SeleniumHQ/seleniumSeleniumHQ/selenium | Added by GitHub

Simon Stewart 9:13 PM

Perfect :slightly_smiling_face:

9:14 PM

waits for @titusfortner to type

Titus Fortner 9:14 PM

no need, I’m not saying anything useful

9:14 PM

but Ruby & devtools things I think we’re good

Simon Stewart 9:15 PM

Great. Moving on, then!

9:15 PM

I get the feeling that if anyone had the time and energy, @jimevans would appreciate a hand with the .Net bindings

9:16 PM

I know that last status meeting, he mentioned that there were some features he wanted in there before beta4

David Burns 9:17 PM

@Puja Jagani has done some .Net stuff. If Jim tells us what needs doing we can help

Simon Stewart 9:18 PM

I think it’s probably CDP-over-Grid, and maybe the CDP version stuff

9:18 PM

But, obviously, @jimevans knows waaaay more than I do about that

David Burns 9:18 PM

I need to do the multiple options handling to capabilities work in the python code

9:19 PM

If I had deprecated some of the code in 3.14 it would be Waaaaaaay easier

Simon Stewart 9:20 PM

We can have a discussion about what you’re thinking of breaking later

9:20 PM

It may just be that we do the simple thing, though

As far as I’m concerned, then, the thing we’re waiting for is @jimevans to give us the green light for the .Net stuff being ready for beta4

Titus Fortner 9:21 PM

I did just notice that Ruby hasn’t implemented Full Page screenshot support for Firefox, yet; I’ll get that added today.

And on that vein, I need to create some examples of browser specific features being used with Remote drivers in each language, because I know not everything is working in every binding, yet

Simon Stewart 9:21 PM

What do other people think?

David Burns 9:21 PM

Nothing will break promise

Simon Stewart 9:21 PM

@titusfortner I think we can set “feature parity between bindings” as an rc1 goal

Titus Fortner 9:21 PM

yup, makes sense

9:22 PM

I"ll get the Firefox screenshot thing in before beta4

Simon Stewart 9:22 PM

As long as the broad features are there in beta4 (notably, the CDP-related infrastructure, if not the nicer APIs built on top)

Titus Fortner 9:22 PM

Very excited about how close we are :slightly_smiling_face:

Simon Stewart 9:22 PM

Which neatly brings us on to What do we want in RC1?

Titus Fortner 9:23 PM

ensure feature parity :slightly_smiling_face:

Simon Stewart 9:23 PM

  • Feature parity between languages
  • Updated CDP versions for current browsers
  • More Grid stress testing

Titus Fortner 9:23 PM

or at least document it

Simon Stewart 9:23 PM

Documentation :slightly_smiling_face:

Titus Fortner 9:23 PM

while we’re here, the JUnit 5 dev doesn’t have any ideas for how to fix the issue:

Comment on #2273 Parallelism value ignored for the fixed strategy

I’m all ears if anyone has a proposal how to resolve this. The only thing I’ve come up with would be to wrap the execution of each test in another, non-ForkJoinPool thread but that would double the number of required threads and have performance implications. https://github.com/junit-team/junit5|junit-team/junit5junit-team/junit5 | May 13th | Added by GitHub

9:24 PM

it’s definitely a JUnit thing, but it’s going to affect our users :disappointed: :disappointed:

Simon Stewart 9:24 PM

Why they don’t just maintain an AtomicInteger of the number of running threads is beyond me

Titus Fortner 9:25 PM

Can you suggest that?

9:25 PM

I am so far out of my depth with threading that I will get in the way more than help

Simon Stewart 9:25 PM

We can get this sorted :slightly_smiling_face:

Titus Fortner 9:26 PM

:thumbsup:

Simon Stewart 9:26 PM

Does anyone have anything else that they want to see in rc1?

9:26 PM

Or, to rephrase, if we ship rc1 and nothing major blows up, what would stop us making the release after that 4.0?

9:28 PM

(I’m going to take silence here to mean that everyone is really busy right now)

Titus Fortner 9:29 PM

Your list looks good to me…

Simon Stewart 9:30 PM

OK.

9:31 PM

So, let’s move on to Selenium IDE

I think that there’s a small core of us who could release the IDE

9:32 PM

But @corevo and DaveH would know the process best

9:33 PM

To recap:

  • Selenium IDE
  • Who knows what the release process is?
  • What is needed?
  • Who can help reviewing pull requests?

Todd Tarsi 9:33 PM

@simonstewart - I would love to help in any capacity that I can, including reviewing PRs.

Simon Stewart 9:34 PM

That’s great news :slightly_smiling_face:

9:34 PM

Thank you

9:34 PM

Again, it feels like we’re not going to make much progress today on this.

Titus Fortner 9:35 PM PM

I think we need to hear back from former owners to make progress on it

Simon Stewart 9:35 PM

Can I suggest that we set up a call or email chain with @corevo, DaveH, @harsha509 and whoever else is interested to move that forwards?

Titus Fortner 9:35 PM

can we reach out to them not-on-slack since they don’t seem to be paying attention here?

yes, that :slightly_smiling_face:

Simon Stewart 9:35 PM

nods

@harsha509, would you be okay arranging that?

If we can get you email addresses….

Sri Harsha 9:36 PM

I can take inputs from @corevo on how to release and document it.

9:37 PM

Sure @simonstewart

Simon Stewart 9:37 PM

Brilliant. Thank you. I’ll be happy to help move things along if I can

Sri Harsha 9:37 PM

:bow:

Simon Stewart 9:37 PM

@Todd Tarsi I bet it’d be interesting to hear how the electron work was going

Todd Tarsi 9:38 PM

@simonstewart - It will be better with a PR as a point of discussion, so I’ll put one out later tonight.

Simon Stewart 9:38 PM

Oh yeah. Definitely a PR discussion :slightly_smiling_face:

9:39 PM

Alright then, folks. I think we’ve romped through the agenda.

9:39 PM

Is there anything else people would like to talk about?

Titus Fortner 9:39 PM

What is the current status of BiDi?

Luis Correia 9:40 PM

Documentation :slightly_smiling_face:

Titus Fortner 9:40 PM

I think we closed the issue that was listing what we were going to implement, presumably because we’ve implemented the things we deemed essential

Simon Stewart 9:41 PM

Status of Bidi? The w3c spec, or the use cases we planned to support?

Titus Fortner 9:41 PM

the latter

and the former to the extent that it might be what is driving the latter?

Simon Stewart 9:41 PM

@Luis Correia Acknowledged. We’ll talk about docs after the bidi stuff

The w3c spec won’t be finished before we ship 4.0, so let’s set that aside

Titus Fortner 9:42 PM

oh yes, I waited until after we were done talking about betas and RCs to bring this up :slightly_smiling_face:

this is future roadmap things

Simon Stewart 9:42 PM

So, the use cases from the issue were:

  • Listen for DOM events
  • Log what’s going on in the browser including console and JS errors
  • Fail fast on any JS error
  • Intercept network requests allowing to mock backend requests
  • Record traffic (Alex: Allow replaying it?)
  • Authenticate on secure pages
  • Bootstrap scripts (for example, execute JavaScript snippet on every page load)

9:43 PM

Recording traffic can be done by the same code that does network interception

I think bootstrap scripts are probably the most poorly supported thing right now

9:44 PM

Technically, Java has code for it, but I have zero confidence it’s robust. Or, indeed, that I actually landed it

The w3c spec started with a discussion of use cases too, and there’s a lot of overlap (surprise!)

9:45 PM

I’d love to get script pinning using CDP in place. That’ll exercise bootstrap scripts sufficiently

Titus Fortner 9:46 PM

So maybe I need to better understand how the spec and selenium code are supporting each other. Do we need to make sure the features we are adding are documented in the spec?

(i.e. is one driving the other, or is this like before where geckodriver & w3c drove each other)

Simon Stewart 9:47 PM

The spec is currently putting in place a lot of the groundwork to start doing useful things, so it’s not covering the use cases yet

9:48 PM

I suspect that Selenium 4 utilisation will help steer the spec as we find out the subset of the CDP that’s actually useful for testing and automation

Titus Fortner 9:48 PM

perfect, thanks

Simon Stewart 9:48 PM

It’s something of a chicken-and-egg problem right now.

9:49 PM

Once we ship 4, I’m planning to switch my focus to the spec

Titus Fortner 9:49 PM

always is with specs, right? :slightly_smiling_face:

Simon Stewart 9:49 PM

Always :slightly_smiling_face:

We have 10 minutes left! Shall we move on to Documentation?

Titus Fortner 9:49 PM

@diemol are we moving / have we moved to a different theme?

for docs

Simon Stewart 9:49 PM

@Luis Correia could you please expand on what you meant?

Luis Correia 9:50 PM

about single port grid or documentation?

Simon Stewart 9:51 PM

Documentation, please

Luis Correia 9:52 PM

ok, it is my understanding that current docs are too surgical, explaining one thing but maybe not with full context Specifically in the grid 4 docs

Simon Stewart 9:52 PM

How would you like that to change?

Luis Correia 9:53 PM

in the website there isn’t a section with all available options and switches, one has to delve into code

9:53 PM

note: it’s not a blocker for release but rather a nice to have feature

9:55 PM

this is a good starting link

https://www.selenium.dev/documentation/en/grid/grid_4/

selenium.dev

Grid 4 :: Documentation for Selenium Documentation for Selenium

Simon Stewart 9:55 PM

OK, so a better description than you get from selenium -h?

Titus Fortner 9:55 PM

https://www.selenium.dev/documentation/en/grid/grid_4/configuring_components/config_help/

selenium.dev

Config help :: Documentation for Selenium

Documentation for Selenium

Luis Correia 9:55 PM

I would be happy with that on a webpage

Simon Stewart 9:56 PM

OK. Would you please leave a comment on https://github.com/SeleniumHQ/selenium/issues/8165?

8165 Update user docs with new Selenium 4 features :rocket: Feature Proposal Selenium 4 brings a set of all-new features and https://www.selenium.dev/documentation/en/ needs to be updated to contain the related docs for them. Motivation

It’d be nice to have the following new features covered in the docs: • Relative locators • CDP integration • New Grid 4.0 Example … Labels C-docs, Selenium-4-Beta Comments 2 https://github.com/SeleniumHQ/selenium|SeleniumHQ/seleniumSeleniumHQ/selenium | Apr 7th, 2020 | Added by GitHub

Titus Fortner 9:56 PM

looks like the page I linked there shows the commands but not the output?

Luis Correia 9:56 PM

@titusfortner or even why, that’s proper context

9:57 PM

i will @simonstewart

Titus Fortner 9:57 PM

providing context for it would definitely be useful

Simon Stewart 9:57 PM

Much appreciated. That’s the tracking issue for improving the docs, so adding comments there will be helpful

Titus Fortner 9:58 PM

Or you can PR the changes you think would provide the context; docs are all in a public repo.

I’m struggling a bit with Sauce documentation right now. I’m good at making sure the info is “correct,” but finding I’m not so great on explaining why it matters to people, and that part is important

Simon Stewart 9:59 PM

@titusfortner I guess you’ve seen https://developers.google.com/tech-writing?

Titus Fortner 9:59 PM

It’s like I have “presentation” mode and “documentation” mode and I can’t get them to work together :smile:

Simon Stewart 9:59 PM

Ah yeah. It’s hard to get the narrative right

Titus Fortner 10:00 PM

well, it also helps to have people at Sauce whose actual career is organizing info so people can understand it

10:00

I hadn’t seen the tech-writing page, that looks interesting

Simon Stewart 10:01 PM

Shall we wrap up? I think we covered most of the things we needed to

10:02 PM

The major decision was to wait for @jimevans to give us the green light for shipping beta 4.

I’m totally fine waiting as long as necessary for that, but I also heard @AutomatedTester suggest that maybe @Puja Jagani could help with that

Titus Fortner 10:06 PM

sounds great, thanks @simonstewart!

Public Project Meeting - May 06, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on May 06, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Simon Stewart 9:01 PM

Alright then. It’s time

9:02

@AutomatedTester, @titusfortner @p0deje, @jimevans, @harsha509, @barancev, @Puja Jagani, and @diemol (plus anyone else who’s interested)

Let’s get the show on the road

9:02 PM

I think we can wait for @diemol to be back for the stats for the past couple of weeks

Any agenda items?

9:03 PM

  • Stats
  • What do we want in Beta 4?
  • When do we ship Beta 4?

Diego Molina 9:03 PM

Here, quick meeting with my manager done

David Burns 9:04 PM

Managers are the worst…

Simon Stewart 9:04 PM

hands over meeting reigns to @diemol

Diego Molina 9:04 PM

Stats from previous meeting:

  • 157 open issues,
  • 25 open pull requests
  • Current: 163 open issues, 30 open pull requests

Data taken from this link[https://www.diemol.com/github-repo-stats/seleniumhq_selenium/index.html]

David Burns 9:05 PM

A lot of those are from @Puja Jagani

9:05 PM

she has been busy

Simon Stewart 9:06 PM

She’s been rocking it

Diego Molina 9:06 PM

the issues or the PRs?

9:07

Right, work that we want for the next beta (4)

(I could not contribute that much during the last two weeks :confused:)

9:08 PM

These are items from the last meeting:

  • Pipe VNC connectors through the WebSocket plumbing for live video
  • Investigate: Grid gets stuck when screenshot is taken in a terminated session
  • Investigate: Grid gets stuck when the browser driver process cannot be killed
  • Investigate: Router request timeouts when forwarding command to Node
  • Unify new Session Queue
  • Stress test the new Grid on AWS or similar with >50 simultaneous tests
  • Check that the Redis/JDBC backed services actually function
  • More than 1 IE session per Node? https://github.com/SeleniumHQ/selenium/issues/9388

Maybe only this one got done? “Unify new Session Queue”

Simon Stewart 9:08 PM

I’d like to add:

  • Distributor follows spec when allocating new sessions

David Burns 9:08 PM

Do we have issues/docs on the investigate stuff?

Simon Stewart 9:08 PM

Yeah. We unified the new session queue

9:09 PM

I’ve a PR in the works for the “follow the spec” bit

David Burns 9:09 PM

for the last item about IE… we can allow that to happen but it seems like a major footgun

Diego Molina 9:10 PM

There are issues for the investigation items, and maybe there is a PR from @Puja Jagani solving the “browser driver process cannot be killed” one

I will double check that all items have a GitHub issue, and if not, I will create one

David Burns 9:12 PM

thank you

Diego Molina 9:14 PM

For language bindings we had this:

Language bindings

  • “se:cdpVersion” is missing in C#, Java and JS
  • Can all bindings do CDP over Grid
  • Document features and double check all bindings implement all features

Saksham Gupta 9:14 PM

Hello all, been a year since I started my internship. Thought I’ll drop by to say hi.

Simon Stewart 9:15 PM

Java should be doing se:cdpVersion now

David Burns 9:15 PM

@harsha509 do you need a hand with the cdpVersion stuff for JS?

Simon Stewart 9:16 PM

I think we need to review what’s in the python bindings that’s not elsewhere: my impression is that there’s been a few things added

David Burns 9:17 PM

@simonstewart only 1 thing which is mobile options

Simon Stewart 9:17 PM

kk

Sri Harsha 9:17 PM

Yes @AutomatedTester, i have been busy with paid work, didnt got a chance to look into it

Diego Molina 9:17 PM

what are mobile options?

David Burns 9:17 PM

@diemol the ability to set android* config better

you could do it before but I made it a little nicer after a request from whimboo

9:18 PM

I actually want to change it to support iOS better

Diego Molina 9:18 PM

Nice!

David Burns 9:19 PM

but it means you can create a normal chrome/firefox options and pass it through to the driver to connect to said browser on android :+1: 1

9:20 PM

you could before if you knew the magic for it

Diego Molina 9:20 PM

Something else we need to figure out is how to release the IDE, given that @Todd Tarsi is helping us and contributing to it

9:20 PM

does anyone know about it?

Simon Stewart 9:20 PM

Who did the last release? @corevo, I thought

9:20 PM

?

David Burns 9:21 PM

I think it was him. I will email him and Dave for guidance here

Diego Molina 9:21 PM

great, thank you

and I have one last thing from my side

I have spoken to @Puja Jagani and asked her if she is interested in becoming a committer Therefore, I have created this PR https://github.com/SeleniumHQ/seleniumhq.github.io/pull/679 Folks, please go an check it out

I think she has done so much great work and without her we would not have moved at the speed we are currently moving :slightly_smiling_face:

Puja Jagani

Thank you David, Diego and Simon for the constant support and help :relaxed: Very happy working with the Selenium TLC folks!

Simon Stewart 9:25 PM

I’m onboard with this

Diego Molina 9:25 PM

(there is probably a shorter way to say what I said, but my English is no bueno sometimes)

David Burns 9:26 PM

+1 but I am biased :smile:

Diego Molina 9:26 PM

We simply need PR approvals :slightly_smiling_face:

Titus Fortner 9:27 PM

Sorry, I’m showing up late. :slightly_smiling_face:

Did we get the blockers for beta 4?

Have a couple bug fixes that would be nice to get released

Simon Stewart 9:27 PM

@diemol’s in charge here

Diego Molina 9:28 PM

No @titusfortner, sorry. I think we need to improve with PR reviews in the next days so we can get closer to beta 4

9:28 PM

I believe you are talking about the JUnit issue?

Sri Harsha 9:29 PM

i will update few things in ide stuff, electron version bump and updating rules_nodejs

Titus Fortner 9:29 PM

No, that’s a different issue :slightly_smiling_face:

Diego Molina 9:30 PM

Which issues did you have in time?

9:30 PM

in mind*

Titus Fortner 9:32 PM

some fixes in Ruby code

9:32 PM

just wanted to get stuff out there sooner if that’s an option

Simon Stewart 9:33 PM

We’ve yet to agree when we want to ship beta4, so there’s probably time

9:34 PM

Unless you want the fixes to be blockers

Titus Fortner 9:35 PM

I mean, Alex changed something that was blocking someone and I’m wondering when we can get it released to him :smile:

Simon Stewart 9:36 PM

Ah! So you want the release sooner :slightly_smiling_face:

Titus Fortner 9:36 PM

9:36 PM

apparently there is a project that refuses to look at firstMatch values

Sri Harsha 9:36 PM

For JS i want to:

  • Implement “se:cdpVersion”
  • API documentation for beta 4

Simon Stewart 9:37 PM

@titusfortner I have no idea how a project not following the spec is a reason for us to ship sooner, but I assume there’s context I’m missing….

David Burns 9:37 PM

is this appium?

Titus Fortner 9:40 PM

A Watir user is using aerokube/ggr

Ruby code defaults to F/M, but the project doesn’t accept it (https://github.com/aerokube/ggr/issues/314)

He asked the devs and their private reply: Ggr does not support “sophisticated” selenium “match” rules and we do not plan to implement that, because it is ambiguous

So Ruby changed default implementation to be A/M since it *shouldn’t matter but apparently does

just trying to help the user

Simon Stewart 9:41 PM

It’s the exact opposite of ambiguous

Titus Fortner 9:41 PM

oh, I know

9:41 PM

if this had been a public response i’d have been all over it

Simon Stewart 9:41 PM

WE should probably have a chat with the Aerokube folks

9:42 PM

Because Se4 will break them a lot

Titus Fortner 9:42 PM

The suggestion I got is either to try their new product: aerokube.com/moon or do not use ggr and go with selenium.

Simon Stewart 9:43 PM

So moon supports the w3c payload but not ggr?

Titus Fortner 9:44 PM

that’s what it sounds like

David Burns 9:44 PM

Aerokube… the group that bad mouths selenium… that aerokube?

Titus Fortner 9:44 PM

I don’t know what ggr vs moon is, didn’t get too deep into it

Simon Stewart 9:45 PM

Moon is their paid-for product.

Titus Fortner 9:45 PM

ah of course it is

you want fancy, you pay the money!

s/fancy/sophisticated

Simon Stewart 9:45 PM

A perfectly valid business model

David Burns 9:45 PM

In which they they tell everyone that selenium grid is useless

9:46 PM

I’m happy to help those that don’t bad mouth us

Difference of opinion is also fine

9:47 PM

But… *channels his inner @jimevans *

Titus Fortner 9:47 PM

I don’t remember off hand which bindings default to A/M and which to F/M

9:47 PM

I was going to run some tests

Diego Molina 9:50 PM

I think we should not hurry for a project that does not support standards

Titus Fortner 9:51 PM

I don’t care about them

9:51 PM

I care about a user who needs to change because of them

Diego Molina 9:51 PM

Anyway, I think those were all the topics we had :slightly_smiling_face:

Observability in Selenium 4

Diagnosing problems when the Selenium server isn’t working has never been easy.

Diagnosing problems when the Selenium server isn’t working has never been easy. With Selenium 4, we have integrated OpenTelemetry to help you troubleshoot issues, optimize performance, and provide visibility into the system. By making the Selenium server observable, we are putting more power into your hands.

Need for Observability

Selenium server enables distributed testing. Instead of running the browsers for tests locally, the tests use a remote browser driver that points to a server. The server makes “smart” decisions to run tests on different remote servers. Every such remote server is capable of hosting different types of browsers and browser versions.

Selenium 3 uses Hub as the coordinator. It receives new session requests and directs them to the appropriate Node. The Node is the remote end where the browser itself runs.

Selenium 4 extends this to provide users with a way to set up a full-blown distributed system. Essentially, Selenium 4 splits the Hub into different components with additional enhancements. However, the Node’s role remains the same. To ensure the backward compatibility and simplicity of setting up Grid, standalone and hub-node mode are also available in the new Selenium server.

Now picture running a full-blown distributed Selenium Grid with hundreds of Nodes with different browsers and browser versions. Testing at scale in such an infrastructure will involve large volumes of requests. How can one keep track of these requests? Enter Selenium Observability!

How Does Selenium Provide Observability?

Selenium uses OpenTelemetry to instrument tracing and event logs. Tracing keeps track of a request’s lifecycle. As a request moves through the distributed system, the trace of the request will contain all the information of its crucial operations performed along the way. Such operations are known as spans. A span can record timed logs called events, which ideally encapsulate the current state of the system. These are event logs.

By default, the Selenium server enables tracing. Selenium server can run in different modes:

Tracing and event logs are available for all the modes. The simplest way to see traces is in the form of console logs. By default, the Selenium server prints logs at the INFO level and above. To pass a logging level of choice while running a Selenium Grid use the log-level flag. Setting the log-level to FINE will display traces and event logs as console logs.

For a large scale system, consuming traces as logs might not be efficient. Visualizing and querying traces will quickly help troubleshoot a request failure easily. Jaeger seamlessly integrates with OpenTelemetry to provide a rich experience of querying, visualizing and collecting request traces.

Run java -jar selenium-server-<selenium-version>.jar info tracing.

It provides detailed and updated instructions to set up Jaeger with the Selenium server. Visualizing the traces makes it easy to interpret a trace and understand request flow. Now Grid users can effortlessly trace a request, drill down into an error or query them to observe what is happening.

Trace example

Refer to Selenium Observability for details.

Full-Stack Tracing

The Java client binding supports tracing. Full-stack tracing allows tracing a request from the client to the server and back. Though the client is a single component, the client trace will contain spans that help build the request. It is easier to locate a client-side problem and fix the test if needed.

We already saw how the server supports tracing and how to leverage it. For the client-side, add the Opentelemetry dependency to your project setup and add the necessary system properties to export the traces to Jaeger. Refer to RemoteWebdriver client for detailed instructions.

Leveraging Traces and Event Logs

The key to fixing a problem lies in knowing the error. For a known error situation, the event logs have you covered. It provides detailed error information and stack traces. Query the collected traces for a time range by the error code to identify the frequency of the error. It will help determine if the error is transient or not and accordingly take action.

Error event log example

Observe the request latency to identify potential bottlenecks. Each trace will also contain time taken by each span. The issue could be in the underlying infrastructure setup, the network latency, or the code itself. Irrespective of the cause, it is easier to identify the problem area.

Observability is slowly becoming a must-have property of a system. Selenium is now observable! Go ahead try it out. Let us know if you find anything that requires improvement on our end.

Public Project Meeting - April 22, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on April 22, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 9:02 PM

pinging @simonstewart @AutomatedTester @harsha509 @Puja Jagani @jimevans @barancev @manoj9788 @mmerrell @titusfortner @p0deje

Simon Stewart 9:02 PM

I’m going to be at SauceCon

9:02 PM

Things I want for beta 4:

Diego Molina 9:02 PM

and whoever else is around :slightly_smiling_face:

9:03 PM

General project statistics

  • Previous meeting: 163 open issues, 24 open pull requests
  • Currently: 157 open issues, 25 open pull requests

Simon Stewart 9:03 PM

Things I want for beta 4:

  • Refresh the NewSessionQueue
  • Stress test the new Grid on AWS or similar with >50 simultaneous tests
  • Check that the Redis/JDBC backed services actually function

Diego Molina 9:06 PM

Next topic:

  • Pending work for the 4th Beta?
  • Server - Grid
  • Pipe VNC connectors through the WebSocket plumbing for live video
  • Investigate: Grid gets stuck when screenshot is taken in a terminated session
  • Investigate: Grid gets stuck when the browser driver process cannot be killed
  • Investigate: Router request timeouts when forwarding command to Node
  • Unify new Session Queue
  • Stress test the new Grid on AWS or similar with >50 simultaneous tests
  • Check that the Redis/JDBC backed services actually function
  • More than 1 IE session per Node? https://github.com/SeleniumHQ/selenium/issues/9388

Language bindings

  • “se:cdpVersion” is missing in C#, Java and JS
  • Can all bindings do CDP over Grid?
  • What are the features present in Selenium 4?
  • Do all bindings implement them?

Simon Stewart 9:06 PM

The “unify new session queue” is mostly done, I think

9:07 pm

(Famous last words)

Diego Molina 9:07 PM

That is the PR you sent, which we will work with @Puja Jagani, I believe

Luke Hill 9:07 PM

Someone (In fact a couple), were asking me about the alphas / betas. And they were asking more along the lines of are we expecting a whole host of them like we had for v3.

9:08 PM

I gave them the whole spiel - We don’t do release timelines e.t.c. But figured I’d ask here if anyone has a finger in air idea.

Diego Molina 9:08 PM

For the Grid work, I am taking the items related to “investigate”

9:09 PM

But I wanted to ask folks here, what do you think about “More than 1 IE session per Node? https://github.com/SeleniumHQ/selenium/issues/9388

Titus Fortner 9:10 PM

@luke tell them it doesn’t matter and if they are only using the bindings they should already have updated. The only stuff really being worked on at this point is grid functionality and adding in the various new features from w3c spec, etc There is no technological advantage to sticking with 3.x at this point

Luke Hill 9:10 PM

That went against all advice and articles published that explicitly stated “Do not use more than 1 IE session per node” @diemol

David Burns 9:10 PM

re: se:cdpVersion, it’s easy to add but I noticed we never use the versions, we seem to use the latest one

Diego Molina 9:10 PM

Some people are complaining they cannot run more than one test per Node, which we recommend against Because they have been able to do it. The code change is small, and I believe we should let them, with the caveat of “you are on your own here”

Luke Hill 9:11 PM

Do we know when/where this restriction came in? With an accompanying PR?

Diego Molina 9:11 PM

IE restriction? Since the moment zero Grid 4 was built

Simon Stewart 9:12 PM

@AutomatedTester the java bindings should be using the version

David Burns 9:12 PM

@simonstewart sorry, meant JS

JS bindings only use latest…

David Burns 9:12 PM

@simonstewart sorry, meant JS

9:13 PM

JS bindings only use latest…

Diego Molina 9:14 PM

@AutomatedTester I believe it has not been implemented in C# and JS (I need to double check Java)

David Burns 9:14 PM

JS doesn’t need it… yet without a bit of rearchitecting

I, or @Puja Jagani since she has been dabbling in .NET, can do the c# ones

or @jimevans obvs

Diego Molina 9:15 PM

I believe the idea is to use the “right” CDP version depending on the browser version, so it’d be nice if JS has it

David Burns 9:16 PM

maybe @harsha509 has time to look into it

Sri Harsha 9:17 PM

it requires rewriting the CDP in JS. i will look into it then.

Diego Molina 9:17 PM

that’d be amazing

cool, so I believe we need to work a bit on the pending items and see where we are in two weeks :slightly_smiling_face:

Titus Fortner 9:18 PM

From a bugs standpoint, #9359 is an absolute blocker for Sauce users to move to Selenium 4, but @Puja Jagani is helping confirm it.

Would be nice to at least know what is going on before next release

Diego Molina 9:20 PM

I think we have enough time to figure that one out

Simon Stewart 9:20 PM

The reproducible test case is helpful

Titus Fortner 9:20 PM

yeah, should have done that from the start

Diego Molina 9:20 PM

I wonder if someone asked @titusfortner for a reproducible test case :smile:

Titus Fortner 9:21 PM

tbf I did put exactly what needed to go into the POM

9:21 PM

I just didn’t create a whole project that can be cloned to see the issue

Diego Molina 9:21 PM

anyway, we could move to the last topic for today, the IDE

9:21 PM

Selenium IDE

  • Who knows what the release process is?
  • What is needed?
  • Who can help reviewing pull requests?

Sri Harsha 9:22 PM

By beta 4, i will be resolving JS api docs too. May be i can pass it to @diemol for review and upload

Diego Molina 9:22 PM

What is needed for a release*

Diego Molina 9:23 PM

@Todd Tarsi is here and they want to contribute, so it would be nice to give them a hand

David Burns 9:23 PM

if @corevo or @tourdedave have documented the release process I think I have some of the keys to do it

Diego Molina 9:23 PM

I can check if it is documented, else reach out to them

Todd Tarsi 9:23 PM

Hi all, yep if I can help in any way, please let me. I’ve been doing selenium ide stuff since it was UI with zanarkand (is that the right name?) back in the day

Diego Molina 9:24 PM

We need the keys for the 3 stores, right? Edge, Chrome and Firefox

9:25 PM

we should also update the docs to mention it is available in Edge

Todd Tarsi 9:27 PM

I can PR simple docs changes if we want.

Diego Molina 9:27 PM

cool

so we will check what is needed to properly test and release the IDE, and we will post here in #selenium-tlc

thanks for showing interest, @Todd Tarsi

ok, I think that is all for today, right?

does anyone have an extra topic?

seems not, thank you everyone!

(and thanks @harsha509 for publishing the notes to our blog :slightly_smiling_face:)

Public Project Meeting - April 08, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on April 08, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 8:59 PM

Ok, proposed agenda is:

  • General project statistics
  • Stuff implemented/fixed in the last two weeks
  • Pending work that needs to be done for the third Beta?
  • PRs that need to be reviewed

please feel free to add any other topics

pinging @titusfortner @manoj9788 @mmerrell @simonstewart @barancev @Puja Jagani @AutomatedTester @harsha509 @jimevans

Alright, let’s start with today’s public meeting :slightly_smiling_face:

9:02 PM

General project statistics

  • Previous meeting: 178 open issues, 23 open PRs
  • Current: 163, 24 PRs

Marcus Merrell 9:03 PM

no news to report from me–still working on the CoC with Karen, and working on either booking the Chicago venue for a 2022 conference, or getting our $40,000 back

Diego Molina 9:04 PM

thanks for sharing @mmerrell

Simon Stewart 9:04 PM

Presumably we’re looking at late 2022 for the in-person conference?

Diego Molina 9:05 PM

I hope so

are there any thoughts around a virtual conference this year?

Simon Stewart 9:06 PM

I’m lukewarm about virtual conferences. It’s hard to sit and watch YouTube videos all day

Diego Molina 9:06 PM

me too, but as a project we should consider that alternative

David Burns 9:06 PM

having just done one for work there is a “we’ve had enough” vibe going

9:07 PM

it was a success but I don’t think we could have done it later this year

Simon Stewart 9:07 PM

I’d love to do some short videos on topics, though

Things like relative locators, shadow DOM, CDP, etc

And we can do a “q&a” one with committers and a host

We should ask folks if they’d like to do something, and then maybe post one or two a month?

Diego Molina 9:08 PM right, a mini conference would be nice

Simon Stewart 9:08 PM

Provided we pay for someone to help make the videos and edit them

Titus Fortner 9:08 PM

less “talks” and more “video tutorials with Q&A?” :)

Diego Molina 9:08 PM

perhaps one day of workshops and one day of short talks

Simon Stewart 9:09 PM

Workshops are a really good thing to do

David Burns 9:09 PM

I would like to think on it more before committing either way

Simon Stewart 9:09 PM

Not even sure about “one day of short talks”. Just posting things regularly on the YT channel

Titus Fortner 9:09 PM

I really like it when there is a “time” that a video is shown, and the author can chat with people about it in whatever room, and then answer questions at the end

9:10 PM

then everything can be posted in whatever channel for people to watch

Simon Stewart 9:10 PM

I can see that

Diego Molina 9:10 PM

well, there we have a whole topic to think about :slightly_smiling_face:

Simon Stewart 9:10 PM

Ha! :slightly_smiling_face:

Titus Fortner 9:10 PM

but I do like the idea of a series of shorts on different pertinent selenium topics

9:11 PM

less “why testing is like a toaster oven” and more practical on how to get the most out of new Selenium 4, etc :-D

Simon Stewart 9:11 PM

Right

Diego Molina 9:12 PM

ok, I am a bit short of time today, so I suggest to go back to the agenda and if there is time, we can circle back to ideas about a “conference”

Titus Fortner 9:12 PM

:thumbsup:

Diego Molina 9:12 PM

Next topic:

  • Stuff implemented/fixed in the last two weeks

I have a short list of things I know they were done, so I will paste it here

  • CDP url for Firefox
  • Platform matching but when platform is Windows
  • noVNC added to docker-selenium

Simon Stewart 9:12 PM

Been quiet from me, but I have landed the bits to plumb through se:cdpVersion and have started on a unified New Session Queue

Diego Molina 9:13 PM

(there was a bug when matching Windows as a platform)

9:14 PM

yeah, if you try the Grid right now, CDP for Firefox should work also (but there are some CI tests failing for Firefox)

I also added noVNC to the docker containers, that bring us closer to have the live view in the Grid UI

Simon Stewart 9:15 PM

That’s very cool

Diego Molina 9:15 PM

Ok, so now having said what we have done during the last two weeks, we can now talk about what is left for beta 3:

Pending work that needs to be done for the third Beta?

I will paste the things that come from the previous meeting, but please add/remove as you wish

Simon Stewart 9:16 PM

Thank you

Diego Molina 9:16 PM

Server changes:

  • Enable retries of commands where necessary using failsafe
  • Pipe VNC connectors through the websocket plumbing for live video
  • Investigate: Grid gets stuck when screenshot is taken in a terminated session
  • Investigate: Router request timeouts when forwarding command to Node

Things left in Java, Python, JS, Ruby, C#?

  • “se:cdpVersion”?
  • Can all bindings do CDP over Grid?

Marcus Merrell 9:16 PM

(just to close out the 2022 conference idea–yes, Fall of 2022 in Chicago)

Simon Stewart 9:16 PM

Adding: unify the new session queue

Diego Molina 9:18 PM

We had this comment from the last meeting:

Here’s the plan, then. We’ll ship beta3 when two of these conditions are met:

  • The .net bindings support CDP over Grid
  • We send se:cdpVersion in Capabilities and that’s also handled by Grid

is this still valid? what do you all think?

Simon Stewart 9:18 PM

Time has elapsed. I’m not convinced we’re using se:cdpVersion properly on the local end yet

Titus Fortner 9:19 PM

looks like Java is the only one using it

Simon Stewart 9:19 PM

@jimevans can tell us whether the .Net bindings work

David Burns 9:19 PM

I will look at the Python/JS stuff for that tomorrow

Titus Fortner 9:20 PM

There are several Ruby bugs that we fixed, so I’m for releasing beta 3 even without cdpversion implemented

9:21 PM

I would like to get v90 & v91 devtools support added

Diego Molina 9:21 PM

Grid is now returning se:cdpVersion properly, and the Java bindings (when running locally) are also returning it properly

Titus Fortner 9:21 PM

or at least v90

David Burns 9:21 PM

that seems simple then…

Diego Molina 9:21 PM

but I wonder if the other bindings also create and manage se:cdpVersion when running locally (not over Grid)

Titus Fortner 9:22 PM

wait is Firefox using CDP 85 or 86?

Simon Stewart 9:22 PM

@titusfortner I can help you land the CDP v90 stuff

Diego Molina 9:22 PM

86

Titus Fortner 9:23 PM

I think I followed the guid and have the pdl files for the latest v90

Simon Stewart 9:23 PM

@diemol I’m not sure the java bindings use se:cdpVersion properly

David Burns 9:23 PM

firefox is 85 unless they changed it

Titus Fortner 9:23 PM

Well, if we aren’t hard coding it to 85, then I need to figure out how we want to approach that going forward :slightly_smiling_face:

I just see that trunk has FirefoxDriver set to use 86

(in Java)

which I didn’t think was correct

David Burns 9:24 PM

Java is wrong then

Simon Stewart 9:24 PM

Easy fix

David Burns 9:24 PM

r-

9:24

:stuck_out_tongue:

Diego Molina 9:25 PM

Seems we need to create a GitHub issue to track that

I’ll do that now

Simon Stewart 9:26 PM

Thanks

Jim Evans 9:27 PM

.NET still doesn’t proxy CDP across RemoteWebDriver yet.

is jumping through corporate IT/security/legal hoops right now.

Titus Fortner 9:29 PM

that sounds joyful

Diego Molina 9:30 PM

ok, created this to track it https://github.com/SeleniumHQ/selenium/issues/9365

please feel free to add more details

(if needed)

9:32 PM

So, IMO, we should have se:cdpVersion working and all bindings doing CDP over Grid before beta 3, right?

what do you think?

Simon Stewart 9:32 PM

I’m letting @jimevans call it

Jim Evans 9:33 PM

let’s not hold up beta3 for that. if i get to it before then, fine, but i’m swamped right now.

Titus Fortner 9:33 PM

I definitely don’t think we need cdpVersion

9:34 PM

doing CDP over grid doesn’t require that per se

Diego Molina 9:34 PM

no, it does not, they are two separate things

Titus Fortner 9:34 PM

Does Python & JS have CDP over grid working?

Simon Stewart 9:34 PM

I’d like to get the java bindings consuming se:cdpVersion properly.

Titus Fortner 9:35 PM

can we save that for beta4?

David Burns 9:35 PM

replied to a thread: Does Python & JS have CDP over grid working?

It should do

Diego Molina 9:35 PM

I know it would be ideal to get a beta 3 soon, but if we need to wait to have all bindings working with CDP, I am ok with that

Titus Fortner 9:35 PM

I generally don’t like putting off a release until Java gets something working, because that just means we wait for everyone else to implement it or Java is off from the rest of us. :smile:

Diego Molina 9:36 PM

I have seen issues asking “can we have in JS what it is already done in Java”, and similar

Titus Fortner 9:36 PM

Like I said, I have several bug fixes that would be nice to get into people’s hands sooner

I guess I can always do a beta 2.1 for ruby, but…

Simon Stewart 9:36 PM

Let’s aim for next Tuesday for beta 3

Diego Molina 9:37 PM

I am also ok with that

but I don’t want to reach RC without some degree of feature parity between bindings

even if it takes longer

Jim Evans 9:38 PM

i get my second vaccine dose on tuesday, so it’ll be in the afternoon

9:38 PM

(US eastern time)

Titus Fortner 9:38 PM

woo hoo!

Diego Molina 9:38 PM

oh, that’s amazing!

Simon Stewart 9:38 PM

RC should have feature parity

I’d like that one out for a few days, and then we ship 4.0.0

Titus Fortner 9:39 PM

oh, while we’re here, I think Java & .NET are the only ones who have implemented these? https://w3c.github.io/webdriver/#get-computed-role

9:40 PM

These new endpoints sneak up on me

Simon Stewart 9:40 PM

There are a few. The Shadow DOM ones are new as well

Titus Fortner 9:41 PM

oh no, python & java

Simon Stewart 9:41 PM

I think @AutomatedTester has snuck in a broader API than the rest of us since he actually reads specs

Titus Fortner 9:41 PM

sneaky

Simon Stewart 9:41 PM

Clever lad

David Burns 9:41 PM

none of the shadow dom stuff is done

9:42 PM

but I am adding it to Firefox

Sri Harsha 9:42 PM

JS bindings have it too, only left with shadow-dom

Jim Evans 9:42 PM

@titusfortner.NET does the get computed ones too

David Burns 9:42 PM

If you watched todays twitch you would have seen why… I am not sure of the API for things not Java/.NET

Titus Fortner 9:43 PM

so what everyone is saying is that it’s just Ruby slacking

Diego Molina 9:43 PM

ok, so we’ll aim beta 3 for next Tuesday :slightly_smiling_face:

David Burns 9:43 PM

@titusfortner not ruby… whistles :stuck_out_tongue_winking_eye:

Diego Molina 9:43 PM

last topic is:

  • PRs that need to be reviewed

9:44 PM

there are a few ones that could be an “easy” merge and ideally they do not need a lot of time for a review

I also see @Puja Jagani now contributing to the C# bindings, which is great!

I’ll list the PRs here:

C#

Python

David Burns

done

Diego Molina

thank you!

Diego Molina 9:47 PM

Java:

9:48 PM

in case you have some spare time, @AutomatedTester @jimevans @simonstewart

that’s all I had in the agenda :slightly_smiling_face:

Public Project Meeting - March 25, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on March 25, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 9:54 PM

Agenda for the public meeting:

  • General project statistics
  • Pending work that needs to be done for the third Beta?
  • CoC, next steps?

Please feel free to add any other topics

pinging @jimevans @barancev @simonstewart @AutomatedTester @titusfortner @harsha509 @luke @Puja Jagani and anyone else who wants to join

Simon Stewart 9:56 PM

Thanks for the ping :slightly_smiling_face:

Diego Molina 9:58 PM

forgot to ping @manoj9788 and @mmerrell

Marcus Merrell 10:00 PM

I haven’t heard back about the CoC work - last we left it, Karen was reaching out to Larissa

David Burns 10:00 PM

I will message Larissa now to see if that happened

Marcus Merrell 10:01 PM

thanks

10:01

I can make contact with her too, if you want to cut yourself out as the middle man I might be able to speed things up

around the conference, it sounds like the Holiday Inn in Chicago is undergoing an ownership change, and hasn’t gotten back to us about postponing to 2022 that’s as of last week

David Burns 10:02 PM

I’ve messaged her in the Mozilla Alumni slack

Marcus Merrell 10:03 PM

ok, thanks

Diego Molina 10:03 PM

Sounds good, so we covered one topic already :slightly_smiling_face:

So… General project statistics

  • Previous meeting: 202 open issues, 32 open PRs
  • Current: 178, 23 PRs

Simon Stewart 10:04 PM

That’s amazing work, folks

Diego Molina 10:04 PM

We are doing pretty well there, I went through many issues and asked if they are still valid. Depending on their reply we can close around 20 more in 2-3 weeks.

Most of the open issues are either feature requests, for the JS and C# bindings Perhaps we need to search for folks to give us a hand there

Simon Stewart 10:06 PM

We could absolutely do with more committers.

Diego Molina 10:07 PM

I will look for folks who have frameworks built on top of Selenium and see if they have time to give us a hand

Simon Stewart 10:08 PM

That’s a great idea

Diego Molina 10:08 PM

I’ve seen this one called Watir, maybe they can help us

Titus Fortner 10:09 PM

They have a slack channel I can ask

Diego Molina 10:09 PM

The original idea is from Titus actually :slightly_smiling_face:

Titus Fortner 10:09 PM

I mean, I cajoled Thomas from Capybara into helping :-D

we were down to one ruby labeled issue. This one we need some kind of decision on: https://github.com/SeleniumHQ/selenium/issues/8179

maybe it’s a wontfix and can be closed, or we can figure out the right thing and knock out the changes

Simon Stewart 10:11 PM

Send Keys in actions is really meant for individual key presses. But I guess we could decompose a more complicated set of inputs to individual key presses and releases

Diego Molina 10:14 PM

Would you like to dig deeper into the issue right now, @titusfortner?

Titus Fortner 10:14 PM

I was generally looking at the needs-discussion ones: https://github.com/SeleniumHQ/selenium/labels/A-needs%20decision

if we need a discussion to figure out what is the right thing, this seems like a good forum for that if we need more info we can push it back til next meeting, etc

Diego Molina 10:15 PM

Makes sense, I can definitely go over those issues and put them in the agenda for the next one, good idea

Titus Fortner 10:15 PM

but no, I don’t need anything specific from that one

right now just wanted to raise it since we haven’t discussed it before :)

if and when we get guidance I/others can implement it, but need to know what to implement :-D or I’ll make the Watir dev do it

Diego Molina 10:18 PM

ok, next topic

  • Pending work that needs to be done for the third Beta?

Things left in Java, Python, JS, Ruby, C#?

  • “se:cdpVersion”?
  • Can all bindings do CDP over Grid?

Anything else on the client side?

Simon Stewart 10:19 PM

I have local diffs with se:cdpVersion wired up properly in Firefox and Chromium-based browsers It’s a little funky, and I’d like a test around it before doing much more

Titus Fortner 10:20 PM

We have cdpVersion hard coded for Firefox and are getting browser version to automatically serve the right version to Chrome/Edge the endpoint would make a couple things easier :)

Simon Stewart 10:21 PM

I’m making the browsers return the cdp version and endpoint in the capabilities

se:cdpVersion and se:cdp respectively

Titus Fortner 10:21 PM

oh yes, capabilities not endpoint, I knew what I meant to say in my brain ;-)

Simon Stewart 10:22 PM

Ha! :slightly_smiling_face:

Diego Molina 10:23 PM

Ok now, Server side:

  • Enable retries of commands where necessary using failsafe
  • Pipe VNC connectors through the websocket plumbing for live video
  • Return CDP url by using the Grid url
  • CDP url for Firefox
  • Platform matching but when platform is Windows
  • Investigate: Grid gets stuck when screenshot is taken in a terminated session

this is what I have in my list, not sure if there is anything more

  • Platform matching bug when platform is Windows

Simon Stewart 10:25 PM

We should already be sending the CDP url for the Grid in Capabilities

And I’ve got the CDP url for Firefox in my local patches

Diego Molina 10:25 PM

ah, that is true

scratching that

Simon Stewart 10:26 PM

Hurrah! One step closer :slightly_smiling_face:

Diego Molina 10:27 PM

by looking at the download numbers and issues created after beta 2, which is not a lot… what is our overall feeling about beta 3?

let’s say, when most of features and bugfixes are done we release it or do we want to wait a bit more for feedback?

David Burns 10:28 PM

I think do the bug fixes and release

Diego Molina 10:28 PM

+1 to that

David Burns 10:28 PM

the “closer” we are to a full release the more our pool will increase

a “better” question… what do we need to get to a RC?

Jim Evans 10:29 PM

.NET doesn’t do CDP over grid right now. a refactor is required to make that possible. i have it in progress, but it’s not ready to get committe.

David Burns 10:29 PM

so we need ^ to get to RC what else?

Simon Stewart 10:29 PM

Oh. Yeah. RC backwards compat

David Burns 10:30 PM

I mean harder to get to points but wont stop beta releases

Simon Stewart 10:30 PM

I’d also like to properly clean up the java client code to strip out JWP support

David Burns 10:30 PM

and RC I mean release candidate

Simon Stewart 10:30 PM

But I think that’s going to be a hard thing to do

Diego Molina 10:30 PM

Simon using every chance to ship RC into Selenium 4 :smile: New

Simon Stewart 10:30 PM

We can do an RC once we think we’ve got all the features done

I suspect beta 3 may be our last beta, if @jimevans gets the time and support he needs for CDP over Grid

Diego Molina 10:32 PM

I am getting a new Windows machine, in part to see how I can help with C#, so expect questions @jimevans :slightly_smiling_face:

Simon Stewart 10:32 PM

Amazing! :slightly_smiling_face:

Jim Evans 10:33 PM

@diemol happy to collaborate.

Diego Molina 10:33 PM

I believe we covered all topics, unless someone has anything else?

Michael Mintz 10:34 PM

Full official release of Selenium 4 by year’s end?

Simon Stewart 10:34 PM

Even sooner

When shall we aim to ship beta3?

Titus Fortner 10:35 PM

I’m waiting for Simon to decide he has to rewrite the Java HTTP Client before we ship Se 4 ;-)

David Burns 10:35 PM

not next week as I am away but the week after maybe?

Diego Molina 10:37 PM

2-3 weeks from now would be realistic, I think

Simon Stewart 10:37 PM

Here’s the plan, then. We’ll ship beta3 when two of these conditions are met:

  • The .net bindings support CDP over Grid
  • We send se:cdpVersion in Capabilities and that’s also handled by Grid
  • Two weeks have passed

Sound good?

Diego Molina 10:38 PM

Sounds good to me

alright, that sounds like a wrap for today’s meeting… however, if anyone has a comment about what we discussed today, feel free to comment it here at any time

Titus Fortner 10:43 PM

Thanks @diemol!

Public Project Meeting - March 11, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on March 11, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 9:59 PM

Hopefully it will be a brief one :slightly_smiling_face: pinging folks for the public project meeting… @AutomatedTester @harsha509 @titusfortner @mmerrell @jimevans @simonstewart @barancev @luke

10:01

Agenda for today:

  • General project statistics
  • Anything new to report from the last PLC/SFC call?
  • CoC, next steps?
  • Pending work that needs to be done for the second Beta?

if you have any more topics, please feel free to add them

Titus Fortner 10:02 PM

:wave:

Sri Harsha 10:02 PM

:wave:

Diego Molina 10:03 PM

ok, let’s start slowly while people join… first topic is:

  • General project statistics

Previous meeting: 234 open issues, 32 open PRs Current: 202, 32 PRs

10:04

Again, really great work lowering the number of open issues!

Diego Molina 10:05 PM

What I see in the open issues, every now and then, is a few feature requests.

I think it’d be helpful to give some feedback on them at some point

Titus Fortner 10:05 PM

I need to remember not to add PRs until after the meeting :)

Diego Molina 10:06 PM

for now, I am closing a few feature requests because they are not aligned at all with Selenium or because no one has commented in over 1.5 years

10:07

ok, let’s move to the next topic Anything new to report from the last PLC/SFC call?

10:08

@mmerrell @barancev @simonstewart @manoj9788 @jimevans

Simon Stewart 10:08 PM

Nothing major. @mmerrell was going to chat with the SFC about the Coc

Diego Molina 10:08 PM

perfect, that was the next topic, CoC :slightly_smiling_face:

do we know what we can do to speed the process a bit? We had an incident in the past few days where a CoC would be helpful https://groups.google.com/g/selenium-users/c/bpeUO9vAa2A

10:10

Could we add the https://www.contributor-covenant.org/ as a start and then iterate on it when the SFC has time?

Marcus Merrell 10:10 PM

that chat happened, and Karen is supposed to reach out to the contractor - I haven’t pinged her in a week, but I can do that

Diego Molina 10:11 PM

thank you, @mmerrell!

David Burns 10:11 PM

I think we can just copy what Sage did from their repos

Diego Molina 10:11 PM

that is also a good idea to have a place to start

David Burns 10:11 PM

yea

10:11

and I think we can have the odd hour from Sage to process it since they work for the SFC now

Diego Molina 10:12 PM

I forgot about that, I’d say we can do that

10:13

what do the other folks think?

Simon Stewart 10:13 PM

I’m okay with that

Marcus Merrell 10:14 PM

I’m fine with it… I simply can’t believe it’s been a year

David Burns 10:16 PM

tbf… I could have pushed harder but since I am with ${employer} that can be hard to find time

Marcus Merrell 10:16 PM

I’m in the same boat, but it’s unreasonable that we have to push this hard as far as I know, we’re a top revenue driver for the SFC, and asking a lawyer to do an hour of lawyering does not seem unreasonable

but we aren’t in a position to make a big change here, so I’ll keep pressing where I can

Diego Molina 10:18 PM

absolutely, at least it feels that we can have a CoC soon by following this path

do you still have the docs Sage gave us, @AutomatedTester?

Marcus Merrell 10:19 PM

if we get that, do we still need to go through the SFC and everything?

David Burns 10:19 PM

I am sure I do

Diego Molina 10:19 PM

I think we still need an expert on the field to help us refine the edges so we are sure we have something good in place

Marcus Merrell 10:19 PM

ok, good

10:20

I just pinged KS

David Burns 10:20 PM

at worst I can take Sage’s repos and just cobble something together

Diego Molina 10:20 PM

perfect, that’d be great

ok, perhaps we can move to the next topic?

  • Pending work that needs to be done for the second Beta?

Titus Fortner 10:24 PM

we’re as good on grid as we’re going to get without changing the underlying http client, right?

Diego Molina 10:24 PM

ok, so this is what I have about that: Server changes:

  • Pipe VNC connectors through the websocket plumbing for live video (nice to have for Beta 2, not a must)
  • Return CDP url by using the Grid url (nice to have for Beta 2, not a must)
  • Allow timeout, cleanupCycle to be configured in Grid (this is about allowing users configure some timeouts, @Puja Jagani did a part of it already, the rest seems simple, but not a must for Beta 2)

Things left in Java, Python, JS, Ruby, C#?

  • Using se:cdpVersion

yes, about the http client, I’d say so, but we will know more after people use beta 2

Titus Fortner 10:25 PM

is there a reason we can’t release 2 right away and do the rest for 3?

there are a few things in the Ruby code I want to be able to start using

I’m assuming there have been enough improvements elsewhere to justify a new release?

Would be nice to have more smaller releases so long as code/tests are in a good shape

Diego Molina 10:27 PM

I also have the feeling that the major issue was the Grid memory usage, which we adjusted by having a single http client instance everything else seems to be small adjustments, some could happen for beta 2 and the rest for beta 3

Simon Stewart 10:27 PM

I think so

I’m fine with no getting the se:cdpVersion stuff in before we push the next beta

10:28

Also on my list before 4.0 is getting script pinning using CDP up and running

That feels somewhat gnarly

Diego Molina 10:30 PM

sounds good, so maybe let’s sync during the next days to see when we can release beta 2 (as in, when people are around to give their input as well)

David Burns 10:30 PM

It sounds like there is nothing left to do…

Diego Molina 10:30 PM

we need to fix the javadocs

David Burns 10:31 PM

yes!

Diego Molina 10:31 PM

(maybe that is the most important issue for now :slightly_smiling_face:)

David Burns 10:32 PM

definitely the most important issue

Diego Molina 10:33 PM

ok, I think that was the meeting for today, do we have anything else we’d like to discuss?

David Burns 10:33 PM

nope

Sri Harsha 10:33 PM

we need to update JS doc too

https://www.selenium.dev/selenium/docs/api/javascript/index.html

Diego Molina 10:34 PM

true, while checking old issues, there are 3-4 we could close by updating the docs

ok, so let’s wrap today’s meeting with that, thank you everyone!

Public Project Meeting - February 25, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on February 25, 2021,5:30 PM CET. (Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 9:54 PM

@titusfortner @barancev @harsha509 @luke @jimevans @simonstewart

Luke Hill 9:54 PM

Yip. I’m here if needed.

Diego Molina 9:55 PM

The only topic I have today, to make it a short meeting, is: “what is needed for beta 2” Feel free to add/propose any other topics

Luke Hill 9:59 PM

Alongside that, do we have a rough idea of what would enable us to release a 4.0.0 proper (i.e. what milestones we need to hit)

Diego Molina 10:01 PM

Let’s wait a few minutes to see if we have enough people to start the meeting

Titus Fortner 10:04 PM

I have a couple minor things I want to do before beta2, but the sooner the better for me :)

Simon Stewart 10:04 PM

I’m in a planning meeting, but I’ll follow along slowly

Titus Fortner 10:05 PM

(Element#dom_attribute is the main one I want to finish). I think Java, C# both have that one already

Diego Molina 10:05 PM

Ok, then let’s start with the ones who are around. Only one topic so far: “what is needed for beta 2”

What comes to my head: fixing the leak :slightly_smiling_face:

Simon Stewart 10:05 PM

Crush the leaks. Ensure CDP on Grid to a Docker instance works

Diego Molina 10:06 PM

Regarding the leak, after reading more about the AsyncHttpClient issues and their google group…

10:07

they mention that each AsyncHttpClient instance has its own pool

Diego Molina 10:07 PM

which is why they recommend to have one single instance of it

Puja Jagani

After you pointed out the potential problem area, I attempted to use single instance of the AsyncHttpClient today and still saw the leak :confused: Will try and dig deeper tomorrow. Let me know if you want me to try something in particular.

Diego Molina

One single instance for the whole distributor?

Puja Jagani

One single instance as we had earlier, similar to https://github.com/SeleniumHQ/selenium/blob/selenium-4.0.0-alpha-7/java/client/src/org/openqa/selenium/remote/http/netty/NettyClient.java#L41 java/client/src/org/openqa/selenium/remote/http/netty/NettyClient.java:41 private static final AsyncHttpClient httpClient = https://github.com/SeleniumHQ/selenium|SeleniumHQ/seleniumSeleniumHQ/selenium | Added by GitHub

Puja Jagani

This was just to narrow down the problem area. It was something I was trying to eliminate if creating a new instance is the problem or the way we handle the response (blocking bit you mentioned earlier)

Puja Jagani

Distributor heap with single instance :see_no_evil:

Diego Molina 10:08 PM

additionally you can limit the size of the pool

so I am planning to tweak the client configuration and see if that helps

10:09

sadly, the docs for AsyncHttpClient are inexistent, but it seems like a robust implementation it is used for Gatling

10:09

(a loat test tool)

10:10

load*

David Burns 10:12 PM

@simonstewart what’s left, assuming its everything, to “Ensure CDP on Grid to a Docker instance works”

Simon Stewart 10:12 PM

(In a meeting)

Titus Fortner 10:13 PM

each of the bindings need to be able to implement that part (getting debugger address from caps, etc)

David Burns 10:13 PM

@titusfortner it’s done?

10:14

it gets it from se:options

Titus Fortner 10:14 PM

I don’t think he’s done yet with the first part

he’s changing that

Simon Stewart 10:14 PM

se:cdp now I updated the bindings that use it

David Burns 10:14 PM

@simonstewart touched my code… filthy java person in my python code

Simon Stewart 10:14 PM

The “CDP in Grid” stuff will add se:cdpVersion

Luke Hill 10:14 PM

One of the new things I noticed in ruby (Not sure if it’s relevant across the board). Was the new chrome cdp stuff needs to be able to work in local/remote instances.

Simon Stewart 10:14 PM

“My precious….”

David Burns 10:14 PM

:stuck_out_tongue:

Simon Stewart 10:15 PM

@luke that’s what the se:cdp capability allows

Luke Hill 10:15 PM

One step ahead of me :smile:

Simon Stewart 10:15 PM

The Selenium Server knows how to forward CDP traffic

Titus Fortner 10:15 PM

yeah, Ruby code has never actually allowed users to benefit from browser specific functionality in Remote WebDriver because of subclassing blah blah

Luke Hill 10:15 PM

So check back again in beta2 is the answer basically.

Titus Fortner 10:15 PM

I have a PR to address it

Simon Stewart 10:15 PM

I’m going to make the local drivers also set se:cdp

Titus Fortner 10:16 PM

With that PR, the Ruby CDP code works with server only if it is on localhost, so we’ll also have to update to what Simon has done

Luke Hill 10:16 PM

We “know” what we need to do. Which is half the battle.

Titus Fortner 10:17 PM

With @p0deje been gone for a while and @twalpole being super busy it’s just a matter of bandwidth. :)

well, partly, I only know “ish”

Diego Molina 10:17 PM

it’s the chance for @luke to do some commits :slightly_smiling_face:

Luke Hill 10:18 PM

I can try help where possible. But I’m not quite on their standard.

Titus Fortner 10:18 PM

I’d also like to figure out how to do a different gem publishing for CDP versions

10:19

it’s more important that we be able to update the CDP versions to match the browser versions than Selenium methods to CDP methods, so I’d like to be able to release the artifacts independently, and let users toggle it somehow.

Luke Hill 10:19 PM

By Easter I will hopefully be in somewhere more stable again either renting or buying my first place. So yeh should be able to do more in evenings. This is going to be my fifth property move in just over 2 years

Titus Fortner 10:22 PM

How much work is there still in the leak investigation? (I ask because I literally have no idea what all is involved)

Diego Molina 10:23 PM

Not sure, I’ve invested this week and at least I’ve pinned it down to the Distributor

10:24

It eats memory over time when new tests are executed, and never returns it

I am now checking if the problem is really related to the AsyncHttpClient

10:25

well, more related to the way we use it

David Burns 10:25 PM

@diemol @Puja Jagani knows this is a priority so feel free to rope her in :slightly_smiling_face:

Diego Molina 10:26 PM

they recommend to have a single instance, and in the Distributor we have one instance per registered node, and one instance to do the health checks, and another one that I have not pinned down to see what it is

Simon Stewart 10:30 PM

Because each instance needs its own config

10:31

If we could change config per request, we’d be fine

Diego Molina 10:31 PM

they have a different base url, right?

Simon Stewart 10:31 PM

Right

10:32

And possibly time outs

Anything on the config object

Diego Molina 10:33 PM

I did not see different timeouts, but we will need them when we allow users to configure the timeout in Grid

Puja Jagani

I think the RequestBuilder allows to set timeouts per request.

Diego Molina 10:34 PM

so, hm, interesting… now sure what to do now :slightly_smiling_face:

Simon Stewart 10:35 PM

Once again, I shall mutter about writing our own http client based on netty, starting from the one we have for domain sockets

Selenium 4 Beta 1 Released

We’re very happy to announce the release of the first beta of Selenium 4.

We’re very happy to announce the release of the first beta of Selenium 4. We’re shipping this for Java, .Net, Python, Ruby, and JavaScript, so if you’re using any of those languages, go and grab it from your package manager of choice!

This has been the culmination of a lot of work by so many people, not only the project TLC, but also of literally hundreds of people: 205 since we released Selenium 3.141.59, at the last count. A big thank you to everybody who’s helped make this possible!

So, what’s changed since Selenium 3? The answer is both “not much” and also “almost everything”.

By “not much”, I mean that if your tests are working with Selenium 3 right now, you should be able to just upgrade your dependency to Selenium 4. You will find that things that were marked “deprecated” are now gone, but the advantage of the long time between the last Selenium 3 release and this is that you’ve had plenty of time to try and find alternatives.

If this doesn’t work, please let us know! We’ve worked hard to ensure compatibility between the releases, but it’s possible we may have missed some things.

One thing you may want to do to get ready for the update (which you can do before updating the dependency itself!) is to update the drivers you need. In particular, please update geckodriver to 0.29.0 or later.

By “almost everything”, I mean that under the covers there have been substantial changes. We’ve rewritten the Selenium server to allow it to work not only in the familiar “standalone” and “hub and node” modes, but also in a new “distributed” mode, which makes it signifcantly easier to deploy to something such as Kubernetes in a way that scales well.

The new server is also wired up with support for OpenTelemetry and exposes a GraphQL endpoint, so that figuring what’s going on in the Grid, and tracking down what’s gone wrong if something happens, is easier than ever.

Not all the changes are server-side. We recently wrote about the new features in Selenium 4 that you can use in your tests, but some of the main highlights are:

  • Relative locators, for finding elements using terms that make sense to us humans.
  • The ability to intercept network traffic
  • Authentication with basic or digest authentication.

We’ll be telling you more about these features in later blog posts, and as we improve our documentation.

If this sounds interesting, please download the beta from your favourite package manager (maven, nuget, npm, pip, or the gem), or directly from the Selenium site.

Public Project Meeting - February 11, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on February 11, 2021,5:30 PM CET. (Below times are on CET)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 5:31 PM

Agenda for today:

  • General project statistics (Previous meeting: 252 open issues, 35 open PRs, Current: 234, 32 PRs)
  • Anything new to report from the last PLC/SFC call?
  • Overall announcements? New people on committees, with the commit bit, etc?
  • Pending work that needs to be done for the first Beta?
  • CoC, next steps?

@simonstewart @barancev @titusfortner @AutomatedTester

feel free to add more topics

intentionally not pinging Jim, Jim is not able to join

@harsha509 @luke and others, feel free to join as well

Simon Stewart 5:34 PM

@titusfortner wants to add “Remove Edge HTML”

Titus Fortner 5:35 PM

maybe a discussion of the general plan for post beta since it looks like the release is imminent?

Diego Molina 5:35 PM

Alright, first thing to mention is… great job everyone dealing with open PRs and open GH issues!

I don’t remember when we had such a “low” number of issues and PRs

but we can keep making that number smaller :slightly_smiling_face:

first topic: Anything new to report from the last PLC/SFC call?

Alexei Barantsev 5:37 PM

I expect the number of bugreports to go up after beta 1 release date

people will download and try the new version

be prepared :slightly_smiling_face:

Titus Fortner 5:38 PM

hopefully. :)

Luke Hill 5:38 PM

ah right. When are these and “should” I be coming to them? Also is there some form of meeting request with link on e.t.c.

I only ask because the cucumber one which I go to i’ve stuck on my calendar so I don’t forget.

Simon Stewart 5:38 PM

@luke there’s a public calendar we share

There’s something every Thursday at 4:30 UK time

Diego Molina 5:39 PM

I believe this is the link to the calendar, Luke https://calendar.google.com/calendar/embed?src=7nmc82h5ok17obircmdu27sghs%40group.calendar.google.com&ctz=Europe%2FBerlin

Simon Stewart 5:39 PM

We announce here 30 minutes before things kick off

Diego Molina 5:39 PM

So, anything from our first topic?

Anything new to report from the last PLC/SFC call?

Luke Hill 5:40 PM

Rightio, is it just typed in here or is there a video call?

Diego Molina 5:40 PM

only typed

Simon Stewart 5:41 PM

Nothing much to report from the PLC/SFC call

Alexei Barantsev 5:41 PM

re: issues and PR, there is a new contributor to the JS part of the project, https://github.com/SeleniumHQ/selenium/pulls/potapovDim I think we should support him as much as possible, he seems to be motivated, I saw he streamed about official selenium JS binding to youtube

Simon Stewart 5:42 PM

We’re waiting for @mmerrell to report back: he was going to reach out to the SFC directly

@barancev +1 for supporting new folks. Anything we can do to help them?

Alexei Barantsev 5:42 PM

the JS part of the crew is traditionally underrepresented… so we should care about JS contributors very much

I’m trying to get into contact with potapovDim to get him more involved

David Burns 5:43 PM

I’ve been trying to make the JS bindings a first class citizen with bazel

I think I have that nearly done

Diego Molina 5:44 PM

ok, the next topic is:

Overall announcements? New people on committees, with the commit bit, etc?

Probably not so much?

Marcus Merrell 5:45 PM

I reached out to SFC about the CoC SOW - Karen responded that she’d look at it “tomorrow” which was last Wednesday. I’ll text her right now to see what she says

David Burns 5:45 PM

cool

our contact for the CoC is still free

Marcus Merrell 5:45 PM

you mean “available”?

David Burns 5:46 PM

No, she has been trying to get back to work but taking it slowly as she is shielding due to covid

Diego Molina 5:47 PM

ok, let’s jump to the main topic then

Pending work that needs to be done for the first Beta?

Simon Stewart 5:47 PM

There’s a few things on my list.

Primarily, the Options classes don’t serialise to a w3c-safe version automatically.

That won’t be hard to fix

David Burns 5:48 PM

My list has Firefox CDP in JS (nearly done)

Simon Stewart 5:48 PM

There’s been a team effort to get the Grid stable. It eats memory, but should work now (@barancev and @diemol can correct me on that)

Diego Molina 5:49 PM

I had these two items on the client side, are the still pending? Make relative locators return elements sorted by proximity Allow locator strategies to be pluggable Enable fallbacks for commands

Alexei Barantsev 5:49 PM

I think that the grid is ready to ship

Jim Evans 5:49 PM

my list is all post-beta1, mostly around refactoring to allow CDP in remote and to enable for firerfox.

Alexei Barantsev 5:49 PM

there is a memory leak, but it’s not critical for the beta

Simon Stewart 5:49 PM

@diemol both of those are done

Titus Fortner 5:50 PM

Firefox CDP shouldn’t need to hold up beta

do we need to fix Options to release beta?

hoping we can release more frequently after we get to beta, just want to know what has to be there for it to be a beta

Diego Molina 5:52 PM

when do we think we can have beta 1 released?

should we set a date for next week?

Titus Fortner 5:52 PM

tonight?

everything is green, so what feature do we need to hold up the release for?

can we do it all in future betas?

Diego Molina 5:53 PM

perhaps the only item is what @simonstewart mentioned?

Simon Stewart 5:53 PM

The Options thing is it, AFAIAC

Titus Fortner 5:54 PM

and we can’t release a beta without it? Is it a user facing change?

Simon Stewart 5:54 PM

It’s suboptimal to not be able to create webdriver instances in java

Titus Fortner 5:54 PM

I completely agree it’s needed

Simon Stewart 5:54 PM

It’s a user-facing change

Titus Fortner 5:54 PM

ok, then :) easy.

David Burns 5:54 PM

I mean… no one uses Java right

Simon Stewart 5:55 PM

Seldom touched.

It’s a niche thing

Jim Evans 5:55 PM

considers changing his name to “no one”

Titus Fortner 5:55 PM

I thought it was an sub-optimized thing that we fix in implementation

but if it changes what a user has to do, then great. Let’s set a date next week? :)

Simon Stewart 5:57 PM

We’ll ship when it’s ready.

But probably next week

Diego Molina 5:58 PM

could we set a tentative date?

So people have it in mind and, if possible, save some time for it

like, we target next Thursday and we touch base on Tuesday to see if we actually can make it, what do you think?

Titus Fortner 6:01 PM

Whatever makes sense to Simon. Ruby stuff should be ready to go on short notice

Simon Stewart 6:03 PM

I’m very time constrained.

But Monday and Tuesday should be selenium days for me

Alexei Barantsev 6:04 PM

let’s ship on Monday then

David Burns 6:04 PM

Python stuff is ready, changelog is already updated

Simon Stewart 6:05 PM

@barancev if everything works on Monday, we ship on Monday

Alexei Barantsev 6:06 PM

yes, if everything works

Titus Fortner 6:06 PM

sounds good to me

excited for it

David Burns 6:06 PM

Let’s not set a date, as much as I want a beta. People will focus on it too much

Diego Molina 6:06 PM

sounds good, my intention was just to drive this conversation :slightly_smiling_face:

Titus Fortner 6:08 PM

Are we ready to talk about removing EdgeHTML? :)

Diego Molina 6:08 PM

got for it

Titus Fortner 6:09 PM

who wants to keep it in Selenium4?

No one? Ok, let’s remove it.

:)

Simon Stewart 6:09 PM

I’m going to let @jimevans make the call

Titus Fortner 6:10 PM

seriously, though, it’ll be less confusing for calling “edge” methods in Se4 to represent the latest instead of having to require people to specify “edge_chrome” and “edge_html”, etc

Simon Stewart 6:10 PM

I’m fine with edge and edgehtml

Titus Fortner 6:10 PM

well “edge” used to be edgehtml

Simon Stewart 6:10 PM

Everyone who’s lazy will get the right thing by accident

Titus Fortner 6:10 PM

so it’s going to be a change either way

but I’m fine with whatever @jimevans decides on it

Jim Evans 6:11 PM

let me make the call regarding EdgeHTML?

Simon Stewart 6:11 PM

Yeah

Titus Fortner 6:12 PM

should we all ditch explicit support for it in Se 4 since MS is forcing people off of it… :)

Alexei Barantsev 6:12 PM

@titusfortner we provide support for IE :slightly_smiling_face:

Titus Fortner 6:13 PM

IE is and will remain special

Diego Molina 6:13 PM

this is about EdgeHTML, not IE, right?

David Burns 6:13 PM

Looks like bwalderman submitted a patch for python to remove it a while back

Titus Fortner 6:13 PM

I think MS can force upgrading from EdgeHTML to Edgium more easily than forcing people to upgrade IE

David Burns 6:13 PM

bwalderman of John Jansen’s team

Alexei Barantsev 6:13 PM

@diemol yes, EdgeHTML, not IE

Jim Evans 6:13 PM

given that they’re doing forced-upgrades of people on EdgeHTML, i’m inclined to remove support for it. sure as we do, you know people will still be like “how do i test against edgehtml, since i don’t give any reflection on what my users are actually using and don’t want to have to think critically.”

is quite cynical today.

David Burns 6:14 PM

so… that was my question really…

Simon Stewart 6:14 PM

I’m down with removing it from the java tree, then

David Burns 6:14 PM

is Sauce dropping support for it?

or magic “here is an old selenium to support it” type code

Titus Fortner 6:15 PM

if the decision were up to me, yes, but it isn’t, so ¯_(ツ)_/¯

Diego Molina 6:15 PM

to be honest, I don’t know how we are doing it

David Burns 6:16 PM

we could ask your product team especially since they are starting their day or … drop it with a big YOLO

Diego Molina 6:16 PM

but if it is browser that won’t be supported by MS starting on March(?), we will eventually drop it

Titus Fortner 6:16 PM

I can see valid use cases for IE, I don’t see valid use cases for old Edge, and yeah, it’s all complicated since things have changed since 3.141.59

Diego Molina 6:16 PM

goes and asks the team in charge

Titus Fortner 6:17 PM

Dude, we still support running Firefox 4 on Vista

David Burns 6:18 PM

screenshots this for that team if they come moaning…

Titus Fortner 6:18 PM

So, you can test EdgeHTML with MutableCapabilities if you need to

David Burns 6:19 PM

the python code treats them the same, just creates a different service

Titus Fortner 6:21 PM

Titus: supports Jim: inclined to support

anyone else with opinions on keeping it?

it’s really the force upgrades that is pushing me to be more drastic in the recommendation, plus the potential confusion over the method

David Burns 6:22 PM

I’m happy to drop

Diego Molina 6:22 PM

+1 to that

Titus Fortner 6:22 PM

@barancev?

Oh, missed Simon saying he’s good with it

whew, ok, I’ll stop banging on about it :)

thanks

Diego Molina 6:25 PM @titusfortner, maybe you can create a GitHub issue and add labels for each language binding? Then we can track it

Titus Fortner 6:25 PM

Another ask…

Can we create a list of the new features that the bindings need to implement so that we can make sure all the languages are supporting the same things?

Some of the stuff being done in Java I’m not sure if it is grid related or bindings related.

I know Ruby is missing a few things, and I’m not even sure I know which all of them are.

Diego Molina 6:28 PM

I think we would need to go through the changelogs and build that list

David Burns 6:30 PM

@titusfortner thanks for offering to make sure the docs are up to date

Titus Fortner 6:30 PM

Can we make a grid in an issue, or do we need to track it elsewhere

I legit tried to help with the docs, but Go kicked my butt and I threw in the towel

I’m sticking with Jekyll where the OO makes sense :)

Diego Molina 6:31 PM

an issue would be nice

David Burns 6:31 PM

What…

@titusfortner you should watch my twitch… the docs are easy

Diego Molina 6:32 PM

Can we make a grid in an issue, or do we need to track it elsewhere

I am replying to this

lol

David Burns 6:32 PM

The what was for Titus

Diego Molina 6:32 PM

ok, so the meeting time is up, thank you everyone!

New Tricks in Selenium 4

Selenium Grid: a mechanism that allows you to distribute your tests across a fleet of machines.

In the fourth and final post in his series, Simon Stewart continues talking about what’s coming in Selenium 4 and reviews what’s new in the Selenium Grid.

We’ve covered a lot of ground in the past few blog posts, including how to contribute to the project, and some details of what you can expect as a Selenium user. But there’s more to Selenium than just the APIs you use to write your tests, and one of the big features we’ve not covered yet is the refreshed Selenium Grid: a mechanism that allows you to distribute your tests across a fleet of machines.

Before going further, it’s always nice to acknowledge where we’ve come from, not only because it’s interesting, but also because it helps explain the “why” of the refreshed design.

Way back in the mists of time (2008), Jennifer Bevin and Jason Huggins worked on a system called the Selenium Farm at Google. This was a fleet of machines sitting in a cupboard somewhere that allowed you to run the original Selenium protocol. This was, of course, at Google scale, so there was more than one cupboard :)

This allowed people at Google to distribute their tests and scale out beyond their individual machines. This was such a great idea that when Jennifer talked about the Farm at a Selenium meetup, Philippe Haringou (then at ThoughtWorks) decided to write an Open Source implementation of the same thing, which he called “Selenium Grid”.

Selenium Grid was a lovely piece of technology, but it had one drawback: it only spoke the original Selenium RC protocol. That was fine, but WebDriver spoke a different wire protocol, which was called the JSON Wire Protocol, and folks wanted to be able to use both Selenium RC and WebDriver at the same time.

This is where Francois Reynaud enters the picture. He was working at eBay, reporting to Michael Palotas, and he had written something like the original Selenium Grid, but which also worked with the JSON Wire Protocol. They very kindly contributed that work to the Selenium project, and it formed the basis of the Selenium Grid 2. We decided at the time that the Selenium standalone server would effectively be a “grid of one”: it would have everything you needed in it to set up a Selenium Grid, as well as to work as a single standalone server. Merging the code and getting it stable took a while, but thanks to the efforts of Francois, Kristian Rosenvold, and many others, we merged Grid 2 into the main Selenium project and shipped Selenium 2 in 2011.

Even if 2011 doesn’t feel that long ago, the modern world has changed quite significantly. In 2011, we didn’t have Docker. We didn’t have Kubernetes, we didn’t really have AWS. So, the Selenium Grid didn’t know that those things were coming in, and wasn’t written to take advantage of them. Fortunately, we did have virtual machines back then, and the Grid 2 had been designed to be able to support them.

This was the hook that an excellent project called Zalenium. Developed by Diego Molina, Zalenium added a really nice UI and support for Docker and Kubernetes—all built on top of the Grid 2. This has allowed the Selenium Grid to continue to be relevant and useful to this day, which is an amazing achievement.

But, like I said, it took us time to stabilise Grid 2: about six months of hard work, largely led by Kristian. That’s because while Grid 2 was sophisticated, the code was hard to read and hard to maintain—and very few people could do that. Worse, the merging of the Grid 2 and the original Selenium server was pretty crude; effectively there were two separate servers shipped in the same binary. This led to problems occurring in the Grid but not when run in standalone mode, and vice versa.

With Selenium 4 we’ve decided to bite the bullet and address these three concerns. Firstly, we want something that was easier to work on and maintain. Secondly, we want to merge the servers into a single unit. Thirdly, we want something that will take advantage of the world of modern infrastructure we have available to us now, not just in the form of Docker and Kubernetes, but also to be able to use emerging technologies such as distributed tracing.

To do this, we looked at the functionality the Grid provided, and to model each piece as a component that we can either run “in memory” (allowing us to have a single standalone server), or in a more distributed way, allowing the “hub and node” architecture that we’re familiar with from the original Selenium Grid, to a fully distributed design.

The first component is the “router”. It serves as the entry point to the Grid. You can expose it to the internet and it directs requests to the Grid. It’s designed to be stateless, and so you can add more to Grid as you find you need to.

When the router sees a new session request, it places it on a “session queue.” The session queue is read by a component called the “distributor,” which maintains a model of all the places in the Grid where a session could be run: we call them “slots”. The slots are hosted by components called “nodes,” and each node can have one or more slots. When the distributor pulls a new session request from the queue, it identifies the most appropriate slot to use, and forwards the request to the node which owns the slot. Once the node has started the session, the distributor puts the session ID and the URL of the Node that is running the test into the “session map”—you can think of the session map as being a simple map of a session ID to URL—and the new session response is sent back to the waiting test.

Requests for running sessions (that is, for most webdriver calls!) are handled slightly differently. The router will use the session map to look up which node to forward the request to, avoiding the need to involve the distributor entirely. This means that you can just keep adding nodes to the Grid, and there are fewer bottlenecks in the architecture to slow your requests down.

Conceptually, there are these five moving pieces within the Grid. But there’s actually a sixth one, which is a message bus. The five Grid components communicate internally through the message bus, but the actual components that you need to think about when you’re thinking about the Grid are the Router, Session Queue, Distributor, and Nodes.

When you run Selenium Grid 4 in “standalone” mode, you actually get a “grid of one”. We wire up all these components in a single process, but they’re all still there.

You can also run it in the traditional Hub and Node approach that you’ve seen with Selenium Grid 2, where you fire up a Hub and a Node and it registers. If you’ve used Selenium Grid recently, that’s probably the architecture that you’re familiar with. In this case, most of the components (the router, session queue, and distributor) are running in the Hub, and the Nodes run the sessions themselves.

What’s new with Grid 4 is that you can go into a fully distributed mode if you want to. Typically, you would want to use something like Kubernetes for this, and some of the key components are designed to store data using a database or Redis for better reliability and scalability.

Something to note is that when running a distributed Grid, it becomes really difficult to figure out what is happening, particularly when something goes wrong. To alleviate that problem, we have adopted Open Telemetry to bring observability into the Grid. What do we mean by observability? It simply means that we want to be able to see everything that happens.

Finally, we’d like to expose information about the running Grid in meaningful and useful ways. The original Grid supported both JMX (a Java management API) and an HTML-based console. While nice, this didn’t make it easy to query specific areas of the Grid that you might be interested in that weren’t surfaced by the UI (for example, how many slots are available, or to find out which node a particular session is running on) To provide more flexibility, we’ve chosen to provide a GraphQL endpoint for the Grid. To ensure that GraphQL endpoint is sufficiently flexible, we’re building the new Grid console using it. That should allow you to also extract useful metrics and information from the Grid for your monitoring needs.

Those are some highlights of the new Selenium Grid. What are you the most excited about?

This was originally posted at https://saucelabs.com/blog/whats-coming-in-selenium-4-the-new-selenium-grid

Public Project Meeting - January 28, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on January 28, 2021,5:30 PM CET.(Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 9:17 PM

Yes, here is the short agenda:

  • General project statistics (Previous meeting: 262 open issues, 54 open PRs, Current: 252, 35 PRs)
  • Overall announcements? New people on committees, with the commit bit, etc?
  • Pending work that needs to be done for the first Beta?
  • CoC, next steps?

Alexei Barantsev 9:44 PM

can the Bot drop the meeting link to the chat, please, I always forget where to get it…

Diego Molina 9:53 PM

this is the written one

Alexei Barantsev 9:58 PM

awesome! I’m in yet I have nothing to add to the agenda

Diego Molina 10:01 PM

sounds good I’ll ping people around and we can wait a couple of minutes, Simon said he was going to be slightly late

10:02 PM

@titusfortner @jimevans @mmerrell @manoj9788 @AutomatedTester @harsha509 @luke

Jim Evans 10:03 PM

i’m not going to be able to make the video chat, but i can contribute here if people have questions. the only thing missing from .NET for beta1 is making CDP work via remote, which i don’t think needs to be in beta1 for .NET.

Diego Molina 10:06 PM

this is just the written one, the video chat is just to hangout, that one is next week

Marcus Merrell 10:06 PM

no status chance on the Chicago conference at this point - still looking at COVID numbers to determine whether or not it’s going to be feasible

David Burns 10:07 PM

here! sorry

Diego Molina 10:07 PM

Marcus are we still looking into an online event, Marcus?

Marcus Merrell 10:07 PM

we can look into that haven’t been to this point

Diego Molina 10:08 PM

I only ask because (I think) it was mentioned last time ok, perhaps we can start, the first topic is: Overall announcements? New people on committees, with the commit bit, etc?

10:10 PM

Aside from @luke joining recently, there are no more things to announce, right?

Sri Harsha 10:10 PM

I think luke joined recently!

Simon Stewart 10:10 PM

Nothing that I can think off

Alexei Barantsev 10:12 PM

I support @diemol’s appeal to focus attention to the issue tracker. let’s try to clean it up in view of the forthcoming v.4 release

10:13

close all outdated issues and PRs, apply everything that worth applying

Diego Molina 10:13 PM

the work done during the recent week on the issue tracker has been great, hopefully we keep that going

10:14 PM

we could jump into the next topic perhaps… Pending work that needs to be done for the first Beta? here is the list I have from the last meeting

10:15 PM

Client facing changes:

  • Make relative locators return elements sorted by proximity
  • Fix Java Module System problems (I think @simonstewart did this already)
  • Allow locator strategies to be pluggable Enable fallbacks for commands

Server changes:

  • Enable retries of commands where necessary using failsafe
  • Get the Grid UI looking nice, and returning useful data (@diemol is working on this)
  • Allow locator strategies to be pluggable
  • Pipe VNC connectors through the websocket plumbing for live video

Simon Stewart 10:15 PM

Relative locators now sort by proximity I think the Java Module stuff is working I’m working on fallbacks for locators

Alexei Barantsev 10:15 PM

I can confirm that java 9 modules are usable now

Simon Stewart 10:16 PM

Locator strategies are pluggable on the server side Once I get the locator strategies falling back on the local end, I’m fine with shipping the beta

Diego Molina 10:17 PM

we had some issue reports related to the Grid, in most of the cases it is a matter of showing the correct information on the UI and I am working on that

Simon Stewart 10:18 PM

Also there’s a nasty issue with starting a large number of sessions concurrently

Diego Molina 10:18 PM

yeah, I was going to point that one out, https://github.com/SeleniumHQ/selenium/issues/9112 I have not had time to research enough, but most of the results when googling point to: either we are creating too many Netty clients or something is wrong with the way the client is created

David Burns 10:20 PM

Feel free to pull in @Puja Jagani on the sessions one, I know she was looking at one about starting up a grid and things not working

10:20 PM

(can’t remember the issue #)

Diego Molina 10:20 PM

that’d be great, I can sync with @Puja Jagani later what do you all estimate for a beta release? 3-4 weeks?

Simon Stewart 10:21 PM

Maybe less

Diego Molina 10:23 PM

ok, I think we do not have more things pending for beta 1? the only topic left is the CoC New

Titus Fortner 10:24 PM

Is this a good time/forum to ask about wiki/docs?

Diego Molina 10:24 PM

always

Titus Fortner 10:25 PM

Diego pointed me at a couple issues @AutomatedTester created for docs & wiki cleanup things did we have an idea for what we want in the language specific wiki page vs in the docs; and user vs developer focused? The Ruby wiki stuff is way out of date, not even just Selenium 4 things :) just want to know where we should be cleaning it up to

Diego Molina 10:28 PM

are those two different things? language specific things and dev docs? (people who want to contribute to Selenium, what technical steps to follow?)

David Burns 10:28 PM

CoC is still waiting on SFC. New

Titus Fortner 10:29 PM

What we did with Watir was to make the wiki about things devs need to know about the project building/deploying, etc and everything user related went into the documentation oh, heh, looks like we ended up deleting the wiki and sending everything to the website

Diego Molina 10:32 PM

Why do we need a language bindings specific things on the user docs? Do they differ too much on how they work?

Titus Fortner 10:33 PM

So our current documentation has tabs to show the examples in each of the languages the wiki is currently just a big page of examples for using Ruby Selenium (https://github.com/SeleniumHQ/selenium/wiki/Ruby-Bindings)

10:37

I guess I haven’t spent much time with the docs anyway, so maybe I should play around and see what makes sense. Didn’t know if anyone else had opinions on any of it. :) Guess not

Diego Molina 10:38 PM

ah ok, that Wiki seems to be duplicating the user docs but some parts of the Wiki could evolve to be part of the user docs

Titus Fortner 10:39 PM

yeah, it’s 2 approaches to organization as well; here’s everything in ruby, vs here’s everything, click the tab for each to see the ruby.

Diego Molina 10:39 PM

I think the 2nd could work well someone needs to take the time and take the contents of that Wiki and put them in the docs

Titus Fortner 10:39 PM

I’ll take a look at what might make sense since now that I no longer have any looming work pressing things for the first time in forever

Diego Molina 10:40 PM

cool thank you

I think that was it for today, right?

Thank you everyone!

Public Project Meeting - January 14, 2021

Continuing the series of bi-weekly public project meetings…

Continuing the series of bi-weekly public project meetings, here is the timeline of the meeting held on January 14, 2021,5:30 PM CET.(Below times are on IST)

Meetings are held on the #selenium-tlc channel on Selenium Slack.


Diego Molina 10:02 PM

Alright, :wave: everyone, let me share the agenda

10:02 PM

  • Overall announcements? New people on committees, with the commit bit, etc?
  • Anything new to report from the last PLC/SFC call?
  • Pending work that needs to be done for the first Beta?
  • CoC, next steps?
  • Any other topics?

10:04 PM

pinging @titusfortner, @AutomatedTester, @mmerrell, @barancev

who else?

Simon Stewart 10:04 PM

@jimevans @p0deje @harsha509

Jim Evans 10:05 PM

i’m already in another meeting at the moment.

Sri Harsha 10:05 PM

m available

Diego Molina 10:05 PM

ok, let’s bring the first topic: Overall announcements? New people on committees, with the commit bit, etc?

David Burns 10:05 PM

here

Diego Molina 10:06 PM

So, I asked both to the TLC members about adding @luke as a committer, and I also reached out to Luke, both sides are happy with it.

David Burns 10:06 PM

cool!

Diego Molina 10:07 PM

Then, I will add Luke during the next couple of days and follow the steps we have in the Governance model

Simon Stewart 10:08 PM

Congratulations, @luke! :tada:

Diego Molina 10:09 PM

great! So, I think we have nothing else to add to this point?

Marcus Merrell 10:09 PM

I’ve got approval emails out to SFC to get the new contractor on the Code of Conduct. It’s time to poke again. We’ve tentatively selected dates for a Chicago SeConf (sometime in September, I believe). We’re still hopeful that with the vaccine, this will be possible. we’ll look to make a final decision, based on numbers, in ~April :parrot:

10:11 PM

We need to consider whether or not to run a virtual conference in the case that it doesn’t work out to have an irl conference

Simon Stewart 10:11 PM

Can that decision also be delayed until April?

Marcus Merrell 10:11 PM

I’m a little uncomfortable waiting that long–not for the hotel and the risk of losing the deposit $$, but because of marketing/CFP stuff let’s say “early April”

Diego Molina 10:12 PM

Great news about the CoC! ok, seems we covered also the “Anything new to report from the last PLC/SFC call?” topic as well, right?

Simon Stewart 10:14 PM

I think so

Diego Molina 10:15 PM

ok, so let’s jump to “Pending work that needs to be done for the first Beta?”

Simon Stewart 10:15 PM

There’s a few things

10:16 PM

I’ve a PR out for the new RemoteWebDriverBuilder, which is one piece. The other big bit for me is the pluggable locators, tying up the local and remote ends bits we already have. That’ll be easier with the RemoteWebDriverBuilder in place.

10:17 PM

(As it’s essentially creating new decorators of the CommandExecutor) I’d also like to ensure that things like the relative locators and script pinning work as advertised, but that’s a relatively slim tranche of work My next hacking days are Monday and Tuesday next week

Diego Molina 10:18 PM

here is a list from the previous status meeting: Client facing changes:

  • Make relative locators return elements sorted by proximity
  • Fix Java Module System problems
  • Allow locator strategies to be pluggable Enable fallbacks for commands
  • Server changes:
  • Enable retries of commands where necessary using failsafe
  • Get the Grid UI looking nice, and returning useful data
  • Allow locator strategies to be pluggable
  • Pipe VNC connectors through the websocket plumbing for live video

10:19 PM

I think this is (partly?) done “Allow locator strategies to be pluggable” and I remember @simonstewart did this “Make relative locators return elements sorted by proximity”

Simon Stewart 10:19 PM

I did The Java Module System thing is a good point, but not a huge amount of work

10:20 PM

Though it’s a little fiddly

Titus Fortner 10:20 PM

is the “pluggable” part a Java specific thing, or something new that the server is going to support that opens up new opportunities for dynamic languages?

David Burns 10:20 PM

@Puja Jagani could probably look at the Java Module work

Puja Jagani

Sure! I can take that up

Simon Stewart 10:20 PM

I can discuss the changes with her

10:21 PM

@titusfortner the remote end bits of the pluggable locators allow us to avoid sending large payloads across the wire for (eg) finding by react But it requires the local end to know in advance that it can use that mechanism Tying the pieces together with a fallback allows the local end to try the efficient way first and then fallback to the inefficient way

10:22 PM

It shouldn’t be a particularly challenging thing to do once the pieces are all nicely lined up, but getting the pieces lined up has taken time :slightly_smiling_face:

Diego Molina 10:24 PM

I am slowly getting more time to work on some open issues and getting some items from that list on the server done, like using failsafe for retries

Puja Jagani

I created a PR to get started on that front for transient errors, please have a look when time permits. I think that might serve as the starting point.

Diego Molina

perfect, will do

Simon Stewart 10:24 PM

I think the BrowserStack folks (particularly @rajendra?) are hacking on the Grid UI and can give an update on that I’m happy to punt the failsafe stuff for the beta, but it really should be in place for the 4.0 release

Diego Molina 10:24 PM

I saw one or two GH issues related to that, if I am faster than @rajendra I can tackle it and get familiar with the UI I would leave this one out as well Pipe VNC connectors through the websocket plumbing for live video

10:25 PM for beta 1 hopefully it could be there for the 4.0 release

Simon Stewart 10:25 PM

I think that’s just a case of adding the video URL to the se:options in the server Should be in the same place as we add the bit for cdp

David Burns 10:26 PM

I had a quick look at the grid-ui in a stream… my CSS sucksbut happy to pair up and fix

Diego Molina 10:26 PM

ah, so the scope is way smaller than what I was thinking

Simon Stewart 10:26 PM

The WebSocket forwarding either works or it doesn’t. If it doesn’t, CDP over the Grid is broken And I already got the CDP over Grid working :slightly_smiling_face:

David Burns 10:26 PM

@Puja Jagani is looking at adding a few more issues with graphql that we can surface

Diego Molina 10:27 PM

so we offer the WebSocket endpoint and the user can use it to stream

Simon Stewart 10:27 PM

Can we “drain” using GraphQL yet?

David Burns

I dont think so

David Burns

we can get the grid ui to call a normal url

Simon Stewart

The idea would be to use GraphQL for the entire UI….

David Burns

We can add it “soon” but since it works we don’t need to block a beta on it. Let’s have a stretch for it

Simon Stewart

But it doesn’t work if you have a distributed grid

Simon Stewart

It’s one of the “tracer bullets” of the graphql stuff, and really does need to be in

Simon Stewart

I want the beta as much as anyone, but there are some corners we should avoid cutting

Simon Stewart 10:27 PM

@diemol it’s a tiny bit more than that, but, yeah

Diego Molina 10:27 PM

I thought we wanted to put that in the Grid UI

Simon Stewart 10:27 PM

We do before 4.0

Diego Molina 10:27 PM

we would need to embed a VNC client in the UI for that

Simon Stewart 10:27 PM

But for the alpha, I’m happy with the endpoint being exposed and being able to wire up a vnc viewer locally that goes through the grid @diemol what did zalenium use?

Diego Molina 10:28 PM

noVNC, but that was something that you need to install on the host, IIRC

10:29 PM

ah, I think it also has a JS library, it “should” work there is also an alternative called “Guacamole”

Simon Stewart 10:29 PM

http://guacamole.apache.org might be useful Ha!

Diego Molina 10:30 PM

right, so I can look at that at some point

Simon Stewart 10:30 PM

Awesome. Thank you

Diego Molina 10:30 PM

coming back to pluggable locators, it is working in Java but we would need the other bindings to implement it, right?

Simon Stewart 10:31 PM

When it’s working in Java, yes :slightly_smiling_face: But I think it’s enough to get them in one binding for the beta, and the others can follow

Diego Molina 10:31 PM

Also, the reworked logic for relative locators has been implemented only in Java?

Simon Stewart 10:32 PM

The reworked logic was in the atom. Everyone has it Yay for the atoms!

10:32

:slightly_smiling_face:

Diego Molina 10:32 PM

That’s great! Do we have anything else? I will (for sure) this time create GitHub issues for the different items

Simon Stewart 10:34 PM

And add them to the project plan, please!

Diego Molina 10:34 PM

absolutely

Simon Stewart 10:35 PM

Thank you

Diego Molina 10:36 PM

Well, I think we do not have other topics, should we cut it short? New

Simon Stewart 10:38 PM

I’m down with that. Thanking for running this! Unless @jimevans has something to add? I see he’s typing

Jim Evans 10:38 PM

re pluggable locators: that’s just having findElement(s) call down the wire using the end point without validating the using and value params, yeah?

Simon Stewart 10:39 PM

That’s what the java code does at the moment

Jim Evans 10:39 PM

cool. .NET can do that too right now, i think (will have to confirm)

Simon Stewart 10:39 PM

I want to land a few more smarts

David Burns 10:39 PM

I expect the python and ruby code can do it to since monkey patching is easy and then add smarts too improve docs ftw

Diego Molina 10:43 PM

ok, seems we are done with the status meeting, thank you everyone!

Jim Evans 10:45 PM

re beta readiness: i have a refactor to .NET i want to do to make CDP via RemoteWebDriver easier/more correct, but it can wait until post-beta1

10:45

otherwise, i think .NET is ready for beta.

Results of the first ever selenium survey

Summary of the Selenium survey that was collected

Below is a summary of the Selenium survey that was collected.

Batteries included

Browser Management

Unsurprisingly, people find having to manage browsers a task they wish they didn’t have to do and wish that Selenium did this. 59.5% of respondents want Selenium to manage the browsers for them. This, though the question didn’t ask this, is to include the browser drivers.

Frameworks

The results show an interesting view into framework usage. 61% of users use a framework. When we look closer at some of the responses there could be a little language bias in there. Some responses in the “both” category are “depends on the language” or “depends on the project”. Frameworks, from a couple responses seem to be around JavaScript mostly.

How tests are run

One of the questions that was the most surprising was that people dislike running their tests in headless. 57% of people don’t want headless. This is surprising since puppeteer and playwright are up and coming tools that default to headless.

Browsers

People tend to favour evergreen, or the latest version from auto updating browsers, with over 55% of people wanting that. When we look at the data closer then people tend to do evergreen and then a specific version for IE.

People are also, overwhelmingly I should add, wanting to test on multiple browsers. 78% of people test with multiple browsers. This goes against the Chrome only support that we see on social media. The most used browsers for testing are (Percentage of respondents testing with browser):

  • Google Chrome (98%)

  • Firefox (67%)

  • Microsoft Edge (33%)

  • Safari (29%)

  • IE (13.5%)

One thing that is clear is that Testing against multiple browsers is hard. 51.6% say it’s hard and a further 27.3% being 3 out of 5. This is likely where some frameworks are becoming popular as it removes some of the need to understand the asynchronicity of browsers. This still has its problems in puppeteer and playwright as they add similar wait libraries to what Selenium has.

Mobile Browsers

One of the most surprising things to have come out of survey was the want to use mobile browsers more.

Of the 410 respondents 367 want to test on mobile. Interestingly, this goes well past just Chrome for Android and Safari for iOS.

Below is a list of browsers and percentage of users wanting to use it. Questions were designed for Android unless it said iOS. See note at the end of the section.

  • Firefox for Android: 38%

  • Chrome: 91%*

  • Microsoft Edge: 14%

  • Samsung Internet: 16.6%

  • Safari on iOS: 69%

*Note that the questionaire only mentioned Chrome so it could be a conflation between platforms here. 1 Person used the other field to add Chrome for iOS.

Language support

Language support is what one would suspect with most users using Java or python.

  • java: 67%

  • python: 31%

  • ruby: 6.1%

  • .NET: 17.6%

  • JavaScript: 21.4%

  • PHP: 1.5%

Improvements

After reviewing the “What one thing would you improve about Selenium I was able to narrow most of the responses down to similar types.

Below is a breakdown of the issues that people would like to see improved.

Breakdown of answers of areas needing improvement. Main 3 areas are flakiness, documentation, Browser Management, Shadow DOM

Happiness

Of the 410 respondents, 219 had something nice to say about Selenium and were thankful for the product being around.

Some of the main reasons are simplicity of APIs, good backwards compatibility, and it being open source