Automation code pushed to Git repo

This commit is contained in:
Rakesh Sambaragi 2021-07-05 11:46:47 +05:30
parent 285e282449
commit 98d75c1a87
74 changed files with 4745 additions and 0 deletions

36
maven/.classpath Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="src/test/resources/" kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src/test/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="E:/Aissel Technologies/Automation/Selenium_jars/client-combined-3.141.59.jar"/>
<classpathentry kind="lib" path="E:/Aissel Technologies/Automation/Selenium_jars/client-combined-3.141.59-sources.jar"/>
<classpathentry kind="lib" path="E:/Aissel Technologies/Automation/Selenium_jars/libs/byte-buddy-1.8.15.jar"/>
<classpathentry kind="lib" path="E:/Aissel Technologies/Automation/Selenium_jars/libs/commons-exec-1.3.jar"/>
<classpathentry kind="lib" path="E:/Aissel Technologies/Automation/Selenium_jars/libs/guava-25.0-jre.jar"/>
<classpathentry kind="lib" path="E:/Aissel Technologies/Automation/Selenium_jars/libs/okhttp-3.11.0.jar"/>
<classpathentry kind="lib" path="E:/Aissel Technologies/Automation/Selenium_jars/libs/okio-1.14.0.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="con" path="org.testng.TESTNG_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

23
maven/.project Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>maven</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,4 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8

View File

@ -0,0 +1,5 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.5

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,2 @@
browser.baseURL=https://testcolpal.aisselkolm.com/hills_staging/login
browser.name=chrome

14
maven/XMLFiles/testng.xml Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class name="maven.StepDefinitions.testRunner"/>
</classes>
</test> <!-- Test -->
<listeners>
<listener class-name="Listeners.ITestListenerImpl"></listener>
</listeners>
</suite> <!-- Suite -->

173
maven/pom.xml Normal file
View File

@ -0,0 +1,173 @@
<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>Hills_BDD</groupId>
<artifactId>Maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Maven</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.ralfstuckert.pdfbox-layout/pdfbox2-layout -->
<dependency>
<groupId>com.github.ralfstuckert.pdfbox-layout</groupId>
<artifactId>pdfbox2-layout</artifactId>
<version>0.8.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.apple</groupId>
<artifactId>AppleJavaExtensions</artifactId>
<version>1.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java8 -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>4.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aventstack/extentreports-cucumber4-adapter -->
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports-cucumber4-adapter</artifactId>
<version>1.0.12</version>
<exclusions>
<exclusion>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
</exclusion>
<exclusion>
<groupId>o.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<groupId>net.masterthought</groupId>
<artifactId>maven-cucumber-reporting</artifactId>
<version>5.0.0</version>
<executions>
<execution>
<id>execution</id>
<phase>verify</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<projectName>maven</projectName>
<!-- optional, per documentation set this to "true" to bypass generation
of Cucumber Reports entirely, defaults to false if not specified -->
<skip>false</skip>
<!-- output directory for the generated report -->
<outputDirectory>target/cucumber-reports/advanced-reports</outputDirectory>
<!-- optional, defaults to outputDirectory if not specified -->
<cucumberOutput>target/cucmber-reports/cucumber.json</cucumberOutput>
<inputDirectory>${project.build.directory}/jsonReports</inputDirectory>
<jsonFiles>
<!-- supports wildcard or name pattern -->
<param>**/*.json</param>
</jsonFiles>
<!-- optional, defaults to outputDirectory if not specified -->
<classificationDirectory>${project.build.directory}/classifications</classificationDirectory>
<classificationFiles>
<!-- supports wildcard or name pattern -->
<param>sample.properties</param>
<param>other.properties</param>
</classificationFiles>
<parallelTesting>false</parallelTesting>
<!-- optional, set true to group features by its Ids -->
<mergeFeaturesById>false</mergeFeaturesById>
<!-- optional, set true to get a final report with latest results
of the same test from different test runs -->
<mergeFeaturesWithRetest>false</mergeFeaturesWithRetest>
<!-- optional, set true to fail build on test failures -->
<checkBuildResult>false</checkBuildResult>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,45 @@
package Listeners;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class ITestListenerImpl implements ITestListener
{
public void onFinish(ITestContext arg0) {
// TODO Auto-generated method stub
}
public void onStart(ITestContext arg0) {
// TODO Auto-generated method stub
}
public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {
// TODO Auto-generated method stub
}
public void onTestFailure(ITestResult arg0) {
// TODO Auto-generated method stub
}
public void onTestSkipped(ITestResult arg0) {
// TODO Auto-generated method stub
}
public void onTestStart(ITestResult arg0) {
// TODO Auto-generated method stub
}
public void onTestSuccess(ITestResult arg0) {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,381 @@
package PageObjects;
import java.io.File;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import Utilities.BrowserUtility;
public class ContactsPage extends BrowserUtility{
@FindBy(how=How.XPATH, using="//div[@class='navLinkMyKolsIn sprite_iconSet']")
WebElement tabContacts;
@FindBy(how=How.XPATH, using="((//*[contains(@id,'categoryCountry')])//tbody/tr[4]/td[1])")
WebElement filterCountry;
@FindBy(how=How.XPATH, using="//*[@class='defaultProfileIcon ']")
WebElement HCPProfile;
@FindBy(how=How.XPATH, using="//a[@target='_new']")
WebElement lnkViewProfile;
@FindBy(how=How.XPATH, using="//p[contains(text(),'Australia')]")
WebElement txtHcpCountry;
@FindBy(how=How.XPATH, using="//a[@class='addHcpIcon']")
WebElement addHcp;
@FindBy(how=How.XPATH, using="//select[@name='salutation']")
WebElement drpSalutation;
@FindBy(how=How.XPATH, using="//select[@name='country_id']")
WebElement drpCountry;
@FindBy(how=How.XPATH, using="//select[@name='lang_id']")
WebElement drpLanguage;
@FindBy(how=How.XPATH, using="//input[@name='first_name']")
WebElement txtFirstName;
@FindBy(how=How.XPATH, using="//input[@name='last_name']")
WebElement txtLastName;
@FindBy(how=How.XPATH, using="//input[@name='email']")
WebElement txtEmail;
@FindBy(how=How.ID, using="save_data")
WebElement btnSave;
@FindBy(how=How.XPATH, using="//tbody/tr[1]/td[2]/label[1]")
WebElement msgSalutationMandatory;
@FindBy(how=How.XPATH, using="//tbody/tr[1]/td[4]/label[1]")
WebElement msgFirstNameMandatory;
@FindBy(how=How.XPATH, using="//tbody/tr[1]/td[6]/label[1]")
WebElement msgLastNameMandatory;
@FindBy(how=How.XPATH, using="//tbody/tr[2]/td[2]/label[1]")
WebElement msgEmailMandatory;
@FindBy(how=How.XPATH, using="//tbody/tr[2]/td[4]/label[1]")
WebElement msgCountryMandatory;
@FindBy(how=How.XPATH, using="//tbody/tr[3]/td[1]/a[3]")
WebElement btnCancel;
@FindBy(how=How.XPATH, using="//tbody/tr[@id='kol3609']/td[1]/input[2]")
WebElement cbxKOL;
@FindBy(how=How.XPATH, using="//div[@class='pdfExportIcon sprite_iconSet']")
WebElement lnkPDFExport;
@FindBy(how=How.XPATH, using="//input[@name='full_profile']")
WebElement cbxFullProfile;
@FindBy(how=How.XPATH, using="//input[@id='next']")
WebElement btnExport;
@FindBy(how=How.XPATH, using="//div[@class='excelExportIcon sprite_iconSet']")
WebElement lnkExcelExport;
@FindBy(how=How.XPATH, using="//span[contains(text(),'My Contacts')]")
WebElement drpAssigned;
@FindBy(how=How.XPATH, using="//div[@class='assignProfileIcon sprite_iconSet']")
WebElement lnkAssign;
@FindBy(how=How.XPATH, using="//input[@value='Select Users']")
WebElement drpUser;
@FindBy(how=How.XPATH, using="//input[@value='Assign']")
WebElement btnAssign;
@FindBy(how=How.XPATH, using="//li[@id='viewType_chzn_o_1']")
WebElement selectAllContacts;
@FindBy(how=How.XPATH, using="//div[@id='emailIcon']")
WebElement lnkEmail;
@FindBy(how=How.XPATH, using="//textarea[@id='to']")
WebElement txtAreaTo;
@FindBy(how=How.XPATH, using="//input[@id='sendEmail']")
WebElement btnSend;
@FindBy(how=How.XPATH, using="//div[@class='createListIcon sprite_iconSet']")
WebElement lnkList;
@FindBy(how=How.XPATH, using="//select[@name='category_id']")
WebElement drpCategory;
//option[@id='catCss']
@FindBy(how=How.XPATH, using="//tbody/tr[2]/td[1]/p[1]/input[1]")
WebElement txtAreaAddNewCategory;
@FindBy(how=How.XPATH, using="//select[@id='list_id']")
WebElement drpList;
//option[@id='css1']
@FindBy(how=How.XPATH, using="//tbody/tr[4]/td[1]/p[1]/input[1]")
WebElement txtAreaListName;
@FindBy(how=How.XPATH, using="//input[@id='saveKolList']")
WebElement btnSaveKOLList;
@FindBy(how=How.XPATH, using="//input[@id='searchKeyword']")
WebElement txtAreaSearchKOL;
@FindBy(how=How.XPATH, using="//label[@class='kolName']")
WebElement lnkKOLName;
@FindBy(how=How.XPATH, using="//input[@id='unassignMeButton']")
WebElement btnUnAssign;
WebDriver driver;
String text;
public ContactsPage(WebDriver driver) {
this.driver=driver;
PageFactory.initElements(driver, this);
}
public void clickContactTab() {
//Thread.sleep(3000);
tabContacts.click();
}
public void filterCountryName() throws InterruptedException {
Thread.sleep(3000);
filterCountry.click();
text=filterCountry.getText();
System.out.println("Country Name"+" "+text+" "+"filtering in Refine By section");
}
public void clickOnHCPProfile() {
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
try{
HCPProfile.click();
}
catch(StaleElementReferenceException e)
{
HCPProfile.click();
}
}
public void clickViewProfile() throws InterruptedException {
Thread.sleep(2000);
lnkViewProfile.click();
}
public void verifyCountryName() {
String parent=driver.getWindowHandle();
Set<String> s= driver.getWindowHandles();
Iterator<String>I1=s.iterator();
while(I1.hasNext()) {
String child=I1.next();
if(!parent.equals(child)) {
driver.switchTo().window(child);
String string = txtHcpCountry.getText();
String[] parts = string.split(",");
String part = parts[1];
String countryName=part.trim();
System.out.println("Country Name displayed in bussiness card is"+" " +countryName);
if(countryName.equalsIgnoreCase(text)) {
System.out.println("HCP filter is successful");
}else {
System.out.println("HCP filter is not successful");
}
driver.close();
}
}
driver.switchTo().window(parent);
}
public void clickAddHcp() {
addHcp.click();
}
public void clickSaveButton() throws InterruptedException {
btnSave.click();
Thread.sleep(3000);
}
public void verifyErrorMessageShownForMandatoryFields() {
String msgSalutation=msgSalutationMandatory.getText();
String msgFirstName=msgFirstNameMandatory.getText();
String msgLastName=msgLastNameMandatory.getText();
String msgEmail=msgEmailMandatory.getText();
String msgCountry=msgCountryMandatory.getText();
if(msgSalutation.equalsIgnoreCase("Required")&&msgFirstName.equalsIgnoreCase("Required")&&msgLastName.equalsIgnoreCase("Required")&&msgEmail.equalsIgnoreCase("Required")&&msgCountry.equalsIgnoreCase("Required"))
{
System.out.println("Passed: Mandatory fields are shown as Required");
}else {
System.out.println("Failed: Mandatory fields are not shown as Required");
}
}
public void clickCancelButton() {
btnCancel.click();
}
public void verifyUserNavigationToContacts() {
String ContactsPageTitle=driver.getCurrentUrl();
if(ContactsPageTitle.equalsIgnoreCase("https://testcolpal.aisselkolm.com/hills_staging/kols/list_kols_client_view"))
{
System.out.println("Passed: User is successfully navigated to contacts page on click of cancel button in add KOL page");
}else {
System.out.println("Passed: User is not successfully navigated to contacts page on click of cancel button in add KOL page");
}
}
public void selectAKOL() {
try{
cbxKOL.click();
}
catch(StaleElementReferenceException e)
{
cbxKOL.click();
}
}
public void clickOnPDFLink() {
lnkPDFExport.click();
}
public void verifyPDFFileDownload() throws InterruptedException {
Thread.sleep(3000);
File f1=new File("C:\\Users\\hp\\Downloads\\Adam Critsin.pdf");
if(f1.exists()) {
System.out.println("KOL details downloaded as PDF file");
f1.delete();
}
}
public void clickOnExcelLink() {
lnkExcelExport.click();
}
public void selectFullProfile() throws InterruptedException {
Thread.sleep(2000);
cbxFullProfile.click();
}
public void clickExportButton() {
btnExport.click();
}
public void verifyExcelFileDownload() throws InterruptedException {
Thread.sleep(3000);
File f1=new File("C:\\Users\\hp\\Downloads\\KTL_profiles.xlsx");
if(f1.exists()) {
System.out.println("KOL Full profile exported as Excel file");
f1.delete();
}
}
public void selectAllContacts() throws InterruptedException {
drpAssigned.click();
Thread.sleep(2000);
Actions act = new Actions(driver);
act.moveToElement(driver.findElement(By.xpath("//li[@id='viewType_chzn_o_1']"))).click().build().perform();
Thread.sleep(2000);
//drpAssigned.findElement(By.xpath("//li[@id='viewType_chzn_o_1']")).click();
/*try{
drpAssigned.findElement(By.xpath("//li[@id='viewType_chzn_o_1']")).click();
System.out.println("Clicked on All contacts");
}
catch(StaleElementReferenceException e)
{
drpAssigned.findElement(By.xpath("//li[@id='viewType_chzn_o_1']")).click();
System.out.println("Clicked on All contantcs failed");
}*/
}
public void clickAssignLink() {
lnkAssign.click();
}
public void selectUser() throws InterruptedException {
//Thread.sleep(2000);
WebDriverWait wait=new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@value='Select Users']"))).click();
drpUser.findElement(By.xpath("//li[@id='users_chzn_o_1']")).click();
}
public void clickAssignButton() throws InterruptedException {
btnAssign.click();
Thread.sleep(2000);
}
public void clickEmailLink() throws InterruptedException {
lnkEmail.click();
Thread.sleep(1000);
}
public void enterToEmail(String email) throws InterruptedException {
txtAreaTo.sendKeys(email);
Thread.sleep(1000);
}
public void clickSendButton() {
btnSend.click();
}
public void clickListLink() {
lnkList.click();
}
public void selectAddNewCategory() throws InterruptedException {
Thread.sleep(2000);
Select category=new Select(drpCategory);
category.selectByVisibleText("Add New Category");
txtAreaAddNewCategory.sendKeys("Rocky");
}
public void selectAddNewList() {
Select listName=new Select(drpList);
listName.selectByVisibleText("Add New List Name");
txtAreaListName.sendKeys("Sam");
}
public void clickListSaveButton() throws InterruptedException {
btnSaveKOLList.click();
Thread.sleep(2000);
}
public void clickOnKOLName(String KOLName) throws InterruptedException {
txtAreaSearchKOL.sendKeys(KOLName);
Thread.sleep(2000);
lnkKOLName.click();
}
public void clickUnAssignButton() throws InterruptedException {
Thread.sleep(2000);
btnUnAssign.click();
}
}

View File

