Automation code pushed to Git repo
This commit is contained in:
parent
285e282449
commit
98d75c1a87
|
@ -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>
|
|
@ -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>
|
|
@ -0,0 +1,4 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding/<project>=UTF-8
|
|
@ -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
|
|
@ -0,0 +1,4 @@
|
|||
activeProfiles=
|
||||
eclipse.preferences.version=1
|
||||
resolveWorkspaceProjects=true
|
||||
version=1
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,2 @@
|
|||
browser.baseURL=https://testcolpal.aisselkolm.com/hills_staging/login
|
||||
browser.name=chrome
|
|
@ -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 -->
|
|
@ -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>
|
|
@ -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
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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();
|
||||
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -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 {
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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|
|
|
@ -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|
|
||||
|
|
@ -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|
|
|
@ -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| | | |
|
|
@ -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|
|
|
@ -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>
|
|
@ -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
|
|
@ -0,0 +1,2 @@
|
|||
/classes/
|
||||
/test-classes/
|
|
@ -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; });
|
||||
}
|
|
@ -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
|
@ -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"
|
||||
});
|
||||
});
|
|
@ -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;
|
||||
}
|
|
@ -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={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},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> </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>
|
|
@ -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": []
|
||||
}
|
||||
]
|
|
@ -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>
|
|
@ -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>
|
|
@ -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 -->
|
|
@ -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 |
|
@ -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 — 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 |
|
@ -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>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
|
||||
<suite guice-stage="DEVELOPMENT" name="Default suite">
|
||||
<test thread-count="5" verbose="2" name="Default test">
|
||||
<classes>
|
||||
<class name="Hills_BDD.Maven.AppTestTest"/>
|
||||
</classes>
|
||||
</test> <!-- Default test -->
|
||||
</suite> <!-- Default suite -->
|
||||
</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>
|
File diff suppressed because one or more lines are too long
|
@ -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 |
|
@ -0,0 +1 @@
|
|||
[SuiteResult context=Default test]
|
|
@ -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> </td><td> </td></tr>
|
||||
<tr>
|
||||
<td align='center' colspan='3'>@Test</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>AppTest</td>
|
||||
<td> </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>
|
|
@ -0,0 +1 @@
|
|||
<h2>Groups used for this test run</h2>
|
|
@ -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>
|
|
@ -0,0 +1,2 @@
|
|||
<html><head><title>Results for Default suite</title></head>
|
||||
<body>Select a result on the left-hand pane.</body></html>
|
|
@ -0,0 +1,6 @@
|
|||
<h2>Methods run, sorted chronologically</h2><h3>>> means before, << 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> </td><td> </td><td> </td><td> </td><td> </td><td title="AppTestTest.AppTest()[pri:0, instance:Hills_BDD.Maven.AppTestTest@d2cc05a]">AppTest</td>
|
||||
<td>main@985397764</td> <td></td> </tr>
|
||||
</table>
|
|
@ -0,0 +1,2 @@
|
|||
<h2>Methods that were not run</h2><table>
|
||||
</table>
|
|
@ -0,0 +1,6 @@
|
|||
<h2>Methods run, sorted chronologically</h2><h3>>> means before, << 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> </td><td> </td><td> </td><td> </td><td> </td><td title="AppTestTest.AppTest()[pri:0, instance:Hills_BDD.Maven.AppTestTest@d2cc05a]">AppTest</td>
|
||||
<td>main@985397764</td> <td></td> </tr>
|
||||
</table>
|
|
@ -0,0 +1 @@
|
|||
<h2>Reporter output</h2><table></table>
|
|
@ -0,0 +1 @@
|
|||
<html><head><title>testng.xml for Default suite</title></head><body><tt><?xml version="1.0" encoding="UTF-8"?>
<br/><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<br/><suite guice-stage="DEVELOPMENT" name="Default suite">
<br/> <test thread-count="5" verbose="2" name="Default test">
<br/> <classes>
<br/> <class name="Hills_BDD.Maven.AppTestTest"/>
<br/> </classes>
<br/> </test> <!-- Default test -->
<br/></suite> <!-- Default suite -->
<br/></tt></body></html>
|
|
@ -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/>
|
||||
<a target='mainFrame' href='methods.html'>chronological</a><br/>
|
||||
<a target='mainFrame' href='methods-alphabetical.html'>alphabetical</a><br/>
|
||||
<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>
|
|
@ -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> </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 |
|
@ -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] -->
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
});
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue