Selenium -maxSession for all Nodes - testing

We are using Selenium testing with protractor. For some tests we need to serialize the testing, so that maximum one Browser (in our case it's also an user) can be active. It's possible to limit the sessions with -maxSession parameter, but that just limits it for the current node. Is there a possibility to do that globally for every node or to start the nodes one after each other?

oh well it was easier than I thought. Parameter maxSessions: 1 in protractor.conf seems to work also with many nodes.

Related

Can selenium grid 2.0 hub also act as node?

Can a selenium grid 2.0 hub also act as a node?
I ask because I want to cut-down on the cost of buying another node. It would be great to have the hub also do some node work.
Sure it can and this is most commonly used method as well.
You just need to make sure to use 2 separate ports on the machine for hub and node.
I suggest not to configure more than 2 instances of browsers on an average power machine, otherwise you might see test failures due to grid performance.

Is it possible to run concurrent selenium test Suits against single Grid Hub?

Hey all
Is it possible to run concurrent selenium test Suits against single Grid Hub?
If yes is there any special configuration I need to set in order to enable it? If no is there any workaround you can think about?
My understanding of the question:
PC 1 : Test Suite 1
PC 2 : Test Suite 2
PC 3 : Selenium Grid Hub
Both PC 1 and PC 2 use PC 3 as a hub for their test suites execution.
But you haven't mentioned anything about the Nodes here.
Assuming PC 3 itself is the Node. And you have set your maxSession and maxInstances properly as per your test suites require, then the tests will run fine.
Please provide more information regarding the Node and the command/script you use to create the Nodes and Hub if you need further explanation.
If I read your question correctly, yes, this is the intention of grid. You can send as many concurrent test requests to the hub as you wish and the hub will distribute the requests to appropriate nodes, holding pending tests for an available node.
As far as configuration, you'll want to check out the wiki ( https://github.com/SeleniumHQ/selenium/wiki/Grid2 ) for full info, but specific configuration you are interested in is:
"maxSession": the number of parallel instances that can be run on the node/hub

Is it possible to use casperjs to test your website if it can handle many users?

I need to test my website if it can handle 100 or more users concurrently, Is it possible to do it by casperjs? if yes, how will i do it?
No, not really.
CasperJS runs on PhantomJS (or SlimerJS). So you can only have one session per CasperJS script. You could use multiple casper instances if your site doesn't need sessions (i.e. doesn't have a login), but since PhantomJS is single threaded, that won't get you much concurrency.
You would need to start 100 CasperJS processes with the same script to simulate that many users, but then you run into hardware problems. Let's say one CasperJS process takes 50 MB of RAM. Your machine would need at least 5 GB of memory. Then there are the context switches because of so many processes, which wouldn't make it very concurrent.
You would need a cluster of machines with at most 16 CasperJS processes each. You would then need to synchronize them all (i.e. with the webserver module).

Is there any way that I can bypass Selenium Grid's auto-selection process?

My Situation:
I have 60 dedicated selenium nodes that I use, in AWS. My Selenium Grid and all my Selenium Nodes are in the AWS. (cuts down network requests)
My Problem:
I am experiencing an issue when executing my regression suite. I run only 4 tests at a time due to our nightly servers only being able to handle so many tests going at it at once. The problem that i've diagnosed is that when using t1.micro instances, the CPU tops off when launching only 1 test per 1 node. I keep getting several timeouts. Fine. I can easily upgrade these to m1.small but it makes me think more about the way that the selenium grid selects it's nodes. Per my understanding, this is a quick getup on how the hub handles it's nodes.
So if we only have 4 tests running at a time, it will select the first four nodes. Once these nodes are finished running the tests, it will launch another test against the same instances. Is there any way that I can bypass this logic to just select a random available node rather than "the next one in queue"? I'm noticing that the X amount of nodes after the four nodes are NEVER being utilized.
Sidenote:
I have 60 nodes because this grid will have several different types of regression suites against it. Not only mine.
Edit (July 25, 2015)
A pull request was created for this functionality: https://github.com/SeleniumHQ/selenium/pull/832
This pull request should fix the issue
https://github.com/SeleniumHQ/selenium/pull/832

Distributing requests to Selenium Grid RC's?

I've got a situation here where I have a central selenium grid hub, and several RC's running on my gogrid account. When I access it to run tests, it basically queues all the incoming test requests and executes them serially on only one of the RC's, instead of spreading them out to use available RC's. The tests come from multiple projects, so I'm not looking to parallelize the tests themselves, just to split the requests that come from multiple projects across the multiple RC's. From everything I've read, it seems like selenium grid should be doing this already, yet I only see one RC used to run every single test. Is there something I'm missing?
Do you have multiple RCs registered with the same environment? Each worker can currently only broadcast one environment and the hub assigns work to workers in a circular queue fashion (first registered gets work first).
http://selenium-grid.seleniumhq.org/configuring-and-tuning.html