@ -0,0 +1,36 @@
package PageObjects;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
public class DiscoverPage {
@FindBy(how =How.XPATH, using ="//div[@class='navLinkIdentify sprite_iconSet']")
WebElement tabDiscover;
@FindBy(how =How.XPATH, using ="((//*[contains(@id,'categotySpecialty')])//tbody/tr)[3]")
WebElement lnkSpeciality;
@FindBy(how =How.XPATH, using ="((//*[contains(@id,'kolsByRankingResultSet_frozen')])//tbody/tr[2])/td[2]")
WebElement profileSnapshot;
//p[@class='specialtyName']
WebDriver driver;
public DiscoverPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
public void clickDiscoverTab() {
tabDiscover.click();
}
public void clickDermatologyLink() {
lnkSpeciality.click();
}
public void clickProfileSnapshotIcon() {
profileSnapshot.click();
}
}

View File

@ -0,0 +1,32 @@
package PageObjects;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
public class HomePage {
@FindBy(how =How.XPATH, using ="//a[@class='current']")
WebElement tabHome;
@FindBy(how =How.XPATH, using ="//div[@class='navLinkIdentify sprite_iconSet']")
WebElement tabDiscover;
WebDriver driver;
public HomePage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
public void homeTab() {
if(tabHome.isDisplayed()) {
System.out.println("User successfully logged into Konectar Application");
}else {
System.out.println("Login to Konectar application is not successful");
}
}
}

View File

@ -0,0 +1,398 @@
package PageObjects;
import java.io.File;
import java.io.FileFilter;
import java.nio.file.DirectoryStream;
import java.nio.file.Path;
import java.util.Arrays;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class KOLProfilePage {
@FindBy(how=How.XPATH, using="//textarea[@id='user-note']")
WebElement txtAreaUserNote;
@FindBy(how=How.XPATH, using="//button[@id='saveBtn']")
WebElement btnSave;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Training')]")
WebElement lnkAddTraining;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Honors and Awards')]")
WebElement lnkAddHonorsAndAwards;
@FindBy(how=How.XPATH, using="//body/div[35]/div[1]/a[1]/span[1]")
WebElement iconCancel;
@FindBy(how=How.XPATH, using="//a[@id='detailsForHint']")
WebElement tabDetails;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Location')]")
WebElement lnkAddLocation;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Phone')]")
WebElement lnkAddPhone;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Staff')]")
WebElement lnkAddStaff;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Email')]")
WebElement lnkAddEmail;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Assign')]")
WebElement lnkAddAssign;
@FindBy(how=How.XPATH, using="(//span[@class='ui-icon ui-icon-closethick'])[19]")
WebElement iconCancelLocation;
@FindBy(how=How.XPATH, using="(//span[@class='ui-icon ui-icon-closethick'])[20]")
WebElement iconCancelPhoneNumber;
@FindBy(how=How.XPATH, using="(//span[@class='ui-icon ui-icon-closethick'])[21]")
WebElement iconCancelStaff;
@FindBy(how=How.XPATH, using="(//span[@class='ui-icon ui-icon-closethick'])[22]")
WebElement iconCancelEmail;
@FindBy(how=How.XPATH, using="(//span[@class='ui-icon ui-icon-closethick'])[24]")
WebElement iconCancelAssign;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Track')]")
WebElement tabTrack;
@FindBy(how=How.XPATH, using="//a[@data-original-title='Export Interaction Detail into Excel format']")
WebElement exportIntractions;
@FindBy(how=How.XPATH, using="//a[@id='report']")
WebElement tabReport;
@FindBy(how=How.XPATH, using="//a[@id='chart']")
WebElement tabChart;
@FindBy(how=How.XPATH, using="//a[@id='calender']")
WebElement tabCalendar;
@FindBy(how=How.XPATH, using="//a[@id='payementType']")
WebElement tabPaymentType;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Payment')]")
WebElement lnkAddPayment;
@FindBy(how=How.XPATH, using="//input[@value='Cancel']")
WebElement btnCancel;
@FindBy(how=How.XPATH, using="//a[@id='conratctType']")
WebElement tabContract;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Contract')]")
WebElement lnkAddContract;
@FindBy(how=How.XPATH, using="//body/div[23]/div[1]/a[1]/span[1]")
WebElement iconCancelContract;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Affiliations')]")
WebElement tabAffiliation;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add Affiliation')]")
WebElement lnkAddAffiliation;
@FindBy(how=How.XPATH, using="//body/div[20]/div[1]/a[1]/span[1]")
WebElement iconCancelAffiliation;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Reports Org')]")
WebElement tabReportOrg;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Reports Eng')]")
WebElement tabReportEng;
@FindBy(how=How.XPATH, using="//tbody/tr[1]/td[4]/a[1]")
WebElement tabEvents;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add New Event')]")
WebElement lnkAddNewEvent;
@FindBy(how=How.XPATH, using="//body/div[25]/div[1]/a[1]/span[1]")
WebElement iconCancelEvent;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Events Charts')]")
WebElement tabEventsCharts;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Publications')]")
WebElement tabPublications;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Add New Publication')]")
WebElement lnkAddNewPublication;
@FindBy(how=How.XPATH, using="//body/div[25]/div[1]/a[1]/span[1]")
WebElement iconCancelPublication;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Pubs Charts')]")
WebElement tabPubsCharts;
@FindBy(how=How.XPATH, using="//a[@data-original-title='Export All Affilations Details into Excel format']")
WebElement exportAffiliation;
@FindBy(how=How.XPATH, using="//a[@data-original-title='Export Events Details into Excel format']")
WebElement exportEvents;
@FindBy(how=How.XPATH, using="//a[@data-original-title='Export Publications Details into Excel format']")
WebElement exportPublications;
WebDriver driver;
public KOLProfilePage(WebDriver driver) {
this.driver=driver;
PageFactory.initElements(driver, this);
}
public void addUserNotes(String usernote) {
txtAreaUserNote.sendKeys(usernote);
WebDriverWait wait=new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@id='saveBtn']"))).click();
}
public void openAndCloseAddTraining() throws InterruptedException {
lnkAddTraining.click();
Thread.sleep(4000);
//WebElement elementToClick = driver.findElement(By.xpath("/html[1]/body[1]/div[34]/div[1]/a[1]/span[1]"));
//((JavascriptExecutor)driver).executeScript("window.scrollTo(0,"+elementToClick.getLocation().y+")");
//((JavascriptExecutor)driver).executeScript("window.scrollTo(0,"+elementToClick.getLocation().x+")");
//elementToClick.click();
/*WebDriverWait wait=new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//body/div[34]/div[1]/a[1]/span[1]"))).click();
*/
//Actions act = new Actions(driver);
//act.moveToElement(iconCancel).perform();
iconCancel.click();
//driver.navigate().refresh();
//driver.switchTo().alert().dismiss();
}
public void openAndCloseAddHonorsAndAwards() throws InterruptedException{
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(0,1500)");
Thread.sleep(4000);
lnkAddHonorsAndAwards.click();
Thread.sleep(5000);
iconCancel.click();
Thread.sleep(2000);
/*WebDriverWait wait=new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//body/div[34]/div[1]/a[1]/span[1]"))).click();
Actions act = new Actions(driver);
act.moveToElement(iconCancel).click().build().perform();*/
//WebElement elementToClick = driver.findElement(By.xpath("//body/div[34]/div[1]/a[1]/span[1]"));
//((JavascriptExecutor)driver).executeScript("window.scrollTo(0,"+elementToClick.getLocation().y+")");
//elementToClick.click();
//driver.navigate().refresh();
//Thread.sleep(2000);
//driver.switchTo().alert().dismiss();
}
public void clickDetailsTab() {
tabDetails.click();
}
public void openAndCloseAddLocation() throws InterruptedException {
Thread.sleep(2000);
lnkAddLocation.click();
Thread.sleep(2000);
iconCancelLocation.click();
}
public void openAndCloseAddPhone() throws InterruptedException {
lnkAddPhone.click();
Thread.sleep(2000);
iconCancelPhoneNumber.click();
}
public void openAndCloseAddStaff() throws InterruptedException {
lnkAddStaff.click();
Thread.sleep(2000);
iconCancelStaff.click();
}
public void openAndCloseAddEmail() throws InterruptedException {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(0,1000)");
lnkAddEmail.click();
Thread.sleep(2000);
iconCancelEmail.click();
}
public void openAndCloseAddAssign() throws InterruptedException {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(0,1000)");
lnkAddAssign.click();
Thread.sleep(2000);
iconCancelAssign.click();
}
public void clickTrackTab() {
tabTrack.click();
}
public void exportInteractions() throws InterruptedException {
exportIntractions.click();
Thread.sleep(1500);
File f1=new File("C:\\Users\\hp\\Downloads\\");
for(File f:f1.listFiles()) {
if (f.getName().startsWith("Interactions_")) {
f.delete();
System.out.println("Interaction details are exported successfully");
}
}
}
public void clickReportTab() throws InterruptedException {
tabReport.click();
Thread.sleep(2000);
}
public void clickChartTab() {
tabChart.click();
}
public void clickCalendarTab() {
tabCalendar.click();
}
public void clickPaymentTab() throws InterruptedException {
tabPaymentType.click();
Thread.sleep(2000);
}
public void addAndCloseAddPayment() throws InterruptedException {
lnkAddPayment.click();
Thread.sleep(2000);
btnCancel.click();
}
public void clickContractTab() throws InterruptedException {
tabContract.click();
Thread.sleep(2000);
}
public void addAndCloseAddContract() throws InterruptedException {
lnkAddContract.click();
Thread.sleep(2000);
iconCancelContract.click();
}
public void clickAffiliationTab() {
tabAffiliation.click();
}
public void openAndCloseAddAffiliation() throws InterruptedException {
Thread.sleep(2000);
WebDriverWait wait=new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(text(),'Add Affiliation')]"))).click();
//lnkAddAffiliation.click();
Thread.sleep(1500);
iconCancelAffiliation.click();
}
public void clickReportsOrgTab() throws InterruptedException {
tabReportOrg.click();
Thread.sleep(1000);
}
public void clickReportEngTab() throws InterruptedException {
tabReportEng.click();
Thread.sleep(1000);
}
public void clickEventTab() {
tabEvents.click();
}
public void openAndCloseAddNewEvent() throws InterruptedException {
Thread.sleep(1000);
lnkAddNewEvent.click();
Thread.sleep(4000);
iconCancelEvent.click();
}
public void clickTabEventsCharts() throws InterruptedException {
tabEventsCharts.click();
Thread.sleep(1500);
}
public void clickPublicationsTab() {
tabPublications.click();
}
public void openAndCloseAddNewPublication() throws InterruptedException {
Thread.sleep(1500);
lnkAddNewPublication.click();
Thread.sleep(1500);
iconCancelPublication.click();
}
public void clickPubsCharts() throws InterruptedException {
tabPubsCharts.click();
Thread.sleep(1500);
}
public void exportAffiliations() throws InterruptedException {
exportAffiliation.click();
Thread.sleep(1000);
File f1=new File("C:\\Users\\hp\\Downloads\\");
for(File f:f1.listFiles()) {
if (f.getName().startsWith("Ktl_affiliations_")) {
f.delete();
System.out.println("Affiliation details are exported successfully");
}
}
}
public void exportEvents() throws InterruptedException {
Thread.sleep(1000);
exportEvents.click();
Thread.sleep(1000);
File f1=new File("C:\\Users\\hp\\Downloads\\");
for(File f:f1.listFiles()) {
if (f.getName().startsWith("Ktl_events_")) {
f.delete();
System.out.println("Event details are exported successfully");
}
}
}
public void exportPublications() throws InterruptedException {
Thread.sleep(1000);
exportPublications.click();
Thread.sleep(1000);
File f1=new File("C:\\Users\\hp\\Downloads\\");
for(File f:f1.listFiles()) {
if (f.getName().startsWith("Ktl_publications_")) {
f.delete();
System.out.println("Publication details are exported successfully");
}
}
}
}

View File

@ -0,0 +1,54 @@
package PageObjects;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import Utilities.BrowserUtility;
public class LoginPage extends BrowserUtility{
@FindBy(how=How.ID, using ="userName")
WebElement txtUsername;
@FindBy(how=How.ID, using ="passwordText")
WebElement txtPassword;
@FindBy(how =How.XPATH, using ="//input[@name='submit']")
WebElement btnSignin;
@FindBy(how =How.XPATH, using ="//span[contains(text(),'Invalid username or password.')]")
WebElement msgError;
//WebDriver driver;
public LoginPage(WebDriver driver) {
BrowserUtility.driver = driver;
PageFactory.initElements(driver, this);
}
public void enterUserName(String username) {
txtUsername.sendKeys(username);
}
public void enterPassword(String password) {
txtPassword.sendKeys(password);
}
public void clickSignButton() {
btnSignin.click();
}
public void verifyInvalidLoginErrorMessage() {
String errorMsg = msgError.getText();
if(errorMsg.equalsIgnoreCase("Invalid username or password.")) {
System.out.println("Passed:Login to Konectar application is not successsful");
}else {
System.out.println("Failed:Incorrect error message is displayed");
}
}
}

View File

@ -0,0 +1,71 @@
package PageObjects;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import Utilities.BrowserUtility;
public class MyListsPage extends BrowserUtility {
@FindBy(how=How.XPATH, using="//div[@class='navLinkMyLists sprite_iconSet']")
WebElement tabMyLists;
@FindBy(how=How.XPATH, using="//a[contains(text(),'Manage List')]")
WebElement tabManageList;
@FindBy(how=How.XPATH, using="//tbody/tr[@id='8']/td[4]/div[2]/a[1]")
WebElement deleteCategory;
@FindBy(how=How.XPATH, using="//input[@id='popup_ok']")
WebElement btnOK;
@FindBy(how=How.XPATH, using="//td[contains(text(),'Rocky')]")
WebElement selectCategory;
@FindBy(how=How.XPATH, using="//a[@onclick='deleteListName(567);']")
WebElement deleteListName;
WebDriver driver;
public MyListsPage(WebDriver driver) {
this.driver=driver;
PageFactory.initElements(driver, this);
}
public void clickMyListTab() {
tabMyLists.click();
}
public void clickManageList() {
tabManageList.click();
}
public void deleteCategory() {
deleteCategory.click();
btnOK.click();
}
public void selectCategory() throws InterruptedException {
selectCategory.click();
Thread.sleep(2000);
}
public void deleteList() {
WebDriverWait wait=new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("((//*[contains(@id,'listNamesByCategoryResultSet')])//tbody/tr[2]/td[4]/div[2])"))).click();
btnOK.click();
//deleteListName.click();
}
}

View File

