Does Selenium- Jenkins Integration needs TestNG or JUnit Framework - selenium-webdriver

Should we need TestNG or Junit framework to integrate Selenium with Jenkins. I have project which is build without TestNG or JUnit can i integrate it with Jenkins.

You can use both JUnit and TestNG frameworks as Jenkins supports both.
Steps in details for TestNG integration with Jenkins.
Step 1: Create Free Style project in Jenkins and fill the details and Save the project.
Step 2: click on Configure
Step 3: In the Build section of Configure:
java -cp J:\taf\testng\*;J:\taf\workspace\TestNGExamples\bin;J:\automation\* org.testng.TestNG J:\taf\workspace\TestNGExamples\testng1.xml
Note: you have to change the paths as per your system.
In -cp argument, we must provide testng.jar, project location and ``selenium jarslocations/paths.
org.testng.TestNG- TestNG Main Class.
andlocation to the XML of testng configuration`
Download and install the testng-plugin for jenkins from here and restart Jenkins in order to take effect.
Step 4: In the Post-build Actions section,
Select Publish TestNG Results from Add post-build action dropdown.
provide the path where to look for TestNG results (.xml file containing results).
Click Apply and Save buttons.
Screenshot for reference:

TestNG and JUnit on simple terms can be visualised as "java code execution" mechanisms with support to do validations.
So instead of you having only one main() method that would be the single point of entry for execution of your selenium code, TestNG/JUnit takes up that role and lets you run multiple java classes via themselves.
Jenkins is an orchestrator tool that lets you build, test, deploy as per your wish.
The test phase can be skipped by not using TestNG and JUnit, and you resorting to executing your selenium based tests via a main() method which takes care of doing all validations as well (assertions in the JUnit/TestNG world)

Related

How to use TestNG in Eclipse

I have successfully installed TestNG in eclipse through Help->Install New Softwares but while configuring build path, it is not visible in Add Libraries.
The TestNG option is not even visible to create TestNG class.
I think you are confusing two different things. The TestNG that you can install from Eclipse the way you described is installing the TestNG plugin for eclipse. If you want to actually use TestNG to run your tests, you need the TestNG library.
You can download it and manually add to your classpath or, if you are using Maven, add it as a dependency to your pom file.

TestNG Executable JAR files

Is the TestNG Executable JAR files alone is enough to work with TestNG framework or the TestNG plugin is essential? I have the JAR files, can i add to my library and work with TestNG?
Plugin just simplifies running things. You do not need it so to say. But, if you say want to run a single test or a suite file - a plugin would give you a simple way to right click and trigger it off. But with no plugin you will have to run with the java run command or through maven command if that's what you are running.
So the answer is yes - you can run but the plugin will always help while you are developing your tests.

Packaging Smoke tests as an (additional) executable jar in Gradle build

We have a gradle build creating a SpringBoot web application. The SpringBoot app is tested with a variety of tests including a suite of WebDriver 'journey' tests. We run a subset of these journey tests as 'smoke' tests on different environments.
To make this as simple as possible we want to create an executable FatJar (or similar) consisting of a Main class, the smoke tests and testing dependencies. This artifact should be created in addition to the main application jar and can then be run against an arbitrary environment from the command line.
What's the best way of achieving this? Sub-projects don't seem to fit because we want to package the 'test' output from a single project. The spring-boot gradle plugin seems to be (rightly) geared to producing a single application artifact, is there a way to MacGyver it to create another executable jar with the smoke tests? Is this just crazy talk?

How can one import the whole webDriver project in an executable form so that anybody else can run the suite by just a click.?

I am relatively new to Selenium WebDriver and a self learner. I have created a webDriver project which consists of different packages and have made use of Page Factory concepts extensively. I use TestNg framework to run the suite to generate my report. So my test cases are also following the TestNG framework concepts.
Now my team wants to use my script to be run at every build to test the sanity. The build team just wants to run my whole script by just a click. It can be shell script command or .exe or jar. Build team uses linux m/c and they dont have Ecplise , TestNg installed in their machine. Their intention is whenever build is given they want to run my script by just a click or a command in Command Prompt.( it has to be that simple for them) and a report should be generated in some location in hdfs
My script runs on FF version 32 and Selenium webDriver 2.44.0
Would really appreciate if someone could give me a solution that actually works for my requirement.
I found a similar query from someone but i am not sure if the answer still suits.
How to make Java executable Jar file of WebDriver project
Could somebody please give me a solution. Or the solution mentioned in the above link stil is the best?
Regards
There are few ways to do it:
Use CI tool (Jenkins): You can set up your project in Jenkins and it will allow you to run the project in single click. Jenkins also provides you an option to run the tests periodically so you can configure it in such a way that it will always get executed after certain time period.Jenkins is also capable to trigger the execution if there is any changes in source code of tests. I'd suggest to use this tool. https://jenkins-ci.org/
Use .bat or .sh file: I am not sure if you are using any build tool like ANT or Maven, if you are using any one of them then you can write a .bat or .sh file to run the tests. ANT
If you are not using any build tool then start using, it will help to run the tests in simplest way.For me to run entire suite, I just type below command in terminal from root directory of project
ant run -Dsuite=all
If you are more concerned about system configuration for e.g. the system which will be used by build team does not have a specific version of browser or specific required library. Then I'd suggest to keep all essentials like browser installation files, libraries in your project directory. This is not a good practice but yes it will help others to run the tests smoothly.
I would suggest just exporting a jar file for your project. All the libraries will be packaged together in the jar files(including TestNG) and you can simply double click on the jar file to start your tests.
External resources (if any), will have to be available for the jar file though. So, you can provide the jar file and the external resources together. The external resources might include your test data (if any) or Portable Firefox(if you are using the portable version).
Steps:
Right click on Project -> Export -> Runnable jar file
Give a name and file path for the jar file
Select option - Extract required libraries into generated JAR
And Finish
Troubleshooting:
Check the java version for the machines that you will be running your jar file on. Programs compiled with java 7 will mostly not run if the machine has java 6. Either compile with java 6 or update the jre on the target machines.
If the jar file does not launch, try using Jarfix.

How can I integrate my TestNG tests with Selenium in TeamCity?

Please guide me through the steps on setting up TeamCity so that it can run my TestNG tests.
My Objective: Whenever I run a new build on TeamCity, it should automatically trigger my testNG suite on the new build.
I am using the following tools:
IDE: Eclipse
Automation Tool: Selenium Webdriver
Language: Java
Test Runner Framework: TestNG
Any reference to link or website would be very helpful.
You should integrate ANT in your selenium+TestNG framework so that you can run the tests from a build script. Plus, TeamCity's docs say that
TeamCity directly supports the following testing frameworks:
JUnit and TestNG for the following runners: Ant (when tests are run by
the junit and testng tasks directly within the script)
Some links:
Apache ANT
ANT Tutorial
TestNG with ANT
So once you create your build script in build.xml file which should lie in your framework's root folder, you should configure your build job and add a build step (with an ANT build runner) in TeamCity to run this build.xml after TeamCity finishes building/deploying the app. You can do that by specifying a step execution policy for the ANT build step.

Resources