Comments (10)
Just to give some spoilers (although this is getting more and more off-topic):
We were able to run ~700 browsers behind a single WebGrid instance across 41 K8s nodes. All with screen recordings running, obviously 😜
from thirtyfour.
Also check out https://github.com/stevepryde/xenon - it works as a lightweight selenium server (but just as fast) and may be possible to add support for HTTP/2. If that works then it might be an option to test against as well.
Oh look another project that noticed the immense resource consumption of Selenium Grid and used Rust for a more efficient implementation 😆
Jokes aside, thanks for the link!
from thirtyfour.
If you have other questions @lucaswxp, we should probably move the discussion over to the appropriate repository though to prevent this issue from going off-topic.
Either the GitHub Discussions or the Discord server would be a good place 🙂
from thirtyfour.
Sharing the Client struct should be relatively easy since it internally uses an Arc
to share the connection already so we just have to clone it when creating further WebDriver
instances.
from thirtyfour.
It probably makes sense to wait until this is supported by Selenium so that it can actually be tested 🤔.
Meanwhile if we want to share the same client across multiple WebDrivers then all we really need is to clone the sender channel used to send webdriver requests. All requests will still be done in series though, not parallel, due to the way the channel is consumed only via a single thread. If this isn't sufficient then a more elaborate solution would be needed.
from thirtyfour.
Also check out https://github.com/stevepryde/xenon - it works as a lightweight selenium server (but just as fast) and may be possible to add support for HTTP/2. If that works then it might be an option to test against as well.
from thirtyfour.
You can test it by pointing it at a deployment of this* 🤷♂️
It'd obviously increase test complexity by requiring yet another grid software deployed but would work.
*The HTTP/2 feature is not yet in a release but that is coming soon — I just need to patch up a few things that broke by migrating to h2.
from thirtyfour.
You can test it by pointing it at a deployment of this* man_shrugging
Ha! This looks awesome, although I need to read more of the docs to see what it can do. And yes I routinely find selenium hub consuming more than 1 core on my PC for what should be effectively a thin proxy. Not to mention consuming upwards of 300MB of memory constantly. Good ol' JVM. Of course browsers are another story :(
If you're able to test against your project then that works too :)
from thirtyfour.
@TilBlechschmidt Just out of curiosity, what kind of machines were those node? Memory/CPU/Datacenter etc.
from thirtyfour.
@TilBlechschmidt Just out of curiosity, what kind of machines were those node? Memory/CPU/Datacenter etc.
I can't remember exactly but they were running in the Google Compute Cloud (GKE) and must've been around 8-16 cores each with probably 32GB of RAM. However, it really depends on your type of workload how much power and memory you need. Browsers typically have a large startup overhead but once they are running, the requirements are pretty modest. In the future, I plan to do some more detailed analysis based on real-world workloads.
At some point, I'll have to write a blog post about all this but I'm afraid it'll be some time until that happens 😄
On-premise we've been running 50-100 browsers on a 40 core, 256GB machine which was not anywhere near its capacity limits -- again all depends on workload as this was while running a stress test designed for WebGrid and not the browsers. Then again, it ended up being more of a stress test for our K8s Control plane ...
from thirtyfour.
Related Issues (20)
- so, how to get the text value of an element HOT 1
- Error while clicking element. HOT 4
- `#shadow-root` doesn't work on Firefox with geckodriver HOT 1
- Connection refused when using containers HOT 4
- How to use selenium-manager in my code? HOT 2
- thread 'tokio-runtime-worker' panicked at 'internal error: entered unreachable code: received unknown error (no such frame) for NOT_FOUND status code' HOT 4
- How can I set the user-agent for Chromedriver? HOT 3
- Is there a way to use wait_until or something like it to way for a specific ID to be available ? HOT 2
- wait until element to disappear HOT 6
- Chrome Options example erroring HOT 2
- Does `query` work on child elements? HOT 3
- Cannot interact with WebElement HOT 1
- How to trigger onchange event without submitting the form? HOT 2
- How to set PageLoadStrategy::None in DesiredCapabilities::chrome()? HOT 1
- Running the Test without Existing Browser (HtmlUnitDriver) HOT 1
- Add cdp type from auto_generate_cdp crate HOT 2
- How to handle file picker? HOT 4
- How to capture the Chromium's requests and responses traffic using thirtyfour HOT 5
- Maintenance Status
- Device Farm incompatibility - with workaround
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from thirtyfour.