@ -0,0 +1,155 @@
package PageObjects;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import Utilities.BrowserUtility;
public class OrganizationPage extends BrowserUtility{
@FindBy(how=How.XPATH, using="//div[@class='navLinkOrg sprite_iconSet']")
WebElement tabOrganization;
@FindBy(how=How.XPATH, using="((//*[contains(@id,'categoryCountry')])//tbody/tr[2]/td[1])")
WebElement lnkfilterCountry;
@FindBy(how=How.XPATH, using="//tbody/tr[@id='org63892']/td[2]/div[1]/a[1]/img[1]")
WebElement lnkOrganizationProfileSnapShot;
@FindBy(how=How.XPATH, using="//input[@id='orgName']")
WebElement txtAreaOrganizationName;
@FindBy(how=How.XPATH, using="//input[@id='list']")
WebElement cbxOrganization;
@FindBy(how=How.XPATH, using="//tbody/tr/td/p[3]")
WebElement txtCountry;
@FindBy(how=How.XPATH, using="//div[@id='viewType_chzn']")
WebElement drpOrganization;
@FindBy(how=How.XPATH, using="(//div[@class='autocompleteHeading'])[1]")
WebElement selectOrganization;
@FindBy(how=How.XPATH, using="//div[@id='organizationExport']")
WebElement exportOrgExcel;
@FindBy(how=How.XPATH, using="//a[@class='addOrgIcon']")
WebElement lnkNewAddOrg;
@FindBy(how=How.XPATH, using="//input[@type='submit']")
WebElement btnSave;
@FindBy(how=How.XPATH, using="//input[@type='button']")
WebElement btnCancel;
String filteredCountry;
WebDriver driver;
public OrganizationPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
public void clickOrganizationTab() {
tabOrganization.click();
}
public void clickCountryFilter() throws InterruptedException {
Thread.sleep(2000);
lnkfilterCountry.click();
filteredCountry=lnkfilterCountry.getText();
System.out.println("Country Name"+" "+filteredCountry+" "+"filtering in Refine By section");
Thread.sleep(2000);
}
public void verifyCountryFilter() throws InterruptedException {
lnkOrganizationProfileSnapShot.click();
Thread.sleep(2000);
String country=txtCountry.getText();
System.out.println("Country Name displayed in Organization profile Snapshot is"+" " +country);
if(country.equalsIgnoreCase(filteredCountry)) {
System.out.println("Organizations are displayed based on Country filter");
}else{
System.out.println("Organizations are not displayed based on Country filter");
}
}
public void selectAnOrganization() {
cbxOrganization.click();
}
public void selectAllOrganization() throws InterruptedException {
Thread.sleep(2000);
drpOrganization.click();
Actions act = new Actions(driver);
act.moveToElement(driver.findElement(By.xpath("//li[@id='viewType_chzn_o_1']"))).click().build().perform();
Thread.sleep(2000);
}
public void searchOrganization(String organization) throws InterruptedException {
txtAreaOrganizationName.sendKeys(organization);
Thread.sleep(2000);
selectOrganization.click();
Thread.sleep(2000);
}
public void selectMyOrganization() throws InterruptedException {
drpOrganization.click();
Thread.sleep(2000);
Actions act = new Actions(driver);
act.moveToElement(driver.findElement(By.xpath("//li[@id='viewType_chzn_o_0']"))).click().build().perform();
Thread.sleep(2000);
}
public void clickExportButton() {
exportOrgExcel.click();
}
public void verifyExcelFileDownload() throws InterruptedException {
Thread.sleep(3000);
File f1=new File("C:\\Users\\hp\\Downloads\\");
/*if(f1.exists()) {
System.out.println("Organization is exported in Excel format");
f1.delete();
}*/
for(File f:f1.listFiles()) {
if (f.getName().startsWith("Organization_")) {
f.delete();
System.out.println("Organization details are exported successfully");
}
}
}
public void clickNewLinkToAddOrganization() {
lnkNewAddOrg.click();
}
public void clickSaveButton() throws InterruptedException {
btnSave.click();
Thread.sleep(2000);
}
public void clickCancelButton() throws InterruptedException {
btnCancel.click();
Thread.sleep(2000);
}
public void verifyUserNavigation() {
String OrgURL=driver.getCurrentUrl();
if(OrgURL.equalsIgnoreCase("https://testcolpal.aisselkolm.com/hills_staging/organizations/list_organizations_client_view")) {
System.out.println("User successfully navigated back to Organization");
}else {
System.out.println("User is not successfully navigated back to Organization");
}
}
}

View File

@ -0,0 +1,202 @@
package StepDefinitions;
import java.util.Properties;
import org.openqa.selenium.By;
import PageObjects.ContactsPage;
import PageObjects.MyListsPage;
import Utilities.BrowserUtility;
import Utilities.PropertiesFileReader;
import io.cucumber.java.After;
import io.cucumber.java.Before;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import manager.PageObjectManager;
public class ContactsTabSteps extends BrowserUtility{
//ContactsPage contactsPage=pageObjectManager.getContactsPage();
PageObjectManager pageObjectManager=new PageObjectManager(driver);
ContactsPage contactsPage=pageObjectManager.getContactsPage();
MyListsPage myListPage=pageObjectManager.getMyListsPage();
//contactsPage=pageObjectManager.getContactsPage();
@After
public static void closeBrowser() throws Exception{
if (driver == null) {
return;
}
driver.quit();
driver = null;
}
@And("user clicks on country filter in the contacts tab")
public void user_clicks_on_country_filter_in_the_contacts_tab() throws InterruptedException{
//pageObjectManager = new PageObjectManager(driver);
contactsPage.filterCountryName();
}
@Then("user should display with filtered HCP's based country filter")
public void user_should_display_with_filtered_HCPs_based_on_country_filter() throws InterruptedException{
contactsPage.clickOnHCPProfile();
contactsPage.clickViewProfile();
contactsPage.verifyCountryName();
}
@And("user click on New icon to add KOL")
public void user_click_on_New_icon_to_add_KOL(){
contactsPage.clickAddHcp();
}
@And("user click on Save button without adding details in add KOL page")
public void user_click_on_Save_button_without_adding_details_in_add_KOL_page() throws InterruptedException{
contactsPage.clickSaveButton();
}
@Then("Required error message shown to user for mandatory fields")
public void Required_error_message_shown_to_user_for_mandatory_fields() {
contactsPage.verifyErrorMessageShownForMandatoryFields();
}
@When("user clicks on Cancel button in add KOL page")
public void user_clicks_on_Cancel_button_in_add_KOL_page(){
contactsPage.clickCancelButton();
}
@And("user should be taken to contacts page")
public void user_should_be_taken_to_contacts_page(){
contactsPage.verifyUserNavigationToContacts();
}
@And("select a KOL by clicking on checkbox")
public void select_a_KOL_by_clicking_on_checkbox() {
contactsPage.selectAKOL();
}
@And("user click on PDF to download details of KOL")
public void user_click_on_PDF_to_download_details_of_KOL() {
contactsPage.clickOnPDFLink();
}
@Then("PDF should get download")
public void PDF_should_get_download() throws InterruptedException {
contactsPage.verifyPDFFileDownload();
}
@And("user click on Excel to download details of KOL")
public void user_click_on_Excel_to_download_details_of_KOL() {
contactsPage.clickOnExcelLink();
}
@And("user selects Full profile checkbox")
public void user_selects_Full_profile_checkbox() throws InterruptedException {
contactsPage.selectFullProfile();
}
@And("user click on Export button")
public void user_clicks_on_Export_button() {
contactsPage.clickExportButton();
}
@Then("KOL full profile Excel downloaded")
public void KOL_full_profile_Excel_downloaded() throws InterruptedException {
contactsPage.verifyExcelFileDownload();
}
@And("user selects All Contacts in Assigned dropdown")
public void user_selects_All_Contacts_in_Assigned_dropdown() throws InterruptedException {
contactsPage.selectAllContacts();
}
@And("user click on Assign link")
public void user_click_on_Assign_link() {
contactsPage.clickAssignLink();
}
@And("user select Hill Manager to assign")
public void user_select_Hill_Manager_to_assign() throws InterruptedException {
contactsPage.selectUser();
}
@And("user click on Assign button")
public void user_click_on_Assign_button() throws InterruptedException {
contactsPage.clickAssignButton();
}
@Then("KOL should get assign to Hill Manager")
public void KOL_should_get_assign_to_Hill_Manager() {
System.out.println("Passed: KOL is successfully assigned to Hill Manager");
}
@And ("user click on Email link")
public void user_click_on_Email_link() throws InterruptedException {
contactsPage.clickEmailLink();
}
@And ("user enter to email(.+)")
public void user_enter_to_email(String email) throws InterruptedException {
contactsPage.enterToEmail(email);
}
@And ("user click on send button")
public void user_click_on_send_button() {
contactsPage.clickSendButton();
}
@Then ("KOL profile emailed successfully")
public void KOL_profilr_emailed_successfully() {
System.out.println("Passed: KOL profile succesfully sent to an Email");
}
@And("user click on List icon link")
public void user_click_on_List_icon_link() {
contactsPage.clickListLink();
}
@And("user add new category and list name")
public void user_add_new_category_and_list_name() throws InterruptedException{
contactsPage.selectAddNewCategory();
contactsPage.selectAddNewList();
}
@And("user click on Save button")
public void user_click_on_Save_button() throws InterruptedException {
contactsPage.clickListSaveButton();
}
@And("user navigates to MyLists tab")
public void user_navigates_to_MyLists_tab() {
// myListPage=pageObjectManager.getMyListsPage();
myListPage.clickMyListTab();
}
@And("user click on Manage List tab")
public void user_click_on_Manage_Lists_tab() {
myListPage.clickManageList();
}
@And("user select category to be deleted")
public void user_select_category_to_be_deleted() throws InterruptedException {
myListPage.selectCategory();
}
@And("user delete the list name")
public void user_delete_the_list_name() {
myListPage.deleteList();
}
@And("user delete the category created")
public void user_delete_the_category_created() {
myListPage.deleteCategory();
}
@And("user click on Unassign button")
public void user_click_on_Unassign_button() throws InterruptedException {
contactsPage.clickUnAssignButton();
}
}

View File

@ -0,0 +1,55 @@
package StepDefinitions;
import java.util.Properties;
import org.openqa.selenium.WebDriver;
import PageObjects.ContactsPage;
import PageObjects.LoginPage;
import Utilities.BrowserUtility;
import Utilities.PropertiesFileReader;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import manager.PageObjectManager;
public class HillsCommonSteps extends BrowserUtility{
PropertiesFileReader obj = new PropertiesFileReader();
ContactsPage contactsPage;
// WebDriver driver;
LoginPage loginPage;
@Given("^user login to hills application with (.+) and (.+)$")
public void user_login_to_konector_application_with_username_and_password(String username, String password) throws InterruptedException {
Properties properties=obj.getProperty();
driver=BrowserUtility.OpenBrowser(driver,properties.getProperty("browser.name"), properties.getProperty("browser.baseURL"));
PageObjectManager pageObjectManager=new PageObjectManager(driver);
pageObjectManager = new PageObjectManager(driver);
loginPage=pageObjectManager.getLoginPage();
loginPage.enterUserName(username);
loginPage.enterPassword(password);
loginPage.clickSignButton();
}
@When("^user clicks contact tab$")
public void user_clicks_contacts_tab() throws InterruptedException {
PageObjectManager pageObjectManager=new PageObjectManager(driver);
contactsPage=pageObjectManager.getContactsPage();
contactsPage.clickContactTab();
}
@And("user search and click on (.+)")
public void user_search_and_click_on_KOLName(String KOLName) throws InterruptedException {
contactsPage.clickOnKOLName(KOLName);
}
}

View File

@ -0,0 +1,163 @@
package StepDefinitions;
import PageObjects.KOLProfilePage;
import Utilities.BrowserUtility;
import io.cucumber.java.After;
import io.cucumber.java.en.And;
import manager.PageObjectManager;
public class KOLProfileSteps extends BrowserUtility{
PageObjectManager pageObjectManager=new PageObjectManager(driver);
KOLProfilePage kolProfilePage=pageObjectManager.getKOLProfilePage();
@After
public static void closeBrowser() throws Exception{
if (driver == null) {
return;
}
driver.quit();
driver = null;
}
@And("user add user notes(.+)")
public void user_add_user_notes(String usernote) {
kolProfilePage.addUserNotes(usernote);
}
@And("user click on add training and close the pop-up")
public void user_click_on_add_training_and_close_the_popup() throws InterruptedException{
kolProfilePage.openAndCloseAddTraining();
}
@And("user click on add Honors and Rewards and close the pop-up")
public void user_click_on_add_Honors_and_Rewards_and_close_the_popup()throws InterruptedException{
kolProfilePage.openAndCloseAddHonorsAndAwards();
}
@And("user navigated to details tab")
public void user_navigated_to_details_tab() {
kolProfilePage.clickDetailsTab();
}
@And("user click on Add location and close the popup")
public void userclickonAddlocationandclosethepopup() throws InterruptedException {
kolProfilePage.openAndCloseAddLocation();
}
@And("user click on Add phone and close the popup")
public void userclickonAddphoneandclosethepopup() throws InterruptedException {
kolProfilePage.openAndCloseAddPhone();
}
@And("user click on Add staff and close the popup")
public void userclickonAddstaffandclosethepopup() throws InterruptedException {
kolProfilePage.openAndCloseAddStaff();
}
@And("user click on Add email and close the popup")
public void userclickonAddemailandclosethepopup() throws InterruptedException {
kolProfilePage.openAndCloseAddEmail();
}
@And("user click on Add assign and close the popup")
public void userclickonAddassignandclosethepopup() throws InterruptedException {
kolProfilePage.openAndCloseAddAssign();
}
@And("user click on Track tab")
public void userclickonTracktab() {
kolProfilePage.clickTrackTab();
}
@And("user export interactions")
public void userexportinteractions() throws InterruptedException {
kolProfilePage.exportInteractions();
}
@And("user click on Report tab within the interactions tab")
public void userclickonReporttabwithintheinteractionstab() throws InterruptedException {
kolProfilePage.clickReportTab();
}
@And("user click on Chart tab within the interactions tab")
public void userclickonCharttabwithintheinteractionstab() {
kolProfilePage.clickChartTab();
}
@And("user click on Calendar tab within the interactions tab")
public void userclickonCalendartabwithintheinteractionstab() {
kolProfilePage.clickCalendarTab();
}
@And("user click on payments tab within track")
public void userclickonpaymentstabwithintrack() throws InterruptedException {
kolProfilePage.clickPaymentTab();
}
@And("user click on Add payment and close the popup")
public void userclickonAddpaymentandclosethepopup() throws InterruptedException {
kolProfilePage.addAndCloseAddPayment();
}
@And("user click on Add contract and close the popup")
public void userclickonAddcontractandclosethepopup() throws InterruptedException {
kolProfilePage.clickContractTab();
kolProfilePage.addAndCloseAddContract();
}
@And("user click on Affiliation tab")
public void userclickonAffiliationtab() {
kolProfilePage.clickAffiliationTab();
}
@And("user click on Add affiliation and close the popup")
public void userclickonAddaffiliationandclosethepopup() throws InterruptedException {
kolProfilePage.openAndCloseAddAffiliation();
}
@And("user click on Reports org tab")
public void userclickonReportsorgtab() throws InterruptedException {
kolProfilePage.clickReportsOrgTab();
}
@And("user click on Reports eng tab")
public void userclickonReportsengtab() throws InterruptedException {
kolProfilePage.clickReportEngTab();
}
@And("user click on Events tab")
public void userclickonEventstab() {
kolProfilePage.clickEventTab();
}
@And("user click on Add New Event and close the popup")
public void userclickonAddNewEventandclosethepopup() throws InterruptedException {
kolProfilePage.openAndCloseAddNewEvent();
}
@And("user click on Events Charts tab")
public void userclickonEventsChartstab() throws InterruptedException {
kolProfilePage.clickTabEventsCharts();
}
@And("user click on Publications tab")
public void userclickonPublicationstab() {
kolProfilePage.clickPublicationsTab();
}
@And("user click on Add New Publication and close the popup")
public void userclickonAddNewPublicationandclosethepopup() throws InterruptedException {
kolProfilePage.openAndCloseAddNewPublication();
}
@And("user click on Pubs Charts tab")
public void userclickonPubsChartstab() throws InterruptedException {
kolProfilePage.clickPubsCharts();
}
@And("user export all Affiliations in Excel")
public void userexportallAffiliationsinExcel() throws InterruptedException {
kolProfilePage.exportAffiliations();
}
@And("user export all Events in Excel")
public void userexportallEventsinExcel() throws InterruptedException {
kolProfilePage.exportEvents();
}
@And("user export all Publications in Excel")
public void userexportallPublicationsinExcel() throws InterruptedException {
kolProfilePage.exportPublications();
}
}

View File

@ -0,0 +1,15 @@
package StepDefinitions;
import PageObjects.ContactsPage;
import PageObjects.MyListsPage;
import Utilities.BrowserUtility;
import io.cucumber.java.After;
import io.cucumber.java.en.And;
import manager.PageObjectManager;
public class MyListsSteps extends BrowserUtility{
MyListsPage myListPage;
PageObjectManager pageObjectManager;
}

View File

