How can I get realtime network calls in BrowserStack app-automate? - browserstack

How can I get realtime network calls in BrowserStack app-automate?
There seem to be two options for me so far from what I have explored.
Get network logs from BrowserStack.
Issue: With this approach, I can get network calls only after the session completes. I can run checks only at the end of session, and not as the events occur.
Use mitmproxy
Issue: Wanted to avoid using an external dependency. With this I will also have to start a proxy server, which seems like an overkill for a feature BrowserStack should already have.
Could someone please share if they have better approaches to identifying network calls from BrowserStack test device?

Related

Is it possible to close remote web driver connection and initiate a new one for long running tests in Selenium Serenity

We have a remote test execution framework working fine against a cloud vendor for real browser/mobile device testing. When tests grown complicated with several steps and a lot of examples/test data under a scenario, the connection is lost between the remote site and local client resulting in test failures/errors.
Looks like when the framework is ran, it initiates driver and opens a single http connection (long lived) and a new session is initiated for every test scenario in the same connection. Also framework is doing a lot of SYNC calls in background for keeping that connection alive.
We have tried headless mode, disabling screen/video at the cloud providers end, but still fails if there is any interruption in public cloud connection.
The core reason would be unstable internet connectivity to hold for long running test cases. We don't have the budget to explore private cloud offerings. The only solution would be somehow instruct serenity to close and initiate a new connection for long running tests.
Does anyone has any idea if this can be achieved in Serenity? Any one already explored the same?

Using a browser as a WebRTC SFU

I'm building a webrtc project, and i need to:
route specific stream to specific users
record the streams on the server
I know this is typically the job of an SFU (selective forwarding unit)
However, before finding out about SFUs, I had previously started using browsers running on servers (i tested both chrome and firefox...using firefox for now), and it seems to be working.
I run my javascript and create peer connections and add the relevant streams just like i would on the clients.
I was even able to successfuly achieve multi-server hierarchy this way.
The only downside is see right now, is that the browsers decode the streams, which i believe would cause cpu overhead which i would not see using a proper SFU.
However, my project generally does 1 to many streaming (or rather few to many), and i need server side recording (which would cause an SFU to decode the streams anyway)
So, my question is..
Why is using a browser as an SFU for webrtc a bad idea? I haven't seen a lot of people doing this, so there must be a reason
Thank you

Any idea for executing Selenium webdriver + Java/Python tests from Cloud

I can't found any question/answer about that (probably I don't know how to find it...)
Could somebody give me a global idea to execute +200 Selenium webdriver tests (Python) from cloud servers/tools?
Thanks!!
rgzl
Another way is Saucelabs, using this service you'll be able to just send your Selenium
Java/Python tests
to their Cloud infrastructure for execution. The benefits of such testing are obvious – no need to waste time and resources setting up and maintaining your own VM farm, and additionally you can run your test suite in various browsers in parallel. Also no need to share any sensitive data, source code and databases.
As said in this acticle:
Of course inserting this roundtrip across the Internet is not without cost. The penalty of running Selenium tests this way is that they run quite slowly, typically about 3 times slower in my experience. This means that this is not something that individual developers are going to do from their workstations.
To ease the integration of this service into your projects, maybe you'll have to write a some kind of saucelabs-adapter, that will do the necessary SSH tunnel setup/teardown and Selenium configuration, automatically as part of a test.
And for a better visualization:
Here's a global idea:
Use Amazon Web Services.
Using AWS, you can have a setup like this:
1 Selenium Grid. IP: X.X.X.X
100 Selenium nodes connecting to X.X.X.X:4444/wd/register
Each Selenium node has a node config, running 2 maxSessions at once. (depending on size of course)
Have also, a Continuous integration server like Jenkins, run your Python tests Against X.X.X.X grid.

Load testing: Choosing between a tool or simulating clients on my own for this scenario?

I want to load test my application and I'm deciding b/w choosing a load testing service or simulating the clients on my own.
My question is whether I can accomplish this user scenario using any of the load testing tools available.
My test will have two types of users, A & B. Communication would be between A and B. A-A communication and B-B communication is not there.
I want Users to login to my application through mobile or web. Either type of users could log in through either type of platform.
Make multiple GET/PUT/POST requests to my application server with specific parameters.
Be able to exchange video or text messages by integrating through services like Pusher and Vidyo.
'3' is probably the most important requirement for me, and I'm wondering if I could simulate the dummy users so that it listens to a pusher channel and can open up a Vidyo iframe in the emulated browser / mobile device for a specific pusher message?
I got on call with Blazemeter and turns out they or anyone in the market doesn't support plugins on emulated browsers. I finally simulated the clients on my own replicating all the server calls a typical browser or mobile device makes for my application.
I haven't yet been able to load test Vidyo and don't know if there's a way to do it except by opening up conferences manually.
I was able to load test services like Pusher and SQS successfully.

webbacked selenium not supporting captureNetworkTraffic method

i am using webdriverbackedSelenium for my tests , i see that it isn't supporting capture network traffic method. can anyone tell me when webdriverbackedselenium is extending default selenium why isn't it supporting captureNetworkTraffic method
Selenium WebDriver and Selenium RC use fundamentally different mechanisms to automate the browser. RC installed itself as a proxy in some modes of operation, which allowed it to capture all communications between browser and web server. WebDriver's philosophy is designed to more closely emulate the user's experience, including not blindly installing a proxy without the user's knowledge, so WebDriver is not able to capture that traffic by default.
Selenium RC is deprecated, and has been for over two years. It is receiving no attention from the development team, and is unlikely to be improved in the future. However, since many people have significant investments in code using the RC API, the project provides a bridge class, WebDriverBackedSelenium. It is designed to allow you to migrate your RC code to WebDriver over time. It is not intended as a permanent solution. It does not, will not, cannot, and should not implement every single method of the Selenium RC API. It implements enough to allow your code to compile and mostly run, giving you the opportunity to change your code over to the WebDriver API.
If you absolutely require capturing network traffic to the browser using WebDriver, the API allows you to specify a proxy to use with the browser being automated. There are a number of proxies out there which allow you to capture, examine, and even modify the traffic to the browser. Some examples that people have used to good effect are BrowserMob proxy and Fiddler.