Sunday, 23 September 2018

Serenity configuration and Execution

Serenity configuration

 Add Serenity .jar files in pom.xml (will download into eclipse IDE)
-          Serenity – core
-          Serenity – cucumber
-          Serenity -Junit

Code snippet:
<dependency>
              <groupId>net.serenity-bdd</groupId>
              <artifactId>serenity-core</artifactId>
              <version>1.9.31</version>
</dependency>          
<dependency>
              <groupId>net.serenity-bdd</groupId>
              <artifactId>serenity-cucumber</artifactId>
              <version>1.9.12</version>
</dependency>
<dependency>
              <groupId>net.serenity-bdd</groupId>
              <artifactId>serenity-junit</artifactId>
              <version>1.9.31</version>
</dependency>
2.1   Add junit .jar files into pom.xml
<dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-simple</artifactId>
              <version>1.6.1</version>
</dependency>
<dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
              <scope>test</scope>
       </dependency>
       <dependency>
              <groupId>org.assertj</groupId>
              <artifactId>assertj-core</artifactId>
              <version>1.7.0</version>
              <scope>test</scope>
</dependency>
Add property file – (version of serenity and web driver)
<properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <serenity.version>1.0.47</serenity.version>
              <serenity.maven.version>1.0.47</serenity.maven.version>
              <webdriver.driver>chrome</webdriver.driver>
</properties>

2.1   Add Report generated build files
<build>
              <plugins>
                     <plugin>
                           <artifactId>maven-failsafe-plugin</artifactId>
                           <version>2.18</version>
                           <configuration>
                                  <includes>
                                         <include>**/*TestRunner.java</include>
                                  </includes>
                                  <systemProperties>
                                         <webdriver.driver>chrome</webdriver.driver>
                                         <surefire.rerunFailingTestsCount>5</surefire.rerunFailingTestsCount>
                                         <surefire.rerunFailingTestsCount>5</surefire.rerunFailingTestsCount>
                                  </systemProperties>
                           </configuration>
                     </plugin>
                     <plugin>
                           <groupId>net.serenity-bdd.maven.plugins</groupId>
                           <artifactId>serenity-maven-plugin</artifactId>
                           <version>1.0.6</version>
                           <dependencies>
                                  <dependency>
                                         <groupId>net.serenity-bdd</groupId>
                                         <artifactId>core</artifactId>
                                         <version>1.0.47</version>
                                  </dependency>
                           </dependencies>
                           <executions>
                                  <execution>
                                         <id>serenity-reports</id>
                                         <phase>post-integration-test</phase>
                                         <goals>
                                                <goal>aggregate</goal>
                                         </goals>
                                  </execution>
                           </executions>
                     </plugin>
              </plugins>
       </build>

Creating a project using Serenity – Cucumber BDD – Maven

Create a Maven project in Eclipse

Configure the serenity and cucumber jar files in pom.xml
Refer Serenity configuration section (pom.xml)
 Create the Feature file under the project
Feature folder -> Filename.feature  (will write scenarios)

Copy the Browser .exe files (IE/Chrome/Safari/Firefox) into project workspace

Create packages and classes (Homepage.java – URL and BuyerSteps.java – invoke browser and StepDef.java -  feature file generated methods) under the project 

Process of execution:
-          Run Feature file as 
-          Once feature file runs, will generate the methods and copy the generated methods into the stepdefinition class.
-          Maven build and maven test

-          Run the Test Runner class

Once successful execution of scrip, the results will be pass and browser will close


The pom file

Herewith attached the complete .jar set up

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>Testserenity</groupId>
<artifactId>Testserenity</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Testserenity</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<serenity.version>1.0.47</serenity.version>
<serenity.maven.version>1.0.47</serenity.maven.version>
<webdriver.driver>chrome</webdriver.driver>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/net.serenity-bdd/serenity-core -->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-core</artifactId>
<version>1.9.31</version>
</dependency>



<!-- https://mvnrepository.com/artifact/net.serenity-bdd/serenity-cucumber -->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-cucumber</artifactId>
<version>1.9.12</version>
</dependency>



<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>1.9.31</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>1.7.0</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18</version>
<configuration>
<includes>
<include>**/*TestRunner.java</include>
</includes>
<systemProperties>
<webdriver.driver>chrome</webdriver.driver>
<surefire.rerunFailingTestsCount>5</surefire.rerunFailingTestsCount>
<surefire.rerunFailingTestsCount>5</surefire.rerunFailingTestsCount>
</systemProperties>
</configuration>
</plugin>
<plugin>
<groupId>net.serenity-bdd.maven.plugins</groupId>
<artifactId>serenity-maven-plugin</artifactId>
<version>1.0.6</version>
<dependencies>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>core</artifactId>
<version>1.0.47</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>serenity-reports</id>
<phase>post-integration-test</phase>
<goals>
<goal>aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

Issues Facing During Serenity Configuration

  •   While build running the serenity in Eclipse IDE we should make to add serenity cucumber dependency in pom.xml file since we’ve separate serenity cucumber dependency.
  •   Make sure the Feature folder name same as the name mentioned in the TestRunner class.
  • The name of the stepdefinition assigned to glue will be same as the name of the stepdefinition in Test Runner class i.e., @cucumberOptions (feature = “Feature”,   Glue = {“stepdefinition”})
  • Serenity.properties : Invoking test execution browsers should be mentioned in the serenity.properties file.
  •  Make sure that browser .exe file should be placed in project work space.
  • Whenever we’re updating the any dependencies through pom.xml, make sure that pom file should be cleaned (Run As -> Maven clean => will appear a message successfully build file cleaned) and then pom file should build (Run As -> Maven Build).
  • Clean the Project in the project workspace, if we do multiple updates in pom.xml file or serenity.properties file etc.,

Serenity Framework and Serenity Configuration


SUMMARY


This Document contains the procedure to work with Serenity with Cucumber.
Using this Document, we can easily create a Maven Project & automate the scenarios during the execution by Cucumber using BDD framework.

1. What is Serenity

  •        Serenity BDD is open source Library.
  •        Serenity BDD helps to quickly write well-structured, maintainable automated acceptance criteria using BDD (Given -  When - Then) like cucumber.
  •        Advantage of serenity BDD, no need to invest the time for building and maintain own automation framework.
  •        Serenity with cucumber will provide more detailed test reports (each test step with screenshot).
  •       Can integrate with external sources like JIRA or ALM for requirement organising.
S     Serenity BDD integrates with Maven via the serenity-maven-plugin
       Pre-requisite:
        Eclipse (suggested: latest version - Oxygen) installation with Maven and cucumber, please find the process in   the above Pages.