@ -0,0 +1,89 @@
package StepDefinitions;
import PageObjects.OrganizationPage;
import Utilities.BrowserUtility;
import io.cucumber.java.After;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Then;
import manager.PageObjectManager;
public class OrganizationSteps extends BrowserUtility{
PageObjectManager pageObjectManager=new PageObjectManager(driver);
OrganizationPage organizationPage=pageObjectManager.getOrganizationPage();
@After
public static void closeBrowser() throws Exception{
if (driver == null) {
return;
}
driver.quit();
driver = null;
}
@And("user click on Organization tab")
public void userclickonOrganizationtab() {
organizationPage.clickOrganizationTab();
}
@And("user clicks on country filter in the Organization tab")
public void userclicksoncountryfilterintheOrganizationtab() throws InterruptedException {
organizationPage.clickCountryFilter();
}
@Then("user should display with filtered KOLs based country filter")
public void usershoulddisplaywithfilteredKOLsbasedcountryfilter() throws InterruptedException {
organizationPage.verifyCountryFilter();
}
@And("user select a Organization by clicking checkbox")
public void userselectaOrganizationbyclickingcheckbox() {
organizationPage.selectAnOrganization();
}
@And("user selects All Organizations in Assigned dropdown")
public void userselectsAllOrganizationsinAssigneddropdown() throws InterruptedException {
organizationPage.selectAllOrganization();
}
@Then("Organization should get unassign from Hill Manager")
public void OrganizationshouldgetunassignfromHillManager() {
System.out.println("Passed: Organization successfully unassigned From Hill Manager");
}
@And("user search an Organization name(.+)")
public void usersearchanOrganizationname(String organization) throws InterruptedException {
organizationPage.searchOrganization(organization);
}
@And("user selects My Organizations in Assigned dropdown")
public void userselectsMyOrganizationsinAssigneddropdown() throws InterruptedException {
organizationPage.selectMyOrganization();
}
@And("user click on Excel to export organization")
public void userclickonExceltoexportorganization() throws InterruptedException {
organizationPage.clickExportButton();
organizationPage.verifyExcelFileDownload();
}
@And("user click on New link to add organization")
public void userclickonNewlinktoaddorganization() {
organizationPage.clickNewLinkToAddOrganization();
}
@And("user click on Save button without adding organization details")
public void userclickonSavebuttonwithoutaddingorganizationdetails() throws InterruptedException {
organizationPage.clickSaveButton();
}
@And("user click on Cancel button in new organization form")
public void userclickonCancelbuttoninneworganizationform() throws InterruptedException {
organizationPage.clickCancelButton();
}
@Then("user should be taken to organization home tab")
public void usershouldbetakentoorganizationhometab() {
organizationPage.verifyUserNavigation();
}
}

View File

@ -0,0 +1,64 @@
package StepDefinitions;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import PageObjects.HomePage;
import PageObjects.LoginPage;
import Utilities.BrowserUtility;
import io.cucumber.java.After;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import Utilities.PropertiesFileReader;
public class loginSteps{
WebDriver driver;
LoginPage login;
HomePage home;
PropertiesFileReader obj = new PropertiesFileReader();
@Given("^User navigates to Konectar Login page$")
public void user_navigates_to_Konectar_Login_page() throws InterruptedException {
Properties properties=obj.getProperty();
driver=BrowserUtility.OpenBrowser(driver,properties.getProperty("browser.name"), properties.getProperty("browser.baseURL"));
}
@When("^User enter UserName(.+)and Password(.+)$")
public void user_enter_UserName_and_Password(String username, String password) throws Throwable {
login = new LoginPage(driver);
login.enterUserName(username);
login.enterPassword(password);
}
@And("^User click on Sign In button$")
public void user_click_on_Sign_In_button() {
login.clickSignButton();
}
@Then("^Home page is displayed$")
public void home_page_is_displayed(){
home = new HomePage(driver);
home.homeTab();
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.close();
}
@Then("^Invalid login error message should be shown to user$")
public void Invalid_login_error_message_should_be_shown_to_user() {
login.verifyInvalidLoginErrorMessage();
driver.close();
}
}

View File

@ -0,0 +1,18 @@
package StepDefinitions;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(features="src\\test\\resources\\Features", glue= {"StepDefinitions"},
plugin= {"pretty", "html:target/cucumber-html.report","json:target/cucumber-reports/cucumber.json","junit:target/cucumber-reports/cucumber.xml","com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:"},
monochrome=true, tags="@AddOrg"
)
public class testRunner {
}

View File

@ -0,0 +1,36 @@
package Utilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class BrowserUtility{
public static WebDriver driver;
public static WebDriver OpenBrowser(WebDriver driver,String browserName,String url) throws InterruptedException
{
if(browserName.equalsIgnoreCase("Chrome"))
{
//C:\\Users\\hp\\eclipse-workspace\\com.testautomation.konectar\\Drivers\\chromedriver.exe
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")+"/Drivers/chromedriver/chromedriver.exe");
driver=new ChromeDriver();
driver.manage().window().maximize();
driver.get(url);
Thread.sleep(2000);
return driver;
}
else if(browserName.equalsIgnoreCase("firefox")) {
System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")+"/Drivers/geckodriver/geckodriver.exe");
driver=new FirefoxDriver();
driver.manage().window().maximize();
driver.get(url);
return driver;
}
return null;
}
}

View File

@ -0,0 +1,22 @@
package Utilities;
import java.io.FileInputStream;
import java.util.Properties;
public class PropertiesFileReader {
public Properties getProperty() {
{
FileInputStream inputStream=null;
Properties properties = new Properties();
try {
properties.load(new FileInputStream("resources/browser-config.properties"));
}catch(Exception e) {
System.out.println("Exception:"+e);
}
return properties;
}
}
}

View File

@ -0,0 +1,48 @@
package manager;
import org.openqa.selenium.WebDriver;
import PageObjects.ContactsPage;
import PageObjects.HomePage;
import PageObjects.KOLProfilePage;
import PageObjects.LoginPage;
import PageObjects.MyListsPage;
import PageObjects.OrganizationPage;
public class PageObjectManager {
public WebDriver driver;
LoginPage loginPage;
HomePage homePage;
ContactsPage contactsPage;
MyListsPage myListPage;
KOLProfilePage kolProfilePage;
OrganizationPage organizationPage;
public PageObjectManager(WebDriver driver) {
this.driver = driver;
}
public LoginPage getLoginPage() {
return (loginPage==null) ? loginPage = new LoginPage(driver):loginPage;
}
public HomePage getHomePage() {
return (homePage==null) ? homePage = new HomePage(driver):homePage;
}
public ContactsPage getContactsPage() {
return (contactsPage==null) ? contactsPage = new ContactsPage(driver):contactsPage;
}
public MyListsPage getMyListsPage() {
return (myListPage==null) ? myListPage = new MyListsPage(driver):myListPage;
}
public KOLProfilePage getKOLProfilePage() {
return (kolProfilePage==null) ? kolProfilePage = new KOLProfilePage(driver):kolProfilePage;
}
public OrganizationPage getOrganizationPage() {
return (organizationPage==null) ? organizationPage = new OrganizationPage(driver):organizationPage;
}
}

View File

@ -0,0 +1,9 @@
Feature: Login functionality
@LoginTest
Scenario Outline: User Login to Hills Application
Given user login to hills application with <username> and <password>
Examples:
|username|password|
|hillmgr|Ss@hills1|

View File

@ -0,0 +1,105 @@
Feature: KOL Profile functionality verification
Scenario Outline: Verify the user can go to KOL profile from contacts page
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user search and click on <KOLName>
#Provide complete KOL Name in example section. Partial KOL Name search may fail the script
Examples:
|username|password|KOLName|
|hillmgr|Ss@hills2|Andry M Jackson|
@ProfileActions
Scenario Outline: Verify the user can perform different actions within profile summary
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user search and click on <KOLName>
And user add user notes<usernote>
And user click on add training and close the pop-up
And user click on add Honors and Rewards and close the pop-up
#Provide complete KOL Name in example section. Partial KOL Name search may fail the script
Examples:
|username|password|KOLName |usernote|
|hillmgr|Ss@hills2|Andry M Jackson|Testing|
@ProfileAct
Scenario Outline: Verify the user can perform different actions within details tab
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user search and click on <KOLName>
And user navigated to details tab
And user click on Add location and close the popup
And user click on Add phone and close the popup
And user click on Add staff and close the popup
And user click on Add email and close the popup
And user click on Add assign and close the popup
#Provide complete KOL Name in example section. Partial KOL Name search may fail the script
Examples:
|username|password|KOLName |
|hillmgr|Ss@hills2|Andry M Jackson|
@Track
Scenario Outline: Verify the user can perform different actions within track tab
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user search and click on <KOLName>
And user click on Track tab
And user export interactions
And user click on Report tab within the interactions tab
And user click on Chart tab within the interactions tab
And user click on Calendar tab within the interactions tab
And user click on payments tab within track
And user click on Add payment and close the popup
And user click on Add contract and close the popup
Examples:
|username|password|KOLName |
|hillmgr|Ss@hills2|Andry M Jackson|
@Affiliation
Scenario Outline: Verify the user can perform different actions within affiliation tab
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user search and click on <KOLName>
And user click on Affiliation tab
And user click on Add affiliation and close the popup
And user export all Affiliations in Excel
And user click on Reports org tab
And user click on Reports eng tab
Examples:
|username|password|KOLName |
|hillmgr|Ss@hills2|Andry M Jackson|
@Events
Scenario Outline: Verify the user can perform different actions within affiliation tab
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user search and click on <KOLName>
And user click on Events tab
And user click on Add New Event and close the popup
And user export all Events in Excel
And user click on Events Charts tab
Examples:
|username|password|KOLName |
|hillmgr|Ss@hills2|Andry M Jackson|
@Publications
Scenario Outline: Verify the user can perform different actions within affiliation tab
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user search and click on <KOLName>
And user click on Publications tab
And user click on Add New Publication and close the popup
And user export all Publications in Excel
And user click on Pubs Charts tab
Examples:
|username|password|KOLName |
|hillmgr|Ss@hills2|Andry M Jackson|

View File

@ -0,0 +1,58 @@
Feature: Organization tab functionality verification
Scenario Outline: Verify user can perform multiple actions in Organization tab
Given user login to hills application with <username> and <password>
And user click on Organization tab
And user clicks on country filter in the Organization tab
Then user should display with filtered KOLs based country filter
Examples:
|username|password|
|hillmgr|Ss@hills2|
@AssignOrg
Scenario Outline: Verify user can assign and unassign Organization to KOL
Given user login to hills application with <username> and <password>
And user click on Organization tab
And user selects All Organizations in Assigned dropdown
And user search an Organization name<orgnization>
And user select a Organization by clicking checkbox
And user click on Assign link
And user select Hill Manager to assign
And user click on Assign button
And user selects My Organizations in Assigned dropdown
And user select a Organization by clicking checkbox
And user click on Assign link
And user click on Unassign button
Then Organization should get unassign from Hill Manager
Examples:
|username|password|orgnization|
|hillmgr|Ss@hills2|4 Paws Veterinary Care|
@exportexcelorg
Scenario Outline: Verify user can download organization in excel format
Given user login to hills application with <username> and <password>
And user click on Organization tab
And user selects All Organizations in Assigned dropdown
And user search an Organization name<orgnization>
And user select a Organization by clicking checkbox
And user click on Excel to export organization
Examples:
|username|password|orgnization|
|hillmgr|Ss@hills2|4 Paws Veterinary Care|
@AddOrg
Scenario Outline: Verify user can download organization in excel format
Given user login to hills application with <username> and <password>
And user click on Organization tab
And user click on New link to add organization
And user click on Save button without adding organization details
And user click on Cancel button in new organization form
Then user should be taken to organization home tab
Examples:
|username|password|
|hillmgr|Ss@hills2|

View File

@ -0,0 +1,117 @@
Feature: Contacts tab functionality
Scenario Outline: Verify user can apply country filter to KOL
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user clicks on country filter in the contacts tab
Then user should display with filtered HCP's based country filter
Examples:
|username|password|
|hillmgr|Ss@hills2|
Scenario Outline: Verify error message display for mandatory fields in Add new KOL
Given user login to hills application with <username> and <password>
When user clicks contact tab
And user click on New icon to add KOL
And user click on Save button without adding details in add KOL page
Then Required error message shown to user for mandatory fields
When user clicks on Cancel button in add KOL page
Then user should be taken to contacts page
Examples:
|username|password|
|hillmgr|Ss@hills2|
@File
Scenario Outline: Verify user can download KOL PDF profile
Given user login to hills application with <username> and <password>
When user clicks contact tab
And select a KOL by clicking on checkbox
And user click on PDF to download details of KOL
Then PDF should get download
Examples:
|username|password|
|hillmgr|Ss@hills2|
@ExcelFile
Scenario Outline: Verify user can download KOL full profile as a Excel
Given user login to hills application with <username> and <password>
When user clicks contact tab
And select a KOL by clicking on checkbox
And user click on Excel to download details of KOL
And user selects Full profile checkbox
And user click on Export button
Then KOL full profile Excel downloaded
Examples:
|username|password|
|hillmgr|Ss@hills2|
@Assign
Scenario Outline: Verify user can unassign and assign Hill Manager to KOL
Given user login to hills application with <username> and <password>
When user clicks contact tab
And select a KOL by clicking on checkbox
And user click on Assign link
And user click on Unassign button
And user selects All Contacts in Assigned dropdown
And select a KOL by clicking on checkbox
And user click on Assign link
And user select Hill Manager to assign
And user click on Assign button
Then KOL should get assign to Hill Manager
Examples:
|username|password|
|hillmgr|Ss@hills2|
@Email
Scenario Outline: Verify user can send KOL profile in a Mail
Given user login to hills application with <username> and <password>
When user clicks contact tab
And select a KOL by clicking on checkbox
And user click on Email link
And user enter to email<email>
And user click on send button
Then KOL profile emailed successfully
Examples:
|username|password|email|
|hillmgr|Ss@hills2|test@test.com|
@List
Scenario Outline: Verify user can create KOL list and delete list
Given user login to hills application with <username> and <password>
When user clicks contact tab
And select a KOL by clicking on checkbox
And user click on List icon link
And user add new category and list name
And user click on Save button
And user navigates to MyLists tab
And user click on Manage List tab
And user select category to be deleted
And user delete the list name
And user delete the category created
Examples:
|username|password|email|
|hillmgr|Ss@hills2|test@test.com|
#Scenario Outline: Verify user can assign new KOL
#Given user login to hills application with <username> and <password>
#When user clicks contact tab
#And user click on New icon to assign KOL
#And user add KOL <firstname> and <lastname> and <email>
#And user select <salutation> and <country> and <language>
#And user click on save button
#Then user should get success message
#Examples:
#|username|password|firstname|lastname|email |salutation|country|language|
#|hillmgr|Ss@hills1|Andrew |Tylor |andrew@gmail.com| | | |

View File

@ -0,0 +1,26 @@
Feature: Login functionality check
@ValidTest
Scenario Outline: Verify user login with valid credentials
Given user login to konector application with <username> and <password>
When user click on Discover tab
And user filters Speciality as Dermatology
And user clicks on Pro
Examples:
|username|password|
|kon@test.com|konectarA@51|
#|liteuser@test.com|konectarA@51|
@InvalidTest
Scenario Outline: Verify user login with invalid credentials
Given User navigates to Konectar Login page
When User enter UserName<username> and Password<password>
And User click on Sign In button
Then Invalid login error message should be shown to user
Examples:
|username|password|
|kon@test.com|konectarA@52|
#|kone@test.com|konectar@51|

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<extentreports>
<configuration>
<!-- report theme -->
<!-- standard, dark -->
<theme>standard</theme>
<!-- document encoding -->
<!-- defaults to UTF-8 -->
<encoding>UTF-8</encoding>
<!-- protocol for script and stylesheets -->
<!-- defaults to https -->
<protocol>https</protocol>
<!-- title of the document -->
<documentTitle>Extent</documentTitle>
<!-- report name - displayed at top-nav -->
<reportName>Automation Report</reportName>
<!-- location of charts in the test view -->
<!-- top, bottom -->
<testViewChartLocation>bottom</testViewChartLocation>
<!-- custom javascript -->
<scripts>
<![CDATA[
$(document).ready(function() {
});
]]>
</scripts>
<!-- custom styles -->
<styles>
<![CDATA[
]]>
</styles>
</configuration>
</extentreports>

