JMeter plugin not working with jmeter-server - jmeter

I have a test suite that uses the Webdriver Sampler plugin (https://jmeter-plugins.org/wiki/WebDriverSampler/) configured with Chromedriver. If I run my tests in "regular" non-gui mode the plugin works, i.e. starts the chromedriver and performs the test script.
When I try to run the test in distributed mode, the chromedriver doesn't seem to start, and no errors are found in logs.
I've tried to run the tests from my master node targeting the slave node, as well as running them from the slave node itself (targeting the running jmeter-server that is running on the slave).
Running tests without the above plugin works (e.g. running a HTTP-request based test suite from master targeting the slave)
Do I have to configure the plugin for jmeter-server too somehow?

You need to:
Install WebDriver Sampler plugin to all slave machines (jmeter-servers) using JMeter Plugins Manager
Install chromedriver binary to all slave machines at the same place
Make sure that Chrome browser is installed at all slaves and it's in operating system PATH
When you run JMeter test in distributed mode the master machine transfers only .jmx test script to slaves and collects results from them, any other extra files like:
plugins
CSV files used for parameterization
properties files
etc.
should be copied over from the master machine manually or using a script

It turns out that the plugin actually worked, but in order for chromedriver to run properly a display variable has to be set on each slave node.
Install xvfb
run commands:
Xvfb :1 -screen 5 1024x768x8 &
export DISPLAY=:1.5
As described in: Running Chrome WebDriver on a linux server with no display

Related

How to create 8 instances with 500 users each using Non-GUI mode in Jmeter

I have a requirement to run 4000 users. I just wanted to run that using Non-GUI. How can we create 8 instances with 500 users each using Non-GUI mode in Jmeter. Suggest the possible scenario with an example.
Get 9 machines somewhere somehow
Install Java 8+ (it's the per-requisite to run JMeter 5.4)
Install JMeter onto all machines. If you plan to use JMeter Plugins make sure that all the plugins are installed on all machines
If your test depends on external files or libraries - make sure that all the libraries and/or files are copied to the JMeter Machines
If you plan to use secure communication between master and slaves follow Setting Up SSL JMeter Documentation chapter, if not - add the next line to user.properties files on all machines:
server.rmi.ssl.disable=true
Run jmeter-server on 8 machines which will be acting as slaves
Add the next line to user.properties on the master machine
remote_hosts=ip_address_of_slave1,ip_address_of_slave_2, etc.
Make sure that the machines are on the same subnet and there is no firewall blocking connections between them
Run your test as:
jmeter -r -n -t /path/to/your/test.jmx -l /path/to/results.jtl
When the test finishes analyze your results by using Listeners or generating HTML Reporting Dashboard
More information:
Remote Testing
How to Perform Distributed Testing in JMeter

How can I force Selenium tests running on a jenkins slave-node to run in the foreground?

I have a CentOS server running a Jenkins server that has a connection to slave-node running windows server 2016. the Jenkins server has a job that is configured to run a series of Selenium tests on the slave-node.
for the launch method of the slave-node configuration i am using "Launch Agent by connecting it to the master" and I've setup the slave-node create the connection on startup.
the tests can run successfully but when I remote into the windows-slave node via RDP and start the build from the Jenkins server I am unable to see a browser launch and show see the Selenium test interact with the webpage unless I re-lauch the slave-agent within the Remote Desktop connection.
I have tried to running the Jenkins slave-agent as a windows service and also tried starting it with a batch script running at startup but I get the same result.
java -jar agent.jar -jnlpUrl http://{Jenkins Server URL}/computer/{Jenkins Node}/slave-agent.jnlp
is there any way to have the slave-agent run at start-up but also have Desktop interaction when the when I start the Selenium test from a Jenkins build?
Did you try launching the agents using JNLP through windows task scheduler? For trigger you can select multiple options including launch the agent when some one logs into through the RDP session.

How to run JMeter Webdriver samplers on a remote machine

I am trying to run JMeter Webdriver samplers in IE on a remote machine. I have changed remote_hosts to the IP address of the remote machine. JMeter server on the remote machine is also started. When I run the tests from the JMeter GUI on the local machine (Run->Remote Start menu) I can see the command line window in remote machine showing
"Started the test..."
and immediately
"Finished the test..."
So the test runs but nothing actually happens.
I must be missing some configuration.
Can someone please help?
You need to install the same Selenium/WebDriver Support plugin to the remote slave(s). This can be done either by copying the whole JMeter installation to the slave host(s) or using JMeter Plugins Manager on each slave.
You need to download Internet Explorer Driver binary and put it to the same location as on the master host.
In case of any problems check jmeter-server.log file on remote slave - normally it should contain the root cause (or clue on what is wrong)

JMeter freezes when you run the test from remote server

On my remote host I am running jmeter server
./jmeter-server
I have kicked the jmeter from my local machine using this command
./jmeter -Jremote_hosts=Remote Host IP
GUI Pops up
Open my test.jmx and Run->RemoteHost->RemoteHostIP
At this time, jmeter freezes, I was unable to do much after that
my test had 1 thread, 60secs ramp, run 1 time
Any idea why is it frozen and I am not be see any test results. I do not have any listeners except "View Results Tree"
I faced the same issue. In my case, it was due to the firewall (ufw on ubuntu). After stopping the firewall I was able to run the tests normally.

Jenkins : Selenium GUI tests are not visible on Windows

When I run my selenium test (mvn test) from jenkins (windows) I see only the console output. I don't see the real browsers getting opened . How can I configure jenkins so that I can see the browsers running the test?
I had the same problem, i got the solution after many attempts.
This solution works ONLY on windows XP
If you are using jenkins as a windows service you need to do the following :
1) In windows service select the service of jenkins
2) Open properties window of the service -> Logon-> enable the checkbox "Allow service to interact with desktop"
After then you should reboot the service jenkins
Hope this help you :)
UPDATE:
Actually, I'm working on a an automation tool using Selenium on Windows 10, I've installed Jenkins ver. 2.207 as windows application (EXE file), it's running as windows service and ALL drivers (Chrome, FireFox, IE) are visible during test executions WITHOUT performing a mere configuration on the System or Jenkins
I got the solution. I ran jenkins from command prompt as "java -jar jenkins.war" instead of the windows installer version. Now I can see my browser based tests being executed.
If you are already doing what #Sachin suggests in a comment (i.e. looking at the machine where Jenkins actually runs) and still do not see the browsers, then your problem may be the following:
If you run Jenkins as a service in the background it won't open apps in the foreground. You may either try to run it not as a service in the foreground, or run it as a Local System account and check Allow the service to interact with desktop option. In the latter case you may get into permission problems, though.
Update: To make sure this answer is understood properly by others: Jenkins Windows 'native' installation is not really native. It's a wrapper around Java that runs it as a service.
To interact with desktop GUI, you should launch slave agent via JNLP:
https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds#Distributedbuilds-LaunchslaveagentviaJavaWebStart
After adding the node in Jenkins (configured as Java Web Start launch), just make a startup batch script on the node machine:
java -jar slave.jar -jnlpUrl http://{Your Jenkins Server}:8080/computer/{Your Jenkins Node}/slave-agent.jnlp
(slave.jar can be downloaded from http://{Your Jenkins Server}:8080/jnlpJars/slave.jar)
See more answers here:
How to run GUI tests on a jenkins windows slave without remote desktop connection?
In the case of Windows 7 you should not install jenkins as windows application (because in this recent version, Microsoft decided to give services their own hidden desktop even you enable the functionality "interact with desktop" in jenkins service), you may have to deploy it from a war file as follows:
1) Download jenkins.war from Jenkins official site
2) Deploy it by the command prompt : java -jar {directoryOfJenkinsFile}/jenkins.war
3) Now you can access jenkins administration on http:// localhost:8080
Hope that helps you !
this is an issue for Jenkins. on Windows it is possible to access logon user's session (screen) under system account. to make the UI testing visible, Jenkins needs to bypass UAC (user access
control) at background. this solution works for me with my own service running as system account.
I also faced the same issue earlier in my local machine (Windows 10).
My test was running perfectly from the NetBeans but when I moved to Jenkins it was only running in console mode. I was unable to view the UI.
So for that, you just need to make your local machine as a Jenkins slave by creating a new slave node in your Jenkins and select that node to execute the Jenkins job.
If jenkins installed by windows installer it is showing only Console out put only. To see browsers download jenkins.war file and run java -jar jenkins.war from command line.
Go through this site:
http://learnseleniumtesting.com/jenkins-and-continuous-test-execution/
If you have the following situation,
You are able to login to the remote machine
You don't see the Jenkins agent window
This slave machine is accessed by many users then try the following,
then try the following suggestion.
Login to slave machine
Go to Task manager
Users
Logout all the users
Then login again.
This worked for me.

Resources