View File

@ -0,0 +1,3 @@
extent.reporter.html.start=true
extent.reporter.html.config=src/test/resources/extent-config.xml
extent.reporter.html.out=target/cucumber-reports/advanced-reports/extentreports/extent.html

2
maven/target/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/classes/
/test-classes/

View File

@ -0,0 +1,257 @@
var CucumberHTML = {};
CucumberHTML.DOMFormatter = function(rootNode) {
var currentUri;
var currentFeature;
var currentElement;
var currentSteps;
var currentStepIndex;
var currentStep;
var $templates = $(CucumberHTML.templates);
this.uri = function(uri) {
currentUri = uri;
};
this.feature = function(feature) {
currentFeature = blockElement(rootNode, feature, 'feature');
};
this.background = function(background) {
currentElement = featureElement(background, 'background');
currentStepIndex = 1;
};
this.scenario = function(scenario) {
currentElement = featureElement(scenario, 'scenario');
currentStepIndex = 1;
};
this.scenarioOutline = function(scenarioOutline) {
currentElement = featureElement(scenarioOutline, 'scenario_outline');
currentStepIndex = 1;
};
this.step = function(step) {
var stepElement = $('.step', $templates).clone();
stepElement.appendTo(currentSteps);
populate(stepElement, step, 'step');
if (step.doc_string) {
docString = $('.doc_string', $templates).clone();
docString.appendTo(stepElement);
// TODO: use a syntax highlighter based on the content_type
docString.text(step.doc_string.value);
}
if (step.rows) {
dataTable = $('.data_table', $templates).clone();
dataTable.appendTo(stepElement);
var tBody = dataTable.find('tbody');
$.each(step.rows, function(index, row) {
var tr = $('<tr></tr>').appendTo(tBody);
$.each(row.cells, function(index, cell) {
var td = $('<td>' + cell + '</td>').appendTo(tBody);
});
});
}
};
this.examples = function(examples) {
var examplesElement = blockElement(currentElement.children('details'), examples, 'examples');
var examplesTable = $('.examples_table', $templates).clone();
examplesTable.appendTo(examplesElement.children('details'));
$.each(examples.rows, function(index, row) {
var parent = index == 0 ? examplesTable.find('thead') : examplesTable.find('tbody');
var tr = $('<tr></tr>').appendTo(parent);
$.each(row.cells, function(index, cell) {
var td = $('<td>' + cell + '</td>').appendTo(tr);
});
});
};
this.match = function(match) {
currentStep = currentSteps.find('li:nth-child(' + currentStepIndex + ')');
currentStepIndex++;
};
this.result = function(result) {
currentStep.addClass(result.status);
if (result.error_message != '') {
populateStepError(currentStep, result.error_message);
}
currentElement.addClass(result.status);
var isLastStep = currentSteps.find('li:nth-child(' + currentStepIndex + ')').length == 0;
if (isLastStep) {
if (currentSteps.find('.failed').length == 0) {
// No failed steps. Collapse it.
currentElement.find('details').prop('open', false);
} else {
currentElement.find('details').attr('open', 'open');
}
}
};
this.embedding = function(mimeType, data, name) {
var nameHtml;
if (!name) {
nameHtml = "";
} else {
nameHtml = "<h4>" + name + "</h4>";
}
if (currentStepIndex == 1) {
this.dummyStep();
}
if (mimeType.match(/^image\//))
{
currentStep.append(nameHtml + '<img src="' + data + '">');
}
else if (mimeType.match(/^video\//))
{
currentStep.append(nameHtml + '<video src="' + data + '" type="' + mimeType + '" autobuffer controls>Your browser doesn\'t support video.</video>');
}
else if (mimeType.match(/^text\//))
{
this.write(nameHtml + data);
}
};
this.write = function(text) {
if (currentStepIndex == 1) {
this.dummyStep();
}
currentStep.append('<pre class="embedded-text">' + text + '</pre>');
};
this.before = function(before) {
this.handleHookResult(before);
};
this.after = function(after) {
this.handleHookResult(after);
};
this.beforestep = function(beforestep) {
this.handleHookResult(beforestep);
};
this.afterstep = function(afterstep) {
this.handleHookResult(afterstep);
};
this.handleHookResult = function(hook) {
if (hook.status != 'passed' && hook.error_message != '') {
this.dummyStep();
currentStep.addClass(hook.status);
currentElement.addClass(hook.status);
populateStepError(currentStep, hook.error_message);
}
};
this.dummyStep = function() {
var stepElement = $('.step', $templates).clone();
stepElement.appendTo(currentSteps);
populate(stepElement, {keyword: '', name: ''}, 'step');
currentStep = currentSteps.find('li:nth-child(' + currentStepIndex + ')');
currentStepIndex++;
};
function featureElement(statement, itemtype) {
var e = blockElement(currentFeature.children('details'), statement, itemtype);
currentSteps = $('.steps', $templates).clone();
currentSteps.appendTo(e.children('details'));
return e;
}
function blockElement(parent, statement, itemtype) {
var e = $('.blockelement', $templates).clone();
e.appendTo(parent);
return populate(e, statement, itemtype);
}
function populate(e, statement, itemtype) {
populateTags(e, statement.tags);
populateComments(e, statement.comments);
e.find('.keyword').text(statement.keyword);
e.find('.name').text(statement.name);
e.find('.description').text(statement.description);
e.attr('itemtype', 'http://cukes.info/microformat/' + itemtype);
e.addClass(itemtype);
return e;
}
function populateComments(e, comments) {
if (comments !== undefined) {
var commentsNode = $('.comments', $templates).clone().prependTo(e.find('.header'));
$.each(comments, function(index, comment) {
var commentNode = $('.comment', $templates).clone().appendTo(commentsNode);
commentNode.text(comment.value);
});
}
}
function populateTags(e, tags) {
if (tags !== undefined) {
var tagsNode = $('.tags', $templates).clone().prependTo(e.find('.header'));
$.each(tags, function(index, tag) {
var tagNode = $('.tag', $templates).clone().appendTo(tagsNode);
tagNode.text(tag.name);
});
}
}
function populateStepError(e, error) {
if (error !== undefined) {
errorNode = $('.error', $templates).clone().appendTo(e);
errorNode.text(error);
}
}
};
CucumberHTML.templates = '<div>\
<section class="blockelement" itemscope>\
<details open>\
<summary class="header">\
<span class="keyword" itemprop="keyword">Keyword</span>: <span itemprop="name" class="name">This is the block name</span>\
</summary>\
<div itemprop="description" class="description">The description goes here</div>\
</details>\
</section>\
\
<ol class="steps"></ol>\
\
<ol>\
<li class="step"><div class="header"></div><span class="keyword" itemprop="keyword">Keyword</span><span class="name" itemprop="name">Name</span></li>\
</ol>\
\
<pre class="doc_string"></pre>\
\
<pre class="error"></pre>\
\
<table class="data_table">\
<tbody>\
</tbody>\
</table>\
\
<table class="examples_table">\
<thead></thead>\
<tbody></tbody>\
</table>\
\
<section class="embed">\
<img itemprop="screenshot" class="screenshot" />\
</section>\
<div class="tags"></div>\
<span class="tag"></span>\
<div class="comments"></div>\
<div class="comment"></div>\
<div>';
if (typeof module !== 'undefined') {
module.exports = CucumberHTML;
} else if (typeof define !== 'undefined') {
define([], function() { return CucumberHTML; });
}

View File

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Cucumber Features</title>
<link href="style.css" rel="stylesheet">
<script src="jquery-3.4.1.min.js"></script>
<script src="formatter.js"></script>
<script src="report.js"></script>
</head>
<body>
<div class="cucumber-report"></div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,139 @@
$(document).ready(function() {var formatter = new CucumberHTML.DOMFormatter($('.cucumber-report'));formatter.uri("file:src/test/resources/Features/Organization.feature");
formatter.feature({
"name": "Organization tab functionality verification",
"description": "",
"keyword": "Feature"
});
formatter.scenarioOutline({
"name": "Verify user can download organization in excel format",
"description": "",
"keyword": "Scenario Outline",
"tags": [
{
"name": "@AddOrg"
}
]
});
formatter.step({
"name": "user login to hills application with \u003cusername\u003e and \u003cpassword\u003e",
"keyword": "Given "
});
formatter.step({
"name": "user click on Organization tab",
"keyword": "And "
});
formatter.step({
"name": "user click on New link to add organization",
"keyword": "And "
});
formatter.step({
"name": "user click on Save button without adding organization details",
"keyword": "And "
});
formatter.step({
"name": "user click on Cancel button in new organization form",
"keyword": "And "
});
formatter.step({
"name": "user should be taken to organization home tab",
"keyword": "Then "
});
formatter.examples({
"name": "",
"description": "",
"keyword": "Examples",
"rows": [
{
"cells": [
"username",
"password"
]
},
{
"cells": [
"hillmgr",
"Ss@hills2"
]
}
]
});
formatter.scenario({
"name": "Verify user can download organization in excel format",
"description": "",
"keyword": "Scenario Outline",
"tags": [
{
"name": "@AddOrg"
}
]
});
formatter.step({
"name": "user login to hills application with hillmgr and Ss@hills2",
"keyword": "Given "
});
formatter.match({
"location": "HillsCommonSteps.user_login_to_konector_application_with_username_and_password(String,String)"
});
formatter.result({
"status": "passed"
});
formatter.step({
"name": "user click on Organization tab",
"keyword": "And "
});
formatter.match({
"location": "OrganizationSteps.userclickonOrganizationtab()"
});
formatter.result({
"status": "passed"
});
formatter.step({
"name": "user click on New link to add organization",
"keyword": "And "
});
formatter.match({
"location": "OrganizationSteps.userclickonNewlinktoaddorganization()"
});
formatter.result({
"status": "passed"
});
formatter.step({
"name": "user click on Save button without adding organization details",
"keyword": "And "
});
formatter.match({
"location": "OrganizationSteps.userclickonSavebuttonwithoutaddingorganizationdetails()"
});
formatter.result({
"status": "passed"
});
formatter.step({
"name": "user click on Cancel button in new organization form",
"keyword": "And "
});
formatter.match({
"location": "OrganizationSteps.userclickonCancelbuttoninneworganizationform()"
});
formatter.result({
"status": "passed"
});
formatter.step({
"name": "user should be taken to organization home tab",
"keyword": "Then "
});
formatter.match({
"location": "OrganizationSteps.usershouldbetakentoorganizationhometab()"
});
formatter.result({
"status": "passed"
});
formatter.after({
"status": "passed"
});
formatter.after({
"status": "passed"
});
formatter.after({
"status": "passed"
});
});

View File

@ -0,0 +1,97 @@
.cucumber-report .body {
font-family: Helvetica,Arial,sans-serif;
}
.cucumber-report .keyword {
font-weight: bold;
}
.cucumber-report .description {
font-style: italic;
margin-left: 20px;
white-space: pre;
}
.cucumber-report details > section {
margin-left: 20px;
}
.cucumber-report ol.steps {
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
}
.cucumber-report .step .embedded-text {
background: #dddddd;
}
.cucumber-report .doc_string {
margin: 0 0 0 20px;
}
.cucumber-report table {
border-collapse: collapse;
border: 1px;
border-style: solid;
}
.cucumber-report td, .cucumber-report th {
border: 1px;
border-style: solid;
padding-left: 4px;
padding-right: 4px;
}
.cucumber-report table {
margin-left: 20px;
}
.cucumber-report thead {
background-color: #C0C0C0;
}
.cucumber-report .passed {
background-color: #C5D88A;
}
.cucumber-report .undefined, .cucumber-report .pending {
background-color: #EAEC2D;
}
.cucumber-report .skipped {
background-color: #2DEAEC;
}
.cucumber-report .failed {
background-color: #D88A8A;
}
.cucumber-report .tags {
display: inline;
}
.cucumber-report .tag {
margin-right: 0.25em;
color: #246ac1;
}
.cucumber-report .comments {
display: inline;
}
.cucumber-report .comment {
margin: 0;
padding: 0;
}
.cucumber-report .error {
margin: .2em .75em;
padding: .2em;
border: 1px solid #900;
background-color: #EDBBBB;
}
#cucumber-templates {
display: none;
}

View File

@ -0,0 +1,443 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8' />
<meta name='description' content='' />
<meta name='robots' content='noodp, noydir' />
<meta name='viewport' content='width=device-width, initial-scale=1' />
<meta id="timeStampFormat" name="timeStampFormat" content='MMM d, yyyy hh:mm:ss a'/>
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600' rel='stylesheet' type='text/css' />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
<link href='https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@ff53917fbbdb5ef820abbbe4d199a6942dc771ff/v3html/css/extent.css' type='text/css' rel='stylesheet' />
<title>Extent</title>
<style type='text/css'>
/* json-tree */
.jstBracket,.jstComma,.jstValue{white-space:pre-wrap}.jstValue{font-size:10px;font-weight:400;font-family:"Lucida Console",Monaco,monospace}.jstProperty{color:#666;word-wrap:break-word}.jstBool{color:#2525CC}.jstNum{color:#D036D0}.jstNull{color:gray}.jstStr{color:#2DB669}.jstFold:after{content:' -';cursor:pointer}.jstExpand{white-space:normal}.jstExpand:after{content:' +';cursor:pointer}.jstFolded{white-space:normal!important}.jstHiddenBlock{display:none}
</style>
<script type="text/javascript">
/*! json-tree - v0.2.2 - 2017-09-25, MIT LICENSE */
var JSONTree=function(){var n={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"},t=0,r=0;this.create=function(n,t){return r+=1,N(u(n,0,!1),{class:"jstValue"})};var e=function(t){return t.replace(/[&<>'"]/g,function(t){return n[t]})},s=function(){return r+"_"+t++},u=function(n,t,r){if(null===n)return f(r?t:0);switch(typeof n){case"boolean":return l(n,r?t:0);case"number":return i(n,r?t:0);case"string":return o(n,r?t:0);default:return n instanceof Array?a(n,t,r):c(n,t,r)}},c=function(n,t,r){var e=s(),u=Object.keys(n).map(function(r){return j(r,n[r],t+1,!0)}).join(m()),c=[g("{",r?t:0,e),N(u,{id:e}),p("}",t)].join("\n");return N(c,{})},a=function(n,t,r){var e=s(),c=n.map(function(n){return u(n,t+1,!0)}).join(m());return[g("[",r?t:0,e),N(c,{id:e}),p("]",t)].join("\n")},o=function(n,t){var r=e(JSON.stringify(n));return N(v(r,t),{class:"jstStr"})},i=function(n,t){return N(v(n,t),{class:"jstNum"})},l=function(n,t){return N(v(n,t),{class:"jstBool"})},f=function(n){return N(v("null",n),{class:"jstNull"})},j=function(n,t,r){var s=v(e(JSON.stringify(n))+": ",r),c=N(u(t,r,!1),{});return N(s+c,{class:"jstProperty"})},m=function(){return N(",\n",{class:"jstComma"})},N=function(n,t){return d("span",t,n)},d=function(n,t,r){return"<"+n+Object.keys(t).map(function(n){return" "+n+'="'+t[n]+'"'}).join("")+">"+r+"</"+n+">"},g=function(n,t,r){return N(v(n,t),{class:"jstBracket"})+N("",{class:"jstFold",onclick:"JSONTree.toggle('"+r+"')"})};this.toggle=function(n){var t=document.getElementById(n),r=t.parentNode,e=t.previousElementSibling;""===t.className?(t.className="jstHiddenBlock",r.className="jstFolded",e.className="jstExpand"):(t.className="",r.className="",e.className="jstFold")};var p=function(n,t){return N(v(n,t),{})},v=function(n,t){return Array(2*t+1).join(" ")+n};return this}();
</script>
</head>
<body class='extent standard default hide-overflow bdd-report'>
<div id='theme-selector' alt='Click to toggle theme. To enable by default, use theme configuration.' title='Click to toggle theme. To enable by default, use theme configuration.'>
<span><i class='material-icons'>desktop_windows</i></span>
</div>
<nav>
<div class="nav-wrapper">
<a href="#!" class="brand-logo black"><img src="https://cdn.rawgit.com/extent-framework/extent-github-cdn/d74480e/commons/img/logo.png"></a>
<!-- slideout menu -->
<ul id='slide-out' class='side-nav fixed hide-on-med-and-down'>
<li class='waves-effect active'><a href='#!' view='test-view' onclick="configureView(0);chartsView('test');"><i class='material-icons'>dashboard</i></a></li>
<li class='waves-effect'><a href='#!' view='category-view' onclick="configureView(1)"><i class='material-icons'>label_outline</i></a></li>
<li class='waves-effect'><a href='#!' onclick="configureView(-1);chartsView('dashboard');" view='dashboard-view'><i class='material-icons'>track_changes</i></a></li>
</ul>
<!-- report name -->
<span class='report-name'>Automation Report</span>
<!-- report headline -->
<span class='report-headline'></span>
<!-- nav-right -->
<ul id='nav-mobile' class='right hide-on-med-and-down nav-right'>
<a href='#!'>
<span class='label blue darken-3 suite-start-time'>Jul 2, 2021 05:32:53 PM</span>
</a>
</ul>
</div>
</nav> <!-- container -->
<div class='container'>
<div id='test-view' class='view'>
<section id='controls'>
<div class='controls grey lighten-4'>
<!-- test toggle -->
<div class='chip transparent'>
<a class='dropdown-button tests-toggle' data-activates='tests-toggle' data-constrainwidth='true' data-beloworigin='true' data-hover='true' href='#'>
<i class='material-icons'>warning</i> Status
</a>
<ul id='tests-toggle' class='dropdown-content'>
<li status='pass'><a href='#!'>Pass <i class='material-icons green-text'>check_circle</i></a></li>
<li class='divider'></li>
<li status='clear' clear='true'><a href='#!'>Clear Filters <i class='material-icons'>clear</i></a></li>
</ul>
</div>
<!-- test toggle -->
<!-- category toggle -->
<div class='chip transparent'>
<a class='dropdown-button category-toggle' data-activates='category-toggle' data-constrainwidth='false' data-beloworigin='true' data-hover='true' href='#'>
<i class='material-icons'>local_offer</i> Category
</a>
<ul id='category-toggle' class='dropdown-content'>
<li><a href='#'>@AddOrg</a></li>
<li class='divider'></li>
<li class='clear'><a href='#!' clear='true'>Clear Filters</a></li>
</ul>
</div>
<!-- category toggle -->
<!-- clear filters -->
<div class='chip transparent hide'>
<a class='' id='clear-filters' alt='Clear Filters' title='Clear Filters'>
<i class='material-icons'>close</i> Clear
</a>
</div>
<!-- clear filters -->
<!-- enable dashboard -->
<div id='toggle-test-view-charts' class='chip transparent'>
<a class='pink-text' id='enable-dashboard' alt='Enable Dashboard' title='Enable Dashboard'>
<i class='material-icons'>track_changes</i> Dashboard
</a>
</div>
<!-- enable dashboard -->
<!-- search -->
<div class='chip transparent' alt='Search Tests' title='Search Tests'>
<a href="#" class='search-div'>
<i class='material-icons'>search</i> Search
</a>
<div class='input-field left hide'>
<input id='search-tests' type='text' class='validate browser-default' placeholder='Search Tests...'>
</div>
</div>
<!-- search -->
</div>
</section>
<div id='test-view-charts' class='subview-full'>
<div id='charts-row' class='row nm-v nm-h'>
<div class='col s12 m4 l4 np-h'>
<div class='card-panel nm-v'>
<div class='left panel-name'>Features</div>
<div class='chart-box' style="max-height:94px;">
<canvas id='parent-analysis' width='90' height='70'></canvas>
</div>
<div class='block text-small'>
<span class='tooltipped' data-position='top' data-tooltip='100%'><span class='strong'>1</span> feature(s) passed</span>
</div>
<div class='block text-small'>
<span class='strong tooltipped' data-position='top' data-tooltip='0%'>0</span> feature(s) failed, <span class='strong tooltipped' data-position='top' data-tooltip='0%'>0</span> skipped
</div>
</div>
</div>
<div class='col s12 m4 l4 np-h'>
<div class='card-panel nm-v'>
<div class='left panel-name'>Scenarios</div>
<div class='chart-box' style="max-height:94px;">
<canvas id='child-analysis' width='90' height='70'></canvas>
</div>
<div class='block text-small'>
<span class='tooltipped' data-position='top' data-tooltip='100%'><span class='strong'>1</span> scenario(s) passed</span>
</div>
<div class='block text-small'>
<span class='strong tooltipped' data-position='top' data-tooltip='0%'>0</span> scenario(s) failed,
<span class='strong tooltipped' data-position='top' data-tooltip='0%'>0</span> skipped,
<span class='strong tooltipped' data-position='top' data-tooltip='0%'>0</span> others
</div>
</div>
</div>
<div class='col s12 m4 l4 np-h'>
<div class='card-panel nm-v'>
<div class='left panel-name'>Steps</div>
<div class='chart-box' style="max-height:94px;">
<canvas id='grandchild-analysis' width='90' height='70'></canvas>
</div>
<div class='block text-small'>
<span class='tooltipped' data-position='top' data-tooltip='100%'><span class='strong'>6</span> step(s) passed</span>
</div>
<div class='block text-small'>
<span class='strong tooltipped' data-position='top' data-tooltip='0%'>0</span> scenario(s) failed,
<span class='strong tooltipped' data-position='top' data-tooltip='0%'>0</span> skipped,
<span class='strong tooltipped' data-position='top' data-tooltip='0%'>0</span> others
</div>
</div>
</div>
</div>
<div id="timeline-chart" class="row nm-v nm-h">
<div class="col s12 m12 l12 np-h">
<div class="card-panel">
<div class='left panel-name'>Timeline (seconds)</div>
<div class="chart-box" style="width:98%;max-height:145px;">
<canvas id="timeline" height="120"></canvas>
</div>
</div>
</div>
</div>
</div> <div class='subview-left left'>
<div class='view-summary'>
<ul id='test-collection' class='test-collection'>
<li class='test displayed active has-leaf pass' status='pass' bdd='true' test-id='1'>
<div class='test-heading'>
<span class='test-name'>Organization tab functionality verification</span>
<span class='test-time'>Jul 2, 2021 05:32:55 PM</span>
<span class='test-status right pass'>pass</span>
</div>
<div class='test-content hide'>
<div class="sr-filters bdd-filters">
<a class="btn-floating waves-effect waves-light pass green" title="pass"><i class='material-icons'>check_circle</i></a>
<a class="btn-floating waves-effect waves-light fail red" title="fail"><i class='material-icons'>cancel</i></a>
<a class="btn-floating waves-effect waves-light skip blue" title="skip"><i class='material-icons'>redo</i></a>
<a class="btn-floating waves-effect waves-light clear grey" title="clear"><i class='material-icons'>clear</i></a>
</div>
<div class='scenario outline node' test-id='2' status='pass'>
<div class='category-list'>
<span class='category label'>@AddOrg</span>
</div>
<span class='duration right label'>0h 0m 25s+968ms</span>
<div class="bdd-test">
<div class="scenario-name"><span class='status pass' title='pass'><i class='material-icons'>check_circle</i></span> Scenario Outline: Verify user can download organization in excel format</div>
<table class='runtime-table table-striped table'><tr><td>username</td><td>password</td></tr><tr><td>hillmgr</td><td>Ss@hills2</td></tr></table>
</div>
<ul class='steps'>
<li test-id='3' class='node scenario pass' status='pass'>
<div class="step-name" title=""><span class='status pass' title='pass'><i class='material-icons'>check_circle</i></span>Verify user can download organization in excel format</div>
<ul class='gc steps'>
<li test-id='4' class='gc given pass' status='pass'>
<h6 class="step-name" title="HillsCommonSteps.user_login_to_konector_application_with_username_and_password(String,String)"><span class='status pass' title='pass'><i class='material-icons'>check_circle</i></span>Given user login to hills application with hillmgr and Ss@hills2</h6>
<div class="node-step"></div>
</li>
<li test-id='5' class='gc and pass' status='pass'>
<h6 class="step-name" title="OrganizationSteps.userclickonOrganizationtab()"><span class='status pass' title='pass'><i class='material-icons'>check_circle</i></span>And user click on Organization tab</h6>
<div class="node-step"></div>
</li>
<li test-id='6' class='gc and pass' status='pass'>
<h6 class="step-name" title="OrganizationSteps.userclickonNewlinktoaddorganization()"><span class='status pass' title='pass'><i class='material-icons'>check_circle</i></span>And user click on New link to add organization</h6>
<div class="node-step"></div>
</li>
<li test-id='7' class='gc and pass' status='pass'>
<h6 class="step-name" title="OrganizationSteps.userclickonSavebuttonwithoutaddingorganizationdetails()"><span class='status pass' title='pass'><i class='material-icons'>check_circle</i></span>And user click on Save button without adding organization details</h6>
<div class="node-step"></div>
</li>
<li test-id='8' class='gc and pass' status='pass'>
<h6 class="step-name" title="OrganizationSteps.userclickonCancelbuttoninneworganizationform()"><span class='status pass' title='pass'><i class='material-icons'>check_circle</i></span>And user click on Cancel button in new organization form</h6>
<div class="node-step"></div>
</li>
<li test-id='9' class='gc then pass' status='pass'>
<h6 class="step-name" title="OrganizationSteps.usershouldbetakentoorganizationhometab()"><span class='status pass' title='pass'><i class='material-icons'>check_circle</i></span>Then user should be taken to organization home tab</h6>
<div class="node-step"></div>
</li>
</ul>
</li>
</ul>
</div>
</div>
</li>
</ul>
</div>
</div>
<!-- subview left -->
<div class='subview-right left'>
<div class='view-summary'>
<div id='step-filters' class="right sr-filters">
<a class="btn-floating waves-effect waves-light green" status="pass" alt="pass" title="pass"><i class="material-icons">check_circle</i></a>
<a class="btn-floating waves-effect waves-light red" status="fail" alt="fail" title="fail"><i class="material-icons">cancel</i></a>
<a class="btn-floating waves-effect waves-light red darken-4" status="fatal" alt="fatal" title="fatal"><i class="material-icons">cancel</i></a>
<a class="btn-floating waves-effect waves-light pink text-lighten-1" status="error" alt="error" title="error"><i class="material-icons">error</i></a>
<a class="btn-floating waves-effect waves-light orange" alt="warning" status="warning" title="warning"><i class="material-icons">warning</i></a>
<a class="btn-floating waves-effect waves-light teal" status="skip" alt="skip" title="skip"><i class="material-icons">redo</i></a>
<a class="btn-floating waves-effect waves-light grey" status="clear" alt="Clear filters" title="Clear filters"><i class="material-icons">clear</i></a>
</div>
<h5 class='test-name'></h5>
</div>
</div>
<!-- subview right -->
</div>
<!-- test view --><div id='category-view' class='view hide'>
<section id='controls'>
<div class='controls grey lighten-4'>
<!-- search -->
<div class='chip transparent' alt='Search Tests' title='Search Tests'>
<a href="#" class='search-div'>
<i class='material-icons'>search</i> Search
</a>
<div class='input-field left hide'>
<input id='search-tests' type='text' class='validate browser-default' placeholder='Search Tests...'>
</div>
</div>
<!-- search -->
</div>
</section>
<div class='subview-left left'>
<div class='view-summary'>
<ul id='category-collection' class='category-collection'>
<li class='category displayed active'>
<div class='category-heading'>
<span class='category-name'>@AddOrg</span>
<span class='category-status right'>
<span class='label pass'>2</span>
</span>
</div>
<div class='category-content hide'>
<div class='category-status-counts'>
<span status="pass" class='label green accent-4 white-text'>Passed: 2</span>
</div>
<div class='category-tests'>
<table class='bordered table-results'>
<thead>
<tr>
<th>Timestamp</th>
<th>TestName</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>Jul 2, 2021 05:32:55 PM</td>
<td class='linked' test-id='2'>Verify user can download organization in excel format</td>
<td><span class='test-status pass'>pass</span></td>
</tr>
<tr>
<td>Jul 2, 2021 05:32:55 PM</td>
<td class='linked' test-id='3'>Verify user can download organization in excel format</td>
<td><span class='test-status pass'>pass</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class='subview-right left'>
<div class='view-summary'>
<h5 class='category-name'></h5>
</div>
</div>
</div>
<!-- category view --><!-- exception view --><div id='dashboard-view' class='view hide'>
<div class='card-panel transparent np-v'>
<h5>Dashboard</h5>
<div class='row'>
<div class='col s2'>
<div class='card-panel r'>
Features
<div class='panel-lead'>1</div>
</div>
</div>
<div class='col s2'>
<div class='card-panel r'>
Scenarios
<div class='panel-lead'>1</div>
</div>
</div>
<div class='col s2'>
<div class='card-panel r'>
Steps
<div class='panel-lead'>6</div>
</div>
</div>
<div class='col s2'>
<div class='card-panel r'>
Start
<div class='panel-lead'>Jul 2, 2021 05:32:53 PM</div>
</div>
</div>
<div class='col s2'>
<div class='card-panel r'>
End
<div class='panel-lead'>Jul 2, 2021 05:33:22 PM</div>
</div>
</div>
<div class='col s2'>
<div class='card-panel r'>
Time Taken
<div class='panel-lead'>0h 0m 28s+32ms</div>
</div>
</div>
<div class='col s6'>
<div class='card-panel dashboard-categories'>
<span class='right label cyan white-text'>Categories</span><p>&nbsp;</p>
<table>
<tr>
<th>Name</th>
<th>Passed</th>
<th>Failed</th>
<th>Skipped</th>
<th>Passed %</th>
</tr>
<tr>
<td>@AddOrg</td>
<td>2</td>
<td>0</td>
<td>0</td>
<td>
100%
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- dashboard view -->
<!-- testrunner-logs view --> </div>
<!-- container -->
<script>
var statusGroup = {
parentCount: 1,
passParent: 1,
failParent: 0,
fatalParent: 0,
errorParent: 0,
warningParent: 0,
skipParent: 0,
exceptionsParent: 0,
childCount: 1,
passChild: 1,
failChild: 0,
fatalChild: 0,
errorChild: 0,
warningChild: 0,
skipChild: 0,
infoChild: 0,
debugChild: 0,
exceptionsChild: 0,
grandChildCount: 6,
passGrandChild: 6,
failGrandChild: 0,
fatalGrandChild: 0,
errorGrandChild: 0,
warningGrandChild: 0,
skipGrandChild: 0,
infoGrandChild: 0,
debugGrandChild: 0,
exceptionsGrandChild: 0,
};
</script>
<script>
var timeline = {
"Organization tab functionality verification":25.968
};
</script>
<script src='https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@ff53917fbbdb5ef820abbbe4d199a6942dc771ff/v3html/js/extent.js' type='text/javascript'></script>
<script type='text/javascript'>
$(document).ready(function() {
});
</script>
</body>
</html>

View File

@ -0,0 +1,140 @@
[
{
"line": 1,
"elements": [
{
"start_timestamp": "2021-07-02T12:02:54.726Z",
"line": 58,
"name": "Verify user can download organization in excel format",
"description": "",
"id": "organization-tab-functionality-verification;verify-user-can-download-organization-in-excel-format;;2",
"after": [
{
"result": {
"duration": 799692800,
"status": "passed"
},
"match": {
"location": "KOLProfileSteps.closeBrowser()"
}
},
{
"result": {
"duration": 664000,
"status": "passed"
},
"match": {
"location": "OrganizationSteps.closeBrowser()"
}
},
{
"result": {
"duration": 10643200,
"status": "passed"
},
"match": {
"location": "ContactsTabSteps.closeBrowser()"
}
}
],
"type": "scenario",
"keyword": "Scenario Outline",
"steps": [
{
"result": {
"duration": 14605842500,
"status": "passed"
},
"line": 48,
"name": "user login to hills application with hillmgr and Ss@hills2",
"match": {
"arguments": [
{
"val": "hillmgr",
"offset": 37
},
{
"val": "Ss@hills2",
"offset": 49
}
],
"location": "HillsCommonSteps.user_login_to_konector_application_with_username_and_password(String,String)"
},
"keyword": "Given "
},
{
"result": {
"duration": 5742222600,
"status": "passed"
},
"line": 49,
"name": "user click on Organization tab",
"match": {
"location": "OrganizationSteps.userclickonOrganizationtab()"
},
"keyword": "And "
},
{
"result": {
"duration": 736202400,
"status": "passed"
},
"line": 50,
"name": "user click on New link to add organization",
"match": {
"location": "OrganizationSteps.userclickonNewlinktoaddorganization()"
},
"keyword": "And "
},
{
"result": {
"duration": 2161249000,
"status": "passed"
},
"line": 51,
"name": "user click on Save button without adding organization details",
"match": {
"location": "OrganizationSteps.userclickonSavebuttonwithoutaddingorganizationdetails()"
},
"keyword": "And "
},
{
"result": {
"duration": 2868606800,
"status": "passed"
},
"line": 52,
"name": "user click on Cancel button in new organization form",
"match": {
"location": "OrganizationSteps.userclickonCancelbuttoninneworganizationform()"
},
"keyword": "And "
},
{
"result": {
"duration": 22876100,
"status": "passed"
},
"line": 53,
"name": "user should be taken to organization home tab",
"match": {
"location": "OrganizationSteps.usershouldbetakentoorganizationhometab()"
},
"keyword": "Then "
}
],
"tags": [
{
"name": "@AddOrg"
}
]
}
],
"name": "Organization tab functionality verification",
"description": "",
"id": "organization-tab-functionality-verification",
"keyword": "Feature",
"uri": "file:src/test/resources/Features/Organization.feature",
"tags": []
}
]

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<testsuite failures="0" name="cucumber.runtime.formatter.JUnitFormatter" skipped="0" tests="1" time="27.098506">
<testcase classname="Organization tab functionality verification" name="Verify user can download organization in excel format" time="27.098506">
<system-out><![CDATA[Given user login to hills application with hillmgr and Ss@hills2............passed
And user click on Organization tab..........................................passed
And user click on New link to add organization..............................passed
And user click on Save button without adding organization details...........passed
And user click on Cancel button in new organization form....................passed
Then user should be taken to organization home tab..........................passed
]]></system-out>
</testcase>
</testsuite>

View File

@ -0,0 +1,139 @@
<html>
<head>
<title>TestNG: Default test</title>
<link href="../testng.css" rel="stylesheet" type="text/css" />
<link href="../my-testng.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.log { display: none;}
.stack-trace { display: none;}
</style>
<script type="text/javascript">
<!--
function flip(e) {
current = e.style.display;
if (current == 'block') {
e.style.display = 'none';
return 0;
}
else {
e.style.display = 'block';
return 1;
}
}
function toggleBox(szDivId, elem, msg1, msg2)
{
var res = -1; if (document.getElementById) {
res = flip(document.getElementById(szDivId));
}
else if (document.all) {
// this is the way old msie versions work
res = flip(document.all[szDivId]);
}
if(elem) {
if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;
}
}
function toggleAllBoxes() {
if (document.getElementsByTagName) {
d = document.getElementsByTagName('div');
for (i = 0; i < d.length; i++) {
if (d[i].className == 'log') {
flip(d[i]);
}
}
}
}
// -->
</script>
</head>
<body>
<h2 align='center'>Default test</h2><table border='1' align="center">
<tr>
<td>Tests passed/Failed/Skipped:</td><td>0/1/0</td>
</tr><tr>
<td>Started on:</td><td>Mon Jun 14 12:52:09 IST 2021</td>
</tr>
<tr><td>Total time:</td><td>0 seconds (62 ms)</td>
</tr><tr>
<td>Included groups:</td><td></td>
</tr><tr>
<td>Excluded groups:</td><td></td>
</tr>
</table><p/>
<small><i>(Hover the method name to see the test class name)</i></small><p/>
<table width='100%' border='1' class='invocation-failed'>
<tr><td colspan='4' align='center'><b>FAILED TESTS</b></td></tr>
<tr><td><b>Test method</b></td>
<td width="30%"><b>Exception</b></td>
<td width="10%"><b>Time (seconds)</b></td>
<td><b>Instance</b></td>
</tr>
<tr>
<td title='Hills_BDD.Maven.AppTestTest.AppTest()'><b>AppTest</b><br>Test class: Hills_BDD.Maven.AppTestTest</td>
<td><div><pre>java.lang.RuntimeException: Test not implemented
at Hills_BDD.Maven.AppTestTest.AppTest(AppTestTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
</pre></div><a href='#' onClick='toggleBox("stack-trace250370634", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
<div class='stack-trace' id='stack-trace250370634'><pre>java.lang.RuntimeException: Test not implemented
at Hills_BDD.Maven.AppTestTest.AppTest(AppTestTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
</pre></div></td>
<td>0</td>
<td>Hills_BDD.Maven.AppTestTest@d2cc05a</td></tr>
</table><p>
</body>
</html>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitXMLReporter -->
<testsuite hostname="DESKTOP-FKR3TO5" ignored="0" name="Default test" tests="1" failures="1" timestamp="14 Jun 2021 07:22:09 GMT" time="0.062" errors="0">
<testcase name="AppTest" time="0.019" classname="Hills_BDD.Maven.AppTestTest">
<failure type="java.lang.RuntimeException" message="Test not implemented">
<![CDATA[java.lang.RuntimeException: Test not implemented
at Hills_BDD.Maven.AppTestTest.AppTest(AppTestTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
]]>
</failure>
</testcase> <!-- AppTest -->
</testsuite> <!-- Default test -->

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite guice-stage="DEVELOPMENT" name="Failed suite [Default suite]">
<test thread-count="5" name="Default test(failed)">
<classes>
<class name="Hills_BDD.Maven.AppTestTest">
<methods>
<include name="AppTest"/>
</methods>
</class> <!-- Hills_BDD.Maven.AppTestTest -->
</classes>
</test> <!-- Default test(failed) -->
</suite> <!-- Failed suite [Default suite] -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

View File

@ -0,0 +1,45 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>TestNG Report</title>
<style type="text/css">table {margin-bottom:10px;border-collapse:collapse;empty-cells:show}th,td {border:1px solid #009;padding:.25em .5em}th {vertical-align:bottom}td {vertical-align:top}table a {font-weight:bold}.stripe td {background-color: #E6EBF9}.num {text-align:right}.passedodd td {background-color: #3F3}.passedeven td {background-color: #0A0}.skippedodd td {background-color: #DDD}.skippedeven td {background-color: #CCC}.failedodd td,.attn {background-color: #F33}.failedeven td,.stripe .attn {background-color: #D00}.stacktrace {white-space:pre;font-family:monospace}.totop {font-size:85%;text-align:center;border-bottom:2px solid #000}.invisible {display:none}</style>
</head>
<body>
<table>
<tr><th>Test</th><th># Passed</th><th># Skipped</th><th># Failed</th><th>Time (ms)</th><th>Included Groups</th><th>Excluded Groups</th></tr>
<tr><th colspan="7">Default suite</th></tr>
<tr><td><a href="#t0">Default test</a></td><td class="num">0</td><td class="num">0</td><td class="num attn">1</td><td class="num">62</td><td></td><td></td></tr>
</table>
<table id='summary'><thead><tr><th>Class</th><th>Method</th><th>Start</th><th>Time (ms)</th></tr></thead><tbody><tr><th colspan="4">Default suite</th></tr></tbody><tbody id="t0"><tr><th colspan="4">Default test &#8212; failed</th></tr><tr class="failedeven"><td rowspan="1">Hills_BDD.Maven.AppTestTest</td><td><a href="#m0">AppTest</a></td><td rowspan="1">1623655329200</td><td rowspan="1">19</td></tr></tbody>
</table>
<h2>Default test</h2><h3 id="m0">Hills_BDD.Maven.AppTestTest#AppTest</h3><table class="result"><tr><th>Exception</th></tr><tr><td><div class="stacktrace">java.lang.RuntimeException: Test not implemented
at Hills_BDD.Maven.AppTestTest.AppTest(AppTestTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
</div></td></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

View File

@ -0,0 +1,263 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>TestNG reports</title>
<link type="text/css" href="testng-reports.css" rel="stylesheet" />
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="testng-reports.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type='text/javascript'>
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
var suiteTableInitFunctions = new Array();
var suiteTableData = new Array();
</script>
<!--
<script type="text/javascript" src="jquery-ui/js/jquery-ui-1.8.16.custom.min.js"></script>
-->
</head>
<body>
<div class="top-banner-root">
<span class="top-banner-title-font">Test results</span>
<br/>
<span class="top-banner-font-1">1 suite, 1 failed test</span>
</div> <!-- top-banner-root -->
<div class="navigator-root">
<div class="navigator-suite-header">
<span>All suites</span>
<a href="#" class="collapse-all-link" title="Collapse/expand all the suites">
<img class="collapse-all-icon" src="collapseall.gif">
</img> <!-- collapse-all-icon -->
</a> <!-- collapse-all-link -->
</div> <!-- navigator-suite-header -->
<div class="suite">
<div class="rounded-window">
<div class="suite-header light-rounded-window-top">
<a href="#" class="navigator-link" panel-name="suite-Default_suite">
<span class="suite-name border-failed">Default suite</span>
</a> <!-- navigator-link -->
</div> <!-- suite-header light-rounded-window-top -->
<div class="navigator-suite-content">
<div class="suite-section-title">
<span>Info</span>
</div> <!-- suite-section-title -->
<div class="suite-section-content">
<ul>
<li>
<a href="#" class="navigator-link " panel-name="test-xml-Default_suite">
<span>C:\Users\hp\AppData\Local\Temp\testng-eclipse--1704713121\testng-customsuite.xml</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" class="navigator-link " panel-name="testlist-Default_suite">
<span class="test-stats">1 test</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" class="navigator-link " panel-name="group-Default_suite">
<span>0 groups</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" class="navigator-link " panel-name="times-Default_suite">
<span>Times</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" class="navigator-link " panel-name="reporter-Default_suite">
<span>Reporter output</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" class="navigator-link " panel-name="ignored-methods-Default_suite">
<span>Ignored methods</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" class="navigator-link " panel-name="chronological-Default_suite">
<span>Chronological view</span>
</a> <!-- navigator-link -->
</li>
</ul>
</div> <!-- suite-section-content -->
<div class="result-section">
<div class="suite-section-title">
<span>Results</span>
</div> <!-- suite-section-title -->
<div class="suite-section-content">
<ul>
<li>
<span class="method-stats">1 method, 1 failed, </span>
</li>
<li>
<span class="method-list-title failed">Failed methods</span>
<span class="show-or-hide-methods failed">
<a href="#" panel-name="suite-Default_suite" class="hide-methods failed suite-Default_suite"> (hide)</a> <!-- hide-methods failed suite-Default_suite -->
<a href="#" panel-name="suite-Default_suite" class="show-methods failed suite-Default_suite"> (show)</a> <!-- show-methods failed suite-Default_suite -->
</span>
<div class="method-list-content failed suite-Default_suite">
<span>
<img width="3%" src="failed.png"/>
<a href="#" class="method navigator-link" panel-name="suite-Default_suite" title="Hills_BDD.Maven.AppTestTest" hash-for-method="AppTest">AppTest</a> <!-- method navigator-link -->
</span>
<br/>
</div> <!-- method-list-content failed suite-Default_suite -->
</li>
</ul>
</div> <!-- suite-section-content -->
</div> <!-- result-section -->
</div> <!-- navigator-suite-content -->
</div> <!-- rounded-window -->
</div> <!-- suite -->
</div> <!-- navigator-root -->
<div class="wrapper">
<div class="main-panel-root">
<div panel-name="suite-Default_suite" class="panel Default_suite">
<div class="suite-Default_suite-class-failed">
<div class="main-panel-header rounded-window-top">
<img src="failed.png"/>
<span class="class-name">Hills_BDD.Maven.AppTestTest</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<div class="method">
<div class="method-content">
<a name="AppTest">
</a> <!-- AppTest -->
<span class="method-name">AppTest</span>
<div class="stack-trace">java.lang.RuntimeException: Test not implemented
at Hills_BDD.Maven.AppTestTest.AppTest(AppTestTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
</div> <!-- stack-trace -->
</div> <!-- method-content -->
</div> <!-- method -->
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- suite-Default_suite-class-failed -->
</div> <!-- panel Default_suite -->
<div panel-name="test-xml-Default_suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">C:\Users\hp\AppData\Local\Temp\testng-eclipse--1704713121\testng-customsuite.xml</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE suite SYSTEM &quot;http://testng.org/testng-1.0.dtd&quot;&gt;
&lt;suite guice-stage=&quot;DEVELOPMENT&quot; name=&quot;Default suite&quot;&gt;
&lt;test thread-count=&quot;5&quot; verbose=&quot;2&quot; name=&quot;Default test&quot;&gt;
&lt;classes&gt;
&lt;class name=&quot;Hills_BDD.Maven.AppTestTest&quot;/&gt;
&lt;/classes&gt;
&lt;/test&gt; &lt;!-- Default test --&gt;
&lt;/suite&gt; &lt;!-- Default suite --&gt;
</pre>
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="testlist-Default_suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Tests for Default suite</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<ul>
<li>
<span class="test-name">Default test (1 class)</span>
</li>
</ul>
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="group-Default_suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Groups for Default suite</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="times-Default_suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Times for Default suite</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<div class="times-div">
<script type="text/javascript">
suiteTableInitFunctions.push('tableData_Default_suite');
function tableData_Default_suite() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'Number');
data.addColumn('string', 'Method');
data.addColumn('string', 'Class');
data.addColumn('number', 'Time (ms)');
data.addRows(1);
data.setCell(0, 0, 0)
data.setCell(0, 1, 'AppTest')
data.setCell(0, 2, 'Hills_BDD.Maven.AppTestTest')
data.setCell(0, 3, 19);
window.suiteTableData['Default_suite']= { tableData: data, tableDiv: 'times-div-Default_suite'}
return data;
}
</script>
<span class="suite-total-time">Total running time: 19 ms</span>
<div id="times-div-Default_suite">
</div> <!-- times-div-Default_suite -->
</div> <!-- times-div -->
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="reporter-Default_suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Reporter output for Default suite</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="ignored-methods-Default_suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">0 ignored methods</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="chronological-Default_suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Methods in chronological order</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<div class="chronological-class">
<div class="chronological-class-name">Hills_BDD.Maven.AppTestTest</div> <!-- chronological-class-name -->
<div class="test-method">
<img src="failed.png">
</img>
<span class="method-name">AppTest</span>
<span class="method-start">0 ms</span>
</div> <!-- test-method -->
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
</div> <!-- main-panel-root -->
</div> <!-- wrapper -->
</body>
</html>

4
maven/test-output/jquery-1.7.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitReportReporter -->
<testsuite skipped="0" hostname="DESKTOP-FKR3TO5" name="Hills_BDD.Maven.AppTestTest" tests="1" failures="0" timestamp="14 Jun 2021 07:22:09 GMT" time="0.019" errors="1">
<testcase name="AppTest" time="0.019" classname="Hills_BDD.Maven.AppTestTest">
<error type="java.lang.RuntimeException" message="Test not implemented">
<![CDATA[java.lang.RuntimeException: Test not implemented
at Hills_BDD.Maven.AppTestTest.AppTest(AppTestTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
]]>
</error>
</testcase> <!-- AppTest -->
</testsuite> <!-- Hills_BDD.Maven.AppTestTest -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

View File

@ -0,0 +1 @@
[SuiteResult context=Default test]

View File

@ -0,0 +1,28 @@
<table border='1'>
<tr>
<th>Class name</th>
<th>Method name</th>
<th>Groups</th>
</tr><tr>
<td>Hills_BDD.Maven.AppTestTest</td>
<td>&nbsp;</td><td>&nbsp;</td></tr>
<tr>
<td align='center' colspan='3'>@Test</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>AppTest</td>
<td>&nbsp;</td></tr>
<tr>
<td align='center' colspan='3'>@BeforeClass</td>
</tr>
<tr>
<td align='center' colspan='3'>@BeforeMethod</td>
</tr>
<tr>
<td align='center' colspan='3'>@AfterMethod</td>
</tr>
<tr>
<td align='center' colspan='3'>@AfterClass</td>
</tr>
</table>

View File

@ -0,0 +1 @@
<h2>Groups used for this test run</h2>

View File

@ -0,0 +1,6 @@
<html><head><title>Results for Default suite</title></head>
<frameset cols="26%,74%">
<frame src="toc.html" name="navFrame">
<frame src="main.html" name="mainFrame">
</frameset>
</html>

View File

@ -0,0 +1,2 @@
<html><head><title>Results for Default suite</title></head>
<body>Select a result on the left-hand pane.</body></html>

View File

@ -0,0 +1,6 @@
<h2>Methods run, sorted chronologically</h2><h3>&gt;&gt; means before, &lt;&lt; means after</h3><p/><br/><em>Default suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
<table border="1">
<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
<tr bgcolor="b7bfc0"> <td>21/06/14 12:52:09</td> <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="AppTestTest.AppTest()[pri:0, instance:Hills_BDD.Maven.AppTestTest@d2cc05a]">AppTest</td>
<td>main@985397764</td> <td></td> </tr>
</table>

View File

@ -0,0 +1,2 @@
<h2>Methods that were not run</h2><table>
</table>

View File

@ -0,0 +1,6 @@
<h2>Methods run, sorted chronologically</h2><h3>&gt;&gt; means before, &lt;&lt; means after</h3><p/><br/><em>Default suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
<table border="1">
<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
<tr bgcolor="b7bfc0"> <td>21/06/14 12:52:09</td> <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="AppTestTest.AppTest()[pri:0, instance:Hills_BDD.Maven.AppTestTest@d2cc05a]">AppTest</td>
<td>main@985397764</td> <td></td> </tr>
</table>

View File

@ -0,0 +1 @@
<h2>Reporter output</h2><table></table>

View File

@ -0,0 +1 @@
<html><head><title>testng.xml for Default suite</title></head><body><tt>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt; <br/>&lt;!DOCTYPE&nbsp;suite&nbsp;SYSTEM&nbsp;"http://testng.org/testng-1.0.dtd"&gt; <br/>&lt;suite&nbsp;guice-stage="DEVELOPMENT"&nbsp;name="Default&nbsp;suite"&gt; <br/>&nbsp;&nbsp;&lt;test&nbsp;thread-count="5"&nbsp;verbose="2"&nbsp;name="Default&nbsp;test"&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;classes&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class&nbsp;name="Hills_BDD.Maven.AppTestTest"/&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/classes&gt; <br/>&nbsp;&nbsp;&lt;/test&gt;&nbsp;&lt;!--&nbsp;Default&nbsp;test&nbsp;--&gt; <br/>&lt;/suite&gt;&nbsp;&lt;!--&nbsp;Default&nbsp;suite&nbsp;--&gt; <br/></tt></body></html>

View File

@ -0,0 +1,30 @@
<html>
<head>
<title>Results for Default suite</title>
<link href="../testng.css" rel="stylesheet" type="text/css" />
<link href="../my-testng.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h3><p align="center">Results for<br/><em>Default suite</em></p></h3>
<table border='1' width='100%'>
<tr valign='top'>
<td>1 test</td>
<td><a target='mainFrame' href='classes.html'>1 class</a></td>
<td>1 method:<br/>
&nbsp;&nbsp;<a target='mainFrame' href='methods.html'>chronological</a><br/>
&nbsp;&nbsp;<a target='mainFrame' href='methods-alphabetical.html'>alphabetical</a><br/>
&nbsp;&nbsp;<a target='mainFrame' href='methods-not-run.html'>not run (0)</a></td>
</tr>
<tr>
<td><a target='mainFrame' href='groups.html'>0 group</a></td>
<td><a target='mainFrame' href='reporter-output.html'>reporter output</a></td>
<td><a target='mainFrame' href='testng.xml.html'>testng.xml</a></td>
</tr></table>
<table width='100%' class='test-failed'>
<tr><td>
<table style='width: 100%'><tr><td valign='top'>Default test (0/1/0)</td><td valign='top' align='right'>
<a href='Default test.html' target='mainFrame'>Results</a>
</td></tr></table>
</td></tr><p/>
</table>
</body></html>

View File

@ -0,0 +1,9 @@
<html>
<head><title></title><link href="./testng.css" rel="stylesheet" type="text/css" />
<link href="./my-testng.css" rel="stylesheet" type="text/css" />
</head><body>
<h2><p align='center'>Test results</p></h2>
<table border='1' width='100%' class='main-page'><tr><th>Suite</th><th>Passed</th><th>Failed</th><th>Skipped</th><th>testng.xml</th></tr>
<tr align='center' class='invocation-failed'><td><em>Total</em></td><td><em>0</em></td><td><em>1</em></td><td><em>0</em></td><td>&nbsp;</td></tr>
<tr align='center' class='invocation-failed'><td><a href='Default suite/index.html'>Default suite</a></td>
<td>0</td><td>1</td><td>0</td><td><a href='Default suite/testng.xml.html'>Link</a></td></tr></table></body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1019 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite guice-stage="DEVELOPMENT" name="Failed suite [Default suite]">
<test thread-count="5" name="Default test(failed)">
<classes>
<class name="Hills_BDD.Maven.AppTestTest">
<methods>
<include name="AppTest"/>
</methods>
</class> <!-- Hills_BDD.Maven.AppTestTest -->
</classes>
</test> <!-- Default test(failed) -->
</suite> <!-- Failed suite [Default suite] -->

View File

@ -0,0 +1,309 @@
body {
margin: 0px 0px 5px 5px;
}
ul {
margin: 0px;
}
li {
list-style-type: none;
}
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.navigator-selected {
background: #ffa500;
}
.wrapper {
position: absolute;
top: 60px;
bottom: 0;
left: 400px;
right: 0;
overflow: auto;
}
.navigator-root {
position: absolute;
top: 60px;
bottom: 0;
left: 0;
width: 400px;
overflow-y: auto;
}
.suite {
margin: 0px 10px 10px 0px;
background-color: #fff8dc;
}
.suite-name {
padding-left: 10px;
font-size: 25px;
font-family: Times;
}
.main-panel-header {
padding: 5px;
background-color: #9FB4D9; //afeeee;
font-family: monospace;
font-size: 18px;
}
.main-panel-content {
padding: 5px;
margin-bottom: 10px;
background-color: #DEE8FC; //d0ffff;
}
.rounded-window {
border-radius: 10px;
border-style: solid;
border-width: 1px;
}
.rounded-window-top {
border-top-right-radius: 10px 10px;
border-top-left-radius: 10px 10px;
border-style: solid;
border-width: 1px;
overflow: auto;
}
.light-rounded-window-top {
border-top-right-radius: 10px 10px;
border-top-left-radius: 10px 10px;
}
.rounded-window-bottom {
border-style: solid;
border-width: 0px 1px 1px 1px;
border-bottom-right-radius: 10px 10px;
border-bottom-left-radius: 10px 10px;
overflow: auto;
}
.method-name {
font-size: 12px;
font-family: monospace;
}
.method-content {
border-style: solid;
border-width: 0px 0px 1px 0px;
margin-bottom: 10;
padding-bottom: 5px;
width: 80%;
}
.parameters {
font-size: 14px;
font-family: monospace;
}
.stack-trace {
white-space: pre;
font-family: monospace;
font-size: 12px;
font-weight: bold;
margin-top: 0px;
margin-left: 20px;
}
.testng-xml {
font-family: monospace;
}
.method-list-content {
margin-left: 10px;
}
.navigator-suite-content {
margin-left: 10px;
font: 12px 'Lucida Grande';
}
.suite-section-title {
margin-top: 10px;
width: 80%;
border-style: solid;
border-width: 1px 0px 0px 0px;
font-family: Times;
font-size: 18px;
font-weight: bold;
}
.suite-section-content {
list-style-image: url(bullet_point.png);
}
.top-banner-root {
position: absolute;
top: 0;
height: 45px;
left: 0;
right: 0;
padding: 5px;
margin: 0px 0px 5px 0px;
background-color: #0066ff;
font-family: Times;
color: #fff;
text-align: center;
}
.top-banner-title-font {
font-size: 25px;
}
.test-name {
font-family: 'Lucida Grande';
font-size: 16px;
}
.suite-icon {
padding: 5px;
float: right;
height: 20;
}
.test-group {
font: 20px 'Lucida Grande';
margin: 5px 5px 10px 5px;
border-width: 0px 0px 1px 0px;
border-style: solid;
padding: 5px;
}
.test-group-name {
font-weight: bold;
}
.method-in-group {
font-size: 16px;
margin-left: 80px;
}
table.google-visualization-table-table {
width: 100%;
}
.reporter-method-name {
font-size: 14px;
font-family: monospace;
}
.reporter-method-output-div {
padding: 5px;
margin: 0px 0px 5px 20px;
font-size: 12px;
font-family: monospace;
border-width: 0px 0px 0px 1px;
border-style: solid;
}
.ignored-class-div {
font-size: 14px;
font-family: monospace;
}
.ignored-methods-div {
padding: 5px;
margin: 0px 0px 5px 20px;
font-size: 12px;
font-family: monospace;
border-width: 0px 0px 0px 1px;
border-style: solid;
}
.border-failed {
border-top-left-radius: 10px 10px;
border-bottom-left-radius: 10px 10px;
border-style: solid;
border-width: 0px 0px 0px 10px;
border-color: #f00;
}
.border-skipped {
border-top-left-radius: 10px 10px;
border-bottom-left-radius: 10px 10px;
border-style: solid;
border-width: 0px 0px 0px 10px;
border-color: #edc600;
}
.border-passed {
border-top-left-radius: 10px 10px;
border-bottom-left-radius: 10px 10px;
border-style: solid;
border-width: 0px 0px 0px 10px;
border-color: #19f52d;
}
.times-div {
text-align: center;
padding: 5px;
}
.suite-total-time {
font: 16px 'Lucida Grande';
}
.configuration-suite {
margin-left: 20px;
}
.configuration-test {
margin-left: 40px;
}
.configuration-class {
margin-left: 60px;
}
.configuration-method {
margin-left: 80px;
}
.test-method {
margin-left: 100px;
}
.chronological-class {
background-color: #0ccff;
border-style: solid;
border-width: 0px 0px 1px 1px;
}
.method-start {
float: right;
}
.chronological-class-name {
padding: 0px 0px 0px 5px;
color: #008;
}
.after, .before, .test-method {
font-family: monospace;
font-size: 14px;
}
.navigator-suite-header {
font-size: 22px;
margin: 0px 10px 5px 0px;
background-color: #deb887;
text-align: center;
}
.collapse-all-icon {
padding: 5px;
float: right;
}

View File

@ -0,0 +1,122 @@
$(document).ready(function() {
$('a.navigator-link').click(function() {
// Extract the panel for this link
var panel = getPanelName($(this));
// Mark this link as currently selected
$('.navigator-link').parent().removeClass('navigator-selected');
$(this).parent().addClass('navigator-selected');
showPanel(panel);
});
installMethodHandlers('failed');
installMethodHandlers('skipped');
installMethodHandlers('passed', true); // hide passed methods by default
$('a.method').click(function() {
showMethod($(this));
return false;
});
// Hide all the panels and display the first one (do this last
// to make sure the click() will invoke the listeners)
$('.panel').hide();
$('.navigator-link').first().click();
// Collapse/expand the suites
$('a.collapse-all-link').click(function() {
var contents = $('.navigator-suite-content');
if (contents.css('display') == 'none') {
contents.show();
} else {
contents.hide();
}
});
});
// The handlers that take care of showing/hiding the methods
function installMethodHandlers(name, hide) {
function getContent(t) {
return $('.method-list-content.' + name + "." + t.attr('panel-name'));
}
function getHideLink(t, name) {
var s = 'a.hide-methods.' + name + "." + t.attr('panel-name');
return $(s);
}
function getShowLink(t, name) {
return $('a.show-methods.' + name + "." + t.attr('panel-name'));
}
function getMethodPanelClassSel(element, name) {
var panelName = getPanelName(element);
var sel = '.' + panelName + "-class-" + name;
return $(sel);
}
$('a.hide-methods.' + name).click(function() {
var w = getContent($(this));
w.hide();
getHideLink($(this), name).hide();
getShowLink($(this), name).show();
getMethodPanelClassSel($(this), name).hide();
});
$('a.show-methods.' + name).click(function() {
var w = getContent($(this));
w.show();
getHideLink($(this), name).show();
getShowLink($(this), name).hide();
showPanel(getPanelName($(this)));
getMethodPanelClassSel($(this), name).show();
});
if (hide) {
$('a.hide-methods.' + name).click();
} else {
$('a.show-methods.' + name).click();
}
}
function getHashForMethod(element) {
return element.attr('hash-for-method');
}
function getPanelName(element) {
return element.attr('panel-name');
}
function showPanel(panelName) {
$('.panel').hide();
var panel = $('.panel[panel-name="' + panelName + '"]');
panel.show();
}
function showMethod(element) {
var hashTag = getHashForMethod(element);
var panelName = getPanelName(element);
showPanel(panelName);
var current = document.location.href;
var base = current.substring(0, current.indexOf('#'))
document.location.href = base + '#' + hashTag;
var newPosition = $(document).scrollTop() - 65;
$(document).scrollTop(newPosition);
}
function drawTable() {
for (var i = 0; i < suiteTableInitFunctions.length; i++) {
window[suiteTableInitFunctions[i]]();
}
for (var k in window.suiteTableData) {
var v = window.suiteTableData[k];
var div = v.tableDiv;
var data = v.tableData
var table = new google.visualization.Table(document.getElementById(div));
table.draw(data, {
showRowNumber : false
});
}
}

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<testng-results skipped="0" failed="1" ignored="0" total="1" passed="0">
<reporter-output>
</reporter-output>
<suite name="Default suite" duration-ms="62" started-at="2021-06-14T07:22:09Z" finished-at="2021-06-14T07:22:09Z">
<groups>
</groups>
<test name="Default test" duration-ms="62" started-at="2021-06-14T07:22:09Z" finished-at="2021-06-14T07:22:09Z">
<class name="Hills_BDD.Maven.AppTestTest">
<test-method status="FAIL" signature="AppTest()[pri:0, instance:Hills_BDD.Maven.AppTestTest@d2cc05a]" name="AppTest" duration-ms="19" started-at="2021-06-14T07:22:09Z" finished-at="2021-06-14T07:22:09Z">
<exception class="java.lang.RuntimeException">
<message>
<![CDATA[Test not implemented]]>
</message>
<full-stacktrace>
<![CDATA[java.lang.RuntimeException: Test not implemented
at Hills_BDD.Maven.AppTestTest.AppTest(AppTestTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
]]>
</full-stacktrace>
</exception> <!-- java.lang.RuntimeException -->
<reporter-output>
</reporter-output>
</test-method> <!-- AppTest -->
</class> <!-- Hills_BDD.Maven.AppTestTest -->
</test> <!-- Default test -->
</suite> <!-- Default suite -->
</testng-results>

View File

@ -0,0 +1,9 @@
.invocation-failed, .test-failed { background-color: #DD0000; }
.invocation-percent, .test-percent { background-color: #006600; }
.invocation-passed, .test-passed { background-color: #00AA00; }
.invocation-skipped, .test-skipped { background-color: #CCCC00; }
.main-page {
font-size: x-large;
}