├── .DS_Store ├── .classpath ├── .gitattributes ├── .gitignore ├── .project ├── .settings ├── org.eclipse.core.resources.prefs ├── org.eclipse.jdt.core.prefs └── org.eclipse.m2e.core.prefs ├── README.md ├── app.log ├── pom.xml ├── screenshots └── freecrmloginpage.png ├── src ├── main │ ├── java │ │ └── com │ │ │ ├── crm │ │ │ └── qa │ │ │ │ ├── base │ │ │ │ └── TestBase.java │ │ │ │ ├── config │ │ │ │ └── config.properties │ │ │ │ ├── pages │ │ │ │ ├── ContactsPage.java │ │ │ │ ├── DealsPage.java │ │ │ │ ├── HomePage.java │ │ │ │ ├── LoginPage.java │ │ │ │ ├── SignUpPage.java │ │ │ │ └── TasksPage.java │ │ │ │ ├── testdata │ │ │ │ └── FreeCrmTestData.xlsx │ │ │ │ └── util │ │ │ │ ├── TestUtil.java │ │ │ │ └── WebEventListener.java │ │ │ └── qa │ │ │ └── ExtentReportListener │ │ │ └── ExtentReporterNG.java │ └── resources │ │ ├── testng.xml │ │ └── testng_sanity.xml └── test │ └── java │ └── com │ └── crm │ └── qa │ └── testcases │ ├── ContactsPageTest.java │ ├── FreeCrmTest.java │ ├── HomePageTest.java │ └── LoginPageTest.java ├── target ├── classes │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── FreeCRMTestAutomation │ │ │ └── FreeCRMTest │ │ │ ├── pom.properties │ │ │ └── pom.xml │ ├── com │ │ ├── crm │ │ │ └── qa │ │ │ │ ├── base │ │ │ │ └── TestBase.class │ │ │ │ ├── pages │ │ │ │ ├── ContactsPage.class │ │ │ │ ├── DealsPage.class │ │ │ │ ├── HomePage.class │ │ │ │ ├── LoginPage.class │ │ │ │ ├── SignUpPage.class │ │ │ │ └── TasksPage.class │ │ │ │ └── util │ │ │ │ ├── TestUtil.class │ │ │ │ └── WebEventListener.class │ │ └── qa │ │ │ └── ExtentReportListener │ │ │ └── ExtentReporterNG.class │ ├── testng.xml │ └── testng_sanity.xml ├── maven-status │ └── maven-compiler-plugin │ │ └── compile │ │ └── default-compile │ │ ├── createdFiles.lst │ │ └── inputFiles.lst └── test-classes │ └── com │ └── crm │ └── qa │ └── testcases │ ├── ContactsPageTest.class │ ├── HomePageTest.class │ └── LoginPageTest.class └── test-output ├── Default suite ├── Default test.html ├── Default test.xml └── testng-failed.xml ├── Extent.html ├── FREE CRM Application Test Automation Test Suite ├── Free CRM App Test Cases.html ├── Free CRM App Test Cases.xml └── testng-failed.xml ├── TestSuite ├── testGuru.html └── testGuru.xml ├── bullet_point.png ├── collapseall.gif ├── emailable-report.html ├── failed.png ├── index.html ├── jquery-1.7.1.min.js ├── junitreports ├── TEST-com.crm.qa.testcases.ContactsPageTest.xml ├── TEST-com.crm.qa.testcases.FreeCrmTest.xml ├── TEST-com.crm.qa.testcases.HomePageTest.xml ├── TEST-com.crm.qa.testcases.LoginPageTest.xml └── TEST-com.crm.qa.testcases.TestMultipleSession.xml ├── navigator-bullet.png ├── old ├── Default suite │ ├── Default test.properties │ ├── classes.html │ ├── groups.html │ ├── index.html │ ├── main.html │ ├── methods-alphabetical.html │ ├── methods-not-run.html │ ├── methods.html │ ├── reporter-output.html │ ├── testng.xml.html │ └── toc.html ├── FREE CRM Application Test Automation Test Suite │ ├── Free CRM App Test Cases.properties │ ├── classes.html │ ├── groups.html │ ├── index.html │ ├── main.html │ ├── methods-alphabetical.html │ ├── methods-not-run.html │ ├── methods.html │ ├── reporter-output.html │ ├── testng.xml.html │ └── toc.html ├── TestSuite │ ├── classes.html │ ├── groups.html │ ├── index.html │ ├── main.html │ ├── methods-alphabetical.html │ ├── methods-not-run.html │ ├── methods.html │ ├── reporter-output.html │ ├── testGuru.properties │ ├── testng.xml.html │ └── toc.html └── index.html ├── passed.png ├── skipped.png ├── testng-failed.xml ├── testng-reports.css ├── testng-reports.js ├── testng-results.xml └── testng.css /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/.DS_Store -------------------------------------------------------------------------------- /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | test-output/* linguist-vendored 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | FreeCRMTest 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.m2e.core.maven2Builder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.m2e.core.maven2Nature 22 | 23 | 24 | -------------------------------------------------------------------------------- /.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding//src/main/java=UTF-8 3 | encoding//src/main/resources=UTF-8 4 | encoding//src/test/java=UTF-8 5 | encoding/=UTF-8 6 | -------------------------------------------------------------------------------- /.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 3 | org.eclipse.jdt.core.compiler.compliance=1.5 4 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 5 | org.eclipse.jdt.core.compiler.source=1.5 6 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Page Object model Test automation framework using Selenium with Java, TestNG and Maven- 2 | This is a sample project to demonstrate what is page object model framework and how it can used in selenium to automate any application. 3 | TestNG is used as test framework. 4 | 5 | Dependency 6 | Java 7 | Maven 8 | 9 | ###libraries used 10 | Selenium 11 | TestNG 12 | log4j 13 | Extent Reports 14 | 15 | ### Steps to clone execute the tests 16 | ``` 17 | git clone https://github.com/naveenanimation20/PageObjectModel 18 | cd PageObjectModel 19 | mvn clean test 20 | ``` 21 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | FreeCRMTestAutomation 6 | FreeCRMTest 7 | 0.0.1-SNAPSHOT 8 | jar 9 | 10 | FreeCRMTest 11 | http://maven.apache.org 12 | 13 | 14 | UTF-8 15 | 1.6 16 | 1.6 17 | 18 | 19 | 20 | 21 | 22 | org.seleniumhq.selenium 23 | selenium-java 24 | 3.14.0 25 | 26 | 27 | 28 | org.testng 29 | testng 30 | 6.11 31 | compile 32 | 33 | 34 | 35 | 36 | org.apache.poi 37 | poi 38 | 3.16-beta2 39 | 40 | 41 | 42 | 43 | org.apache.poi 44 | poi-ooxml 45 | 3.9 46 | 47 | 48 | org.apache.poi 49 | poi-ooxml-schemas 50 | 3.9 51 | 52 | 53 | org.apache.poi 54 | poi-scratchpad 55 | 3.9 56 | 57 | 58 | org.apache.poi 59 | ooxml-schemas 60 | 1.1 61 | 62 | 63 | 64 | org.apache.poi 65 | openxml4j 66 | 1.0-beta 67 | 68 | 69 | org.apache.poi 70 | poi 71 | 3.9 72 | 73 | 74 | 75 | 76 | 77 | com.relevantcodes 78 | extentreports 79 | 2.41.2 80 | 81 | 82 | 83 | 84 | commons-io 85 | commons-io 86 | 2.6 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /screenshots/freecrmloginpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/screenshots/freecrmloginpage.png -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/base/TestBase.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.base; 2 | 3 | import java.io.FileInputStream; 4 | import java.io.FileNotFoundException; 5 | import java.io.IOException; 6 | import java.util.Properties; 7 | import java.util.concurrent.TimeUnit; 8 | 9 | import org.apache.log4j.Logger; 10 | import org.openqa.selenium.WebDriver; 11 | import org.openqa.selenium.chrome.ChromeDriver; 12 | import org.openqa.selenium.chrome.ChromeOptions; 13 | import org.openqa.selenium.firefox.FirefoxDriver; 14 | import org.openqa.selenium.support.events.EventFiringWebDriver; 15 | 16 | import com.crm.qa.util.TestUtil; 17 | import com.crm.qa.util.WebEventListener; 18 | 19 | public class TestBase { 20 | 21 | public static WebDriver driver; 22 | public static Properties prop; 23 | public static EventFiringWebDriver e_driver; 24 | public static WebEventListener eventListener; 25 | 26 | public TestBase(){ 27 | try { 28 | prop = new Properties(); 29 | FileInputStream ip = new FileInputStream(System.getProperty("user.dir")+ "/src/main/java/com/crm" 30 | + "/qa/config/config.properties"); 31 | prop.load(ip); 32 | } catch (FileNotFoundException e) { 33 | e.printStackTrace(); 34 | } catch (IOException e) { 35 | e.printStackTrace(); 36 | } 37 | } 38 | 39 | 40 | public static void initialization(){ 41 | String browserName = prop.getProperty("browser"); 42 | 43 | if(browserName.equals("chrome")){ 44 | System.setProperty("webdriver.chrome.driver", "/Users/naveenkhunteta/Downloads/chromedriver"); 45 | driver = new ChromeDriver(); 46 | } 47 | else if(browserName.equals("FF")){ 48 | System.setProperty("webdriver.gecko.driver", "/Users/naveenkhunteta/Documents/SeleniumServer/geckodriver"); 49 | driver = new FirefoxDriver(); 50 | } 51 | 52 | 53 | e_driver = new EventFiringWebDriver(driver); 54 | // Now create object of EventListerHandler to register it with EventFiringWebDriver 55 | eventListener = new WebEventListener(); 56 | e_driver.register(eventListener); 57 | driver = e_driver; 58 | 59 | driver.manage().window().maximize(); 60 | driver.manage().deleteAllCookies(); 61 | driver.manage().timeouts().pageLoadTimeout(TestUtil.PAGE_LOAD_TIMEOUT, TimeUnit.SECONDS); 62 | driver.manage().timeouts().implicitlyWait(TestUtil.IMPLICIT_WAIT, TimeUnit.SECONDS); 63 | 64 | driver.get(prop.getProperty("url")); 65 | 66 | } 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | } 77 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/config/config.properties: -------------------------------------------------------------------------------- 1 | url = https://www.freecrm.com 2 | 3 | username = naveenk 4 | password = test@123 5 | 6 | browser = chrome 7 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/pages/ContactsPage.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.pages; 2 | 3 | import org.openqa.selenium.By; 4 | import org.openqa.selenium.WebElement; 5 | import org.openqa.selenium.support.FindBy; 6 | import org.openqa.selenium.support.PageFactory; 7 | import org.openqa.selenium.support.ui.Select; 8 | 9 | import com.crm.qa.base.TestBase; 10 | 11 | public class ContactsPage extends TestBase { 12 | 13 | @FindBy(xpath = "//td[contains(text(),'Contacts')]") 14 | WebElement contactsLabel; 15 | 16 | @FindBy(id="first_name") 17 | WebElement firstName; 18 | 19 | @FindBy(id="surname") 20 | WebElement lastName; 21 | 22 | @FindBy(name="client_lookup") 23 | WebElement company; 24 | 25 | @FindBy(xpath = "//input[@type='submit' and @value='Save']") 26 | WebElement saveBtn; 27 | 28 | 29 | 30 | // Initializing the Page Objects: 31 | public ContactsPage() { 32 | PageFactory.initElements(driver, this); 33 | } 34 | 35 | 36 | public boolean verifyContactsLabel(){ 37 | return contactsLabel.isDisplayed(); 38 | } 39 | 40 | 41 | public void selectContactsByName(String name){ 42 | driver.findElement(By.xpath("//a[text()='"+name+"']//parent::td[@class='datalistrow']" 43 | + "//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']")).click(); 44 | } 45 | 46 | 47 | public void createNewContact(String title, String ftName, String ltName, String comp){ 48 | Select select = new Select(driver.findElement(By.name("title"))); 49 | select.selectByVisibleText(title); 50 | 51 | firstName.sendKeys(ftName); 52 | lastName.sendKeys(ltName); 53 | company.sendKeys(comp); 54 | saveBtn.click(); 55 | 56 | } 57 | 58 | 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/pages/DealsPage.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.pages; 2 | 3 | import com.crm.qa.base.TestBase; 4 | 5 | public class DealsPage extends TestBase{ 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/pages/HomePage.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.pages; 2 | 3 | import org.openqa.selenium.WebElement; 4 | import org.openqa.selenium.interactions.Actions; 5 | import org.openqa.selenium.support.CacheLookup; 6 | import org.openqa.selenium.support.FindBy; 7 | import org.openqa.selenium.support.PageFactory; 8 | 9 | import com.crm.qa.base.TestBase; 10 | 11 | public class HomePage extends TestBase { 12 | 13 | @FindBy(xpath = "//td[contains(text(),'User: Naveen K')]") 14 | @CacheLookup 15 | WebElement userNameLabel; 16 | 17 | @FindBy(xpath = "//a[contains(text(),'Contacts')]") 18 | WebElement contactsLink; 19 | 20 | @FindBy(xpath = "//a[contains(text(),'New Contact')]") 21 | WebElement newContactLink; 22 | 23 | 24 | @FindBy(xpath = "//a[contains(text(),'Deals')]") 25 | WebElement dealsLink; 26 | 27 | @FindBy(xpath = "//a[contains(text(),'Tasks')]") 28 | WebElement tasksLink; 29 | 30 | // Initializing the Page Objects: 31 | public HomePage() { 32 | PageFactory.initElements(driver, this); 33 | } 34 | 35 | public String verifyHomePageTitle(){ 36 | return driver.getTitle(); 37 | } 38 | 39 | 40 | public boolean verifyCorrectUserName(){ 41 | return userNameLabel.isDisplayed(); 42 | } 43 | 44 | public ContactsPage clickOnContactsLink(){ 45 | contactsLink.click(); 46 | return new ContactsPage(); 47 | } 48 | 49 | public DealsPage clickOnDealsLink(){ 50 | dealsLink.click(); 51 | return new DealsPage(); 52 | } 53 | 54 | public TasksPage clickOnTasksLink(){ 55 | tasksLink.click(); 56 | return new TasksPage(); 57 | } 58 | 59 | public void clickOnNewContactLink(){ 60 | Actions action = new Actions(driver); 61 | action.moveToElement(contactsLink).build().perform(); 62 | newContactLink.click(); 63 | 64 | } 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/pages/LoginPage.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.pages; 2 | 3 | import org.openqa.selenium.JavascriptExecutor; 4 | import org.openqa.selenium.WebElement; 5 | import org.openqa.selenium.support.FindBy; 6 | import org.openqa.selenium.support.PageFactory; 7 | 8 | import com.crm.qa.base.TestBase; 9 | 10 | public class LoginPage extends TestBase{ 11 | 12 | //Page Factory - OR: 13 | @FindBy(name="username") 14 | WebElement username; 15 | 16 | @FindBy(name="password") 17 | WebElement password; 18 | 19 | @FindBy(xpath="//input[@type='submit']") 20 | WebElement loginBtn; 21 | 22 | @FindBy(xpath="//button[contains(text(),'Sign Up')]") 23 | WebElement signUpBtn; 24 | 25 | @FindBy(xpath="//img[contains(@class,'img-responsive')]") 26 | WebElement crmLogo; 27 | 28 | //Initializing the Page Objects: 29 | public LoginPage(){ 30 | PageFactory.initElements(driver, this); 31 | } 32 | 33 | //Actions: 34 | public String validateLoginPageTitle(){ 35 | return driver.getTitle(); 36 | } 37 | 38 | public boolean validateCRMImage(){ 39 | return crmLogo.isDisplayed(); 40 | } 41 | 42 | public HomePage login(String un, String pwd){ 43 | username.sendKeys(un); 44 | password.sendKeys(pwd); 45 | //loginBtn.click(); 46 | JavascriptExecutor js = (JavascriptExecutor)driver; 47 | js.executeScript("arguments[0].click();", loginBtn); 48 | 49 | return new HomePage(); 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/pages/SignUpPage.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.pages; 2 | 3 | import com.crm.qa.base.TestBase; 4 | 5 | public class SignUpPage extends TestBase{ 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/pages/TasksPage.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.pages; 2 | 3 | import com.crm.qa.base.TestBase; 4 | 5 | public class TasksPage extends TestBase{ 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/testdata/FreeCrmTestData.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/src/main/java/com/crm/qa/testdata/FreeCrmTestData.xlsx -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/util/TestUtil.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.util; 2 | 3 | import java.io.File; 4 | import java.io.FileInputStream; 5 | import java.io.FileNotFoundException; 6 | import java.io.IOException; 7 | 8 | import org.apache.commons.io.FileUtils; 9 | import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 10 | import org.apache.poi.ss.usermodel.Sheet; 11 | import org.apache.poi.ss.usermodel.Workbook; 12 | import org.apache.poi.ss.usermodel.WorkbookFactory; 13 | import org.openqa.selenium.JavascriptExecutor; 14 | import org.openqa.selenium.OutputType; 15 | import org.openqa.selenium.TakesScreenshot; 16 | 17 | import com.crm.qa.base.TestBase; 18 | 19 | public class TestUtil extends TestBase { 20 | 21 | public static long PAGE_LOAD_TIMEOUT = 20; 22 | public static long IMPLICIT_WAIT = 20; 23 | 24 | public static String TESTDATA_SHEET_PATH = "/Users/naveenkhunteta/Documents/workspace" 25 | + "/FreeCRMTest/src/main/java/com/crm/qa/testdata/FreeCrmTestData.xlsx"; 26 | 27 | static Workbook book; 28 | static Sheet sheet; 29 | static JavascriptExecutor js; 30 | 31 | public void switchToFrame() { 32 | driver.switchTo().frame("mainpanel"); 33 | } 34 | 35 | public static Object[][] getTestData(String sheetName) { 36 | FileInputStream file = null; 37 | try { 38 | file = new FileInputStream(TESTDATA_SHEET_PATH); 39 | } catch (FileNotFoundException e) { 40 | e.printStackTrace(); 41 | } 42 | try { 43 | book = WorkbookFactory.create(file); 44 | } catch (InvalidFormatException e) { 45 | e.printStackTrace(); 46 | } catch (IOException e) { 47 | e.printStackTrace(); 48 | } 49 | sheet = book.getSheet(sheetName); 50 | Object[][] data = new Object[sheet.getLastRowNum()][sheet.getRow(0).getLastCellNum()]; 51 | // System.out.println(sheet.getLastRowNum() + "--------" + 52 | // sheet.getRow(0).getLastCellNum()); 53 | for (int i = 0; i < sheet.getLastRowNum(); i++) { 54 | for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k++) { 55 | data[i][k] = sheet.getRow(i + 1).getCell(k).toString(); 56 | // System.out.println(data[i][k]); 57 | } 58 | } 59 | return data; 60 | } 61 | 62 | public static void takeScreenshotAtEndOfTest() throws IOException { 63 | File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); 64 | String currentDir = System.getProperty("user.dir"); 65 | FileUtils.copyFile(scrFile, new File(currentDir + "/screenshots/" + System.currentTimeMillis() + ".png")); 66 | } 67 | 68 | public static void runTimeInfo(String messageType, String message) throws InterruptedException { 69 | js = (JavascriptExecutor) driver; 70 | // Check for jQuery on the page, add it if need be 71 | js.executeScript("if (!window.jQuery) {" 72 | + "var jquery = document.createElement('script'); jquery.type = 'text/javascript';" 73 | + "jquery.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js';" 74 | + "document.getElementsByTagName('head')[0].appendChild(jquery);" + "}"); 75 | Thread.sleep(5000); 76 | 77 | // Use jQuery to add jquery-growl to the page 78 | js.executeScript("$.getScript('https://the-internet.herokuapp.com/js/vendor/jquery.growl.js')"); 79 | 80 | // Use jQuery to add jquery-growl styles to the page 81 | js.executeScript("$('head').append('');"); 83 | Thread.sleep(5000); 84 | 85 | // jquery-growl w/ no frills 86 | js.executeScript("$.growl({ title: 'GET', message: '/' });"); 87 | //'"+color+"'" 88 | if (messageType.equals("error")) { 89 | js.executeScript("$.growl.error({ title: 'ERROR', message: '"+message+"' });"); 90 | }else if(messageType.equals("info")){ 91 | js.executeScript("$.growl.notice({ title: 'Notice', message: 'your notice message goes here' });"); 92 | }else if(messageType.equals("warning")){ 93 | js.executeScript("$.growl.warning({ title: 'Warning!', message: 'your warning message goes here' });"); 94 | }else 95 | System.out.println("no error message"); 96 | // jquery-growl w/ colorized output 97 | // js.executeScript("$.growl.error({ title: 'ERROR', message: 'your error message goes here' });"); 98 | // js.executeScript("$.growl.notice({ title: 'Notice', message: 'your notice message goes here' });"); 99 | // js.executeScript("$.growl.warning({ title: 'Warning!', message: 'your warning message goes here' });"); 100 | Thread.sleep(5000); 101 | } 102 | 103 | } 104 | -------------------------------------------------------------------------------- /src/main/java/com/crm/qa/util/WebEventListener.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.util; 2 | /*************************************** PURPOSE ********************************** 3 | 4 | - This class implements the WebDriverEventListener, which is included under events. 5 | The purpose of implementing this interface is to override all the methods and define certain useful Log statements 6 | which would be displayed/logged as the application under test is being run. 7 | 8 | Do not call any of these methods, instead these methods will be invoked automatically 9 | as an when the action done (click, findBy etc). 10 | 11 | */ 12 | 13 | import java.io.IOException; 14 | 15 | import org.openqa.selenium.By; 16 | import org.openqa.selenium.OutputType; 17 | import org.openqa.selenium.WebDriver; 18 | import org.openqa.selenium.WebElement; 19 | import org.openqa.selenium.support.events.WebDriverEventListener; 20 | 21 | import com.crm.qa.base.TestBase; 22 | 23 | public class WebEventListener extends TestBase implements WebDriverEventListener { 24 | 25 | public void beforeNavigateTo(String url, WebDriver driver) { 26 | System.out.println("Before navigating to: '" + url + "'"); 27 | } 28 | 29 | public void afterNavigateTo(String url, WebDriver driver) { 30 | System.out.println("Navigated to:'" + url + "'"); 31 | } 32 | 33 | public void beforeChangeValueOf(WebElement element, WebDriver driver) { 34 | System.out.println("Value of the:" + element.toString() + " before any changes made"); 35 | } 36 | 37 | public void afterChangeValueOf(WebElement element, WebDriver driver) { 38 | System.out.println("Element value changed to: " + element.toString()); 39 | } 40 | 41 | public void beforeClickOn(WebElement element, WebDriver driver) { 42 | System.out.println("Trying to click on: " + element.toString()); 43 | } 44 | 45 | public void afterClickOn(WebElement element, WebDriver driver) { 46 | System.out.println("Clicked on: " + element.toString()); 47 | } 48 | 49 | public void beforeNavigateBack(WebDriver driver) { 50 | System.out.println("Navigating back to previous page"); 51 | } 52 | 53 | public void afterNavigateBack(WebDriver driver) { 54 | System.out.println("Navigated back to previous page"); 55 | } 56 | 57 | public void beforeNavigateForward(WebDriver driver) { 58 | System.out.println("Navigating forward to next page"); 59 | } 60 | 61 | public void afterNavigateForward(WebDriver driver) { 62 | System.out.println("Navigated forward to next page"); 63 | } 64 | 65 | public void onException(Throwable error, WebDriver driver) { 66 | System.out.println("Exception occured: " + error); 67 | try { 68 | TestUtil.takeScreenshotAtEndOfTest(); 69 | } catch (IOException e) { 70 | e.printStackTrace(); 71 | } 72 | } 73 | 74 | public void beforeFindBy(By by, WebElement element, WebDriver driver) { 75 | System.out.println("Trying to find Element By : " + by.toString()); 76 | } 77 | 78 | public void afterFindBy(By by, WebElement element, WebDriver driver) { 79 | System.out.println("Found Element By : " + by.toString()); 80 | } 81 | 82 | /* 83 | * non overridden methods of WebListener class 84 | */ 85 | public void beforeScript(String script, WebDriver driver) { 86 | } 87 | 88 | public void afterScript(String script, WebDriver driver) { 89 | } 90 | 91 | public void beforeAlertAccept(WebDriver driver) { 92 | // TODO Auto-generated method stub 93 | 94 | } 95 | 96 | public void afterAlertAccept(WebDriver driver) { 97 | // TODO Auto-generated method stub 98 | 99 | } 100 | 101 | public void afterAlertDismiss(WebDriver driver) { 102 | // TODO Auto-generated method stub 103 | 104 | } 105 | 106 | public void beforeAlertDismiss(WebDriver driver) { 107 | // TODO Auto-generated method stub 108 | 109 | } 110 | 111 | public void beforeNavigateRefresh(WebDriver driver) { 112 | // TODO Auto-generated method stub 113 | 114 | } 115 | 116 | public void afterNavigateRefresh(WebDriver driver) { 117 | // TODO Auto-generated method stub 118 | 119 | } 120 | 121 | public void beforeChangeValueOf(WebElement element, WebDriver driver, CharSequence[] keysToSend) { 122 | // TODO Auto-generated method stub 123 | 124 | } 125 | 126 | public void afterChangeValueOf(WebElement element, WebDriver driver, CharSequence[] keysToSend) { 127 | // TODO Auto-generated method stub 128 | 129 | } 130 | 131 | public void afterGetScreenshotAs(OutputType arg0, X arg1) { 132 | // TODO Auto-generated method stub 133 | 134 | } 135 | 136 | public void afterGetText(WebElement arg0, WebDriver arg1, String arg2) { 137 | // TODO Auto-generated method stub 138 | 139 | } 140 | 141 | public void afterSwitchToWindow(String arg0, WebDriver arg1) { 142 | // TODO Auto-generated method stub 143 | 144 | } 145 | 146 | public void beforeGetScreenshotAs(OutputType arg0) { 147 | // TODO Auto-generated method stub 148 | 149 | } 150 | 151 | public void beforeGetText(WebElement arg0, WebDriver arg1) { 152 | // TODO Auto-generated method stub 153 | 154 | } 155 | 156 | public void beforeSwitchToWindow(String arg0, WebDriver arg1) { 157 | // TODO Auto-generated method stub 158 | 159 | } 160 | 161 | } -------------------------------------------------------------------------------- /src/main/java/com/qa/ExtentReportListener/ExtentReporterNG.java: -------------------------------------------------------------------------------- 1 | /* 2 | * @autor : Naveen Khunteta 3 | * 4 | */ 5 | package com.qa.ExtentReportListener; 6 | 7 | import java.io.File; 8 | import java.util.Calendar; 9 | import java.util.Date; 10 | import java.util.List; 11 | import java.util.Map; 12 | 13 | import org.testng.IReporter; 14 | import org.testng.IResultMap; 15 | import org.testng.ISuite; 16 | import org.testng.ISuiteResult; 17 | import org.testng.ITestContext; 18 | import org.testng.ITestResult; 19 | import org.testng.xml.XmlSuite; 20 | 21 | import com.relevantcodes.extentreports.ExtentReports; 22 | import com.relevantcodes.extentreports.ExtentTest; 23 | import com.relevantcodes.extentreports.LogStatus; 24 | 25 | public class ExtentReporterNG implements IReporter { 26 | private ExtentReports extent; 27 | 28 | public void generateReport(List xmlSuites, List suites, 29 | String outputDirectory) { 30 | extent = new ExtentReports(outputDirectory + File.separator 31 | + "Extent.html", true); 32 | 33 | for (ISuite suite : suites) { 34 | Map result = suite.getResults(); 35 | 36 | for (ISuiteResult r : result.values()) { 37 | ITestContext context = r.getTestContext(); 38 | 39 | buildTestNodes(context.getPassedTests(), LogStatus.PASS); 40 | buildTestNodes(context.getFailedTests(), LogStatus.FAIL); 41 | buildTestNodes(context.getSkippedTests(), LogStatus.SKIP); 42 | } 43 | } 44 | 45 | extent.flush(); 46 | extent.close(); 47 | } 48 | 49 | private void buildTestNodes(IResultMap tests, LogStatus status) { 50 | ExtentTest test; 51 | 52 | if (tests.size() > 0) { 53 | for (ITestResult result : tests.getAllResults()) { 54 | test = extent.startTest(result.getMethod().getMethodName()); 55 | 56 | test.setStartedTime(getTime(result.getStartMillis())); 57 | test.setEndedTime(getTime(result.getEndMillis())); 58 | 59 | for (String group : result.getMethod().getGroups()) 60 | test.assignCategory(group); 61 | 62 | if (result.getThrowable() != null) { 63 | test.log(status, result.getThrowable()); 64 | } else { 65 | test.log(status, "Test " + status.toString().toLowerCase() 66 | + "ed"); 67 | } 68 | 69 | extent.endTest(test); 70 | } 71 | } 72 | } 73 | 74 | private Date getTime(long millis) { 75 | Calendar calendar = Calendar.getInstance(); 76 | calendar.setTimeInMillis(millis); 77 | return calendar.getTime(); 78 | } 79 | } -------------------------------------------------------------------------------- /src/main/resources/testng.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/main/resources/testng_sanity.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/test/java/com/crm/qa/testcases/ContactsPageTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * @author Naveen Khunteta 3 | * 4 | */ 5 | 6 | package com.crm.qa.testcases; 7 | 8 | import java.io.IOException; 9 | 10 | import org.apache.log4j.PropertyConfigurator; 11 | import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 12 | import org.openqa.selenium.By; 13 | import org.openqa.selenium.interactions.Actions; 14 | import org.openqa.selenium.support.ui.Select; 15 | import org.testng.Assert; 16 | import org.testng.annotations.AfterMethod; 17 | import org.testng.annotations.BeforeMethod; 18 | import org.testng.annotations.DataProvider; 19 | import org.testng.annotations.Test; 20 | import org.testng.log4testng.Logger; 21 | 22 | import com.crm.qa.base.TestBase; 23 | import com.crm.qa.pages.ContactsPage; 24 | import com.crm.qa.pages.HomePage; 25 | import com.crm.qa.pages.LoginPage; 26 | import com.crm.qa.util.TestUtil; 27 | 28 | public class ContactsPageTest extends TestBase{ 29 | 30 | LoginPage loginPage; 31 | HomePage homePage; 32 | TestUtil testUtil; 33 | ContactsPage contactsPage; 34 | 35 | String sheetName = "contacts"; 36 | 37 | 38 | public ContactsPageTest(){ 39 | super(); 40 | 41 | } 42 | 43 | 44 | @BeforeMethod 45 | public void setUp() throws InterruptedException { 46 | 47 | initialization(); 48 | testUtil = new TestUtil(); 49 | contactsPage = new ContactsPage(); 50 | loginPage = new LoginPage(); 51 | homePage = loginPage.login(prop.getProperty("username"), prop.getProperty("password")); 52 | TestUtil.runTimeInfo("error", "login successful"); 53 | testUtil.switchToFrame(); 54 | contactsPage = homePage.clickOnContactsLink(); 55 | } 56 | 57 | @Test(priority=1) 58 | public void verifyContactsPageLabel(){ 59 | Assert.assertTrue(contactsPage.verifyContactsLabel(), "contacts label is missing on the page"); 60 | } 61 | 62 | @Test(priority=2) 63 | public void selectSingleContactsTest(){ 64 | contactsPage.selectContactsByName("test2 test2"); 65 | } 66 | 67 | @Test(priority=3) 68 | public void selectMultipleContactsTest(){ 69 | contactsPage.selectContactsByName("test2 test2"); 70 | contactsPage.selectContactsByName("ui uiii"); 71 | 72 | } 73 | 74 | @DataProvider 75 | public Object[][] getCRMTestData(){ 76 | Object data[][] = TestUtil.getTestData(sheetName); 77 | return data; 78 | } 79 | 80 | 81 | @Test(priority=4, dataProvider="getCRMTestData") 82 | public void validateCreateNewContact(String title, String firstName, String lastName, String company){ 83 | homePage.clickOnNewContactLink(); 84 | //contactsPage.createNewContact("Mr.", "Tom", "Peter", "Google"); 85 | contactsPage.createNewContact(title, firstName, lastName, company); 86 | 87 | } 88 | 89 | 90 | 91 | @AfterMethod 92 | public void tearDown(){ 93 | driver.quit(); 94 | } 95 | 96 | 97 | 98 | 99 | } 100 | -------------------------------------------------------------------------------- /src/test/java/com/crm/qa/testcases/FreeCrmTest.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.testcases; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | 6 | import org.apache.commons.io.FileUtils; 7 | import org.openqa.selenium.JavascriptExecutor; 8 | import org.openqa.selenium.OutputType; 9 | import org.openqa.selenium.TakesScreenshot; 10 | import org.openqa.selenium.WebDriver; 11 | import org.openqa.selenium.chrome.ChromeDriver; 12 | import org.testng.Assert; 13 | import org.testng.annotations.BeforeMethod; 14 | import org.testng.annotations.Test; 15 | 16 | public class FreeCrmTest { 17 | 18 | static WebDriver driver; 19 | static JavascriptExecutor js; 20 | 21 | @BeforeMethod 22 | public void setUp() throws Exception { 23 | System.setProperty("webdriver.chrome.driver", "/Users/naveenkhunteta/Downloads/chromedriver"); 24 | driver = new ChromeDriver(); 25 | js = (JavascriptExecutor) driver; 26 | driver.get("https://www.freecrm.com/index.html"); 27 | } 28 | 29 | @Test 30 | public void freeCrmTitleTest() throws InterruptedException, IOException { 31 | String title = driver.getTitle(); 32 | System.out.println("title is: " + title); 33 | getRunTimeInfoMessage("info", title); 34 | 35 | if (title.equals("Free CRM software in the cloud powers sales and customer serviceQQQQ")) { 36 | getRunTimeInfoMessage("info", "title is correct!! YAY!!!"); 37 | Assert.assertTrue(true); 38 | } else { 39 | getRunTimeInfoMessage("error", "title is not correct!! BUG BUG BUG!!!"); 40 | takeScreenshot("freecrmloginpage"); 41 | Assert.assertTrue(false); 42 | } 43 | 44 | } 45 | 46 | public static void getRunTimeInfoMessage(String messageType, String message) throws InterruptedException { 47 | // Check for jQuery on the page, add it if need be 48 | js.executeScript("if (!window.jQuery) {" 49 | + "var jquery = document.createElement('script'); jquery.type = 'text/javascript';" 50 | + "jquery.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js';" 51 | + "document.getElementsByTagName('head')[0].appendChild(jquery);" + "}"); 52 | Thread.sleep(5000); 53 | 54 | // Use jQuery to add jquery-growl to the page 55 | js.executeScript("$.getScript('https://the-internet.herokuapp.com/js/vendor/jquery.growl.js')"); 56 | 57 | // js.executeScript("$.getScript('/Users/NaveenKhunteta/Documents/workspace/Test/src/testcases/jquery.growl.js')"); 58 | 59 | // Use jQuery to add jquery-growl styles to the page 60 | js.executeScript("$('head').append('');"); 62 | Thread.sleep(5000); 63 | 64 | // jquery-growl w/ no frills 65 | js.executeScript("$.growl({ title: 'GET', message: '/' });"); 66 | 67 | if(messageType.equals("error")){ 68 | js.executeScript("$.growl.error({ title: 'ERROR', message: '"+message+"' });"); 69 | }else if(messageType.equals("info")){ 70 | js.executeScript("$.growl.notice({ title: 'Notice', message: '"+message+"' });"); 71 | }else if(messageType.equals("warning")){ 72 | js.executeScript("$.growl.warning({ title: 'Warning!', message: '"+message+"' });"); 73 | } 74 | 75 | // jquery-growl w/ colorized output 76 | // js.executeScript("$.growl.error({ title: 'ERROR', message: 'Some exception is coming' });"); 77 | // js.executeScript("$.growl.notice({ title: 'Notice', message: 'your notice message goes here' });"); 78 | // js.executeScript("$.growl.warning({ title: 'Warning!', message: 'your warning message goes here' });"); 79 | } 80 | 81 | public static void takeScreenshot(String fileName) throws IOException{ 82 | // Take screenshot and store as a file format 83 | File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); 84 | // now copy the screenshot to desired location using copyFile //method 85 | FileUtils.copyFile(src, 86 | new File("/Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/screenshots/" + fileName +".png")); 87 | 88 | } 89 | 90 | } 91 | -------------------------------------------------------------------------------- /src/test/java/com/crm/qa/testcases/HomePageTest.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.testcases; 2 | 3 | import org.testng.Assert; 4 | import org.testng.annotations.AfterMethod; 5 | import org.testng.annotations.BeforeMethod; 6 | import org.testng.annotations.Test; 7 | 8 | import com.crm.qa.base.TestBase; 9 | import com.crm.qa.pages.ContactsPage; 10 | import com.crm.qa.pages.HomePage; 11 | import com.crm.qa.pages.LoginPage; 12 | import com.crm.qa.util.TestUtil; 13 | 14 | public class HomePageTest extends TestBase { 15 | LoginPage loginPage; 16 | HomePage homePage; 17 | TestUtil testUtil; 18 | ContactsPage contactsPage; 19 | 20 | public HomePageTest() { 21 | super(); 22 | } 23 | 24 | //test cases should be separated -- independent with each other 25 | //before each test case -- launch the browser and login 26 | //@test -- execute test case 27 | //after each test case -- close the browser 28 | 29 | @BeforeMethod 30 | public void setUp() { 31 | initialization(); 32 | testUtil = new TestUtil(); 33 | contactsPage = new ContactsPage(); 34 | loginPage = new LoginPage(); 35 | homePage = loginPage.login(prop.getProperty("username"), prop.getProperty("password")); 36 | } 37 | 38 | 39 | @Test(priority=1) 40 | public void verifyHomePageTitleTest(){ 41 | String homePageTitle = homePage.verifyHomePageTitle(); 42 | Assert.assertEquals(homePageTitle, "CRMPRO","Home page title not matched"); 43 | } 44 | 45 | @Test(priority=2) 46 | public void verifyUserNameTest(){ 47 | testUtil.switchToFrame(); 48 | Assert.assertTrue(homePage.verifyCorrectUserName()); 49 | } 50 | 51 | @Test(priority=3) 52 | public void verifyContactsLinkTest(){ 53 | testUtil.switchToFrame(); 54 | contactsPage = homePage.clickOnContactsLink(); 55 | } 56 | 57 | 58 | 59 | @AfterMethod 60 | public void tearDown(){ 61 | driver.quit(); 62 | } 63 | 64 | 65 | 66 | } 67 | -------------------------------------------------------------------------------- /src/test/java/com/crm/qa/testcases/LoginPageTest.java: -------------------------------------------------------------------------------- 1 | package com.crm.qa.testcases; 2 | 3 | import org.testng.Assert; 4 | import org.testng.annotations.AfterMethod; 5 | import org.testng.annotations.BeforeMethod; 6 | import org.testng.annotations.Test; 7 | 8 | import com.crm.qa.base.TestBase; 9 | import com.crm.qa.pages.HomePage; 10 | import com.crm.qa.pages.LoginPage; 11 | 12 | public class LoginPageTest extends TestBase{ 13 | LoginPage loginPage; 14 | HomePage homePage; 15 | 16 | public LoginPageTest(){ 17 | super(); 18 | } 19 | 20 | @BeforeMethod 21 | public void setUp(){ 22 | initialization(); 23 | loginPage = new LoginPage(); 24 | } 25 | 26 | @Test(priority=1) 27 | public void loginPageTitleTest(){ 28 | String title = loginPage.validateLoginPageTitle(); 29 | Assert.assertEquals(title, "#1 Free CRM for Any Business: Online Customer Relationship Software"); 30 | } 31 | 32 | @Test(priority=2) 33 | public void crmLogoImageTest(){ 34 | boolean flag = loginPage.validateCRMImage(); 35 | Assert.assertTrue(flag); 36 | } 37 | 38 | @Test(priority=3) 39 | public void loginTest(){ 40 | homePage = loginPage.login(prop.getProperty("username"), prop.getProperty("password")); 41 | } 42 | 43 | 44 | 45 | @AfterMethod 46 | public void tearDown(){ 47 | driver.quit(); 48 | } 49 | 50 | 51 | 52 | 53 | 54 | } 55 | -------------------------------------------------------------------------------- /target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Built-By: NaveenKhunteta 3 | Build-Jdk: 1.8.0_144 4 | Created-By: Maven Integration for Eclipse 5 | 6 | -------------------------------------------------------------------------------- /target/classes/META-INF/maven/FreeCRMTestAutomation/FreeCRMTest/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Sep 28 12:50:49 IST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=FreeCRMTestAutomation 5 | m2e.projectName=FreeCRMTest 6 | m2e.projectLocation=/Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel 7 | artifactId=FreeCRMTest 8 | -------------------------------------------------------------------------------- /target/classes/META-INF/maven/FreeCRMTestAutomation/FreeCRMTest/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | 5 | FreeCRMTestAutomation 6 | FreeCRMTest 7 | 0.0.1-SNAPSHOT 8 | jar 9 | 10 | FreeCRMTest 11 | http://maven.apache.org 12 | 13 | 14 | UTF-8 15 | 16 | 17 | 18 | 19 | 20 | org.seleniumhq.selenium 21 | selenium-java 22 | 3.14.0 23 | 24 | 25 | 26 | org.testng 27 | testng 28 | 6.11 29 | compile 30 | 31 | 32 | 33 | 34 | org.apache.poi 35 | poi 36 | 3.16-beta2 37 | 38 | 39 | 40 | 41 | org.apache.poi 42 | poi-ooxml 43 | 3.9 44 | 45 | 46 | org.apache.poi 47 | poi-ooxml-schemas 48 | 3.9 49 | 50 | 51 | org.apache.poi 52 | poi-scratchpad 53 | 3.9 54 | 55 | 56 | org.apache.poi 57 | ooxml-schemas 58 | 1.1 59 | 60 | 61 | 62 | org.apache.poi 63 | openxml4j 64 | 1.0-beta 65 | 66 | 67 | org.apache.poi 68 | poi 69 | 3.9 70 | 71 | 72 | org.apache.poi 73 | poi-ooxml 74 | 3.9 75 | 76 | 77 | org.apache.poi 78 | poi-ooxml-schemas 79 | 3.9 80 | 81 | 82 | org.apache.poi 83 | poi-scratchpad 84 | 3.9 85 | 86 | 87 | org.apache.poi 88 | ooxml-schemas 89 | 1.1 90 | 91 | 92 | 93 | org.apache.poi 94 | openxml4j 95 | 1.0-beta 96 | 97 | 98 | 99 | 100 | com.relevantcodes 101 | extentreports 102 | 2.41.2 103 | 104 | 105 | 106 | 107 | commons-io 108 | commons-io 109 | 2.6 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /target/classes/com/crm/qa/base/TestBase.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/base/TestBase.class -------------------------------------------------------------------------------- /target/classes/com/crm/qa/pages/ContactsPage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/pages/ContactsPage.class -------------------------------------------------------------------------------- /target/classes/com/crm/qa/pages/DealsPage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/pages/DealsPage.class -------------------------------------------------------------------------------- /target/classes/com/crm/qa/pages/HomePage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/pages/HomePage.class -------------------------------------------------------------------------------- /target/classes/com/crm/qa/pages/LoginPage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/pages/LoginPage.class -------------------------------------------------------------------------------- /target/classes/com/crm/qa/pages/SignUpPage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/pages/SignUpPage.class -------------------------------------------------------------------------------- /target/classes/com/crm/qa/pages/TasksPage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/pages/TasksPage.class -------------------------------------------------------------------------------- /target/classes/com/crm/qa/util/TestUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/util/TestUtil.class -------------------------------------------------------------------------------- /target/classes/com/crm/qa/util/WebEventListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/crm/qa/util/WebEventListener.class -------------------------------------------------------------------------------- /target/classes/com/qa/ExtentReportListener/ExtentReporterNG.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/classes/com/qa/ExtentReportListener/ExtentReporterNG.class -------------------------------------------------------------------------------- /target/classes/testng.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /target/classes/testng_sanity.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst -------------------------------------------------------------------------------- /target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst: -------------------------------------------------------------------------------- 1 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/util/WebEventListener.java 2 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/pages/HomePage.java 3 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/pages/ContactsPage.java 4 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/base/TestBase.java 5 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/pages/LoginPage.java 6 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/util/TestUtil.java 7 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/pages/TasksPage.java 8 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/pages/SignUpPage.java 9 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/crm/qa/pages/DealsPage.java 10 | /Users/NaveenKhunteta/Documents/MyPOMFramework/PageObjectModel/src/main/java/com/qa/ExtentReportListener/ExtentReporterNG.java 11 | -------------------------------------------------------------------------------- /target/test-classes/com/crm/qa/testcases/ContactsPageTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/test-classes/com/crm/qa/testcases/ContactsPageTest.class -------------------------------------------------------------------------------- /target/test-classes/com/crm/qa/testcases/HomePageTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/test-classes/com/crm/qa/testcases/HomePageTest.class -------------------------------------------------------------------------------- /target/test-classes/com/crm/qa/testcases/LoginPageTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/target/test-classes/com/crm/qa/testcases/LoginPageTest.class -------------------------------------------------------------------------------- /test-output/Default suite/Default test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | TestNG: Default test 4 | 5 | 6 | 7 | 11 | 53 | 54 | 55 | 56 |

Default test

57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |
Tests passed/Failed/Skipped:0/1/0
Started on:Sun Jul 01 13:12:53 IST 2018
Total time:59 seconds (59031 ms)
Included groups:
Excluded groups:

69 | (Hover the method name to see the test class name)

70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 143 | 144 | 145 |
FAILED TESTS
Test methodExceptionTime (seconds)Instance
freeCrmTitleTest
Test class: com.crm.qa.testcases.FreeCrmTest
java.lang.AssertionError: expected [true] but found [false]
 80 | 	at org.testng.Assert.fail(Assert.java:93)
 81 | 	at org.testng.Assert.failNotEquals(Assert.java:512)
 82 | 	at org.testng.Assert.assertTrue(Assert.java:41)
 83 | 	at org.testng.Assert.assertTrue(Assert.java:51)
 84 | 	at com.crm.qa.testcases.FreeCrmTest.freeCrmTitleTest(FreeCrmTest.java:41)
 85 | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 86 | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 87 | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 88 | 	at java.lang.reflect.Method.invoke(Method.java:498)
 89 | 	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
 90 | 	at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
 91 | 	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
 92 | 	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
 93 | 	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
 94 | 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
 95 | 	at org.testng.TestRunner.privateRun(TestRunner.java:744)
 96 | 	at org.testng.TestRunner.run(TestRunner.java:602)
 97 | 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
 98 | 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
 99 | 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
100 | 	at org.testng.SuiteRunner.run(SuiteRunner.java:289)
101 | 	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
102 | 	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
103 | 	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
104 | 	at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
105 | 	at org.testng.TestNG.runSuites(TestNG.java:1144)
106 | 	at org.testng.TestNG.run(TestNG.java:1115)
107 | 	at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
108 | 	at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
109 | 	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
110 | 
Click to show all stack frames 111 |
java.lang.AssertionError: expected [true] but found [false]
112 | 	at org.testng.Assert.fail(Assert.java:93)
113 | 	at org.testng.Assert.failNotEquals(Assert.java:512)
114 | 	at org.testng.Assert.assertTrue(Assert.java:41)
115 | 	at org.testng.Assert.assertTrue(Assert.java:51)
116 | 	at com.crm.qa.testcases.FreeCrmTest.freeCrmTitleTest(FreeCrmTest.java:41)
117 | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
118 | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
119 | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
120 | 	at java.lang.reflect.Method.invoke(Method.java:498)
121 | 	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
122 | 	at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
123 | 	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
124 | 	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
125 | 	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
126 | 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
127 | 	at org.testng.TestRunner.privateRun(TestRunner.java:744)
128 | 	at org.testng.TestRunner.run(TestRunner.java:602)
129 | 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
130 | 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
131 | 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
132 | 	at org.testng.SuiteRunner.run(SuiteRunner.java:289)
133 | 	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
134 | 	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
135 | 	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
136 | 	at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
137 | 	at org.testng.TestNG.runSuites(TestNG.java:1144)
138 | 	at org.testng.TestNG.run(TestNG.java:1115)
139 | 	at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
140 | 	at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
141 | 	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
142 | 
51com.crm.qa.testcases.FreeCrmTest@1cbbffcd

146 | 147 | -------------------------------------------------------------------------------- /test-output/Default suite/Default test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /test-output/Default suite/testng-failed.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test-output/FREE CRM Application Test Automation Test Suite/Free CRM App Test Cases.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | TestNG: Free CRM App Test Cases 4 | 5 | 6 | 7 | 11 | 53 | 54 | 55 | 56 |

Free CRM App Test Cases

57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |
Tests passed/Failed/Skipped:10/2/0
Started on:Fri Oct 13 23:49:56 IST 2017
Total time:190 seconds (190412 ms)
Included groups:
Excluded groups:

69 | (Hover the method name to see the test class name)

70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 169 | 170 | 171 | 172 | 173 | 263 | 264 | 265 |
FAILED TESTS
Test methodExceptionTime (seconds)Instance
selectMultipleContactsTest
Test class: com.crm.qa.testcases.ContactsPageTest
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//a[text()='test2 test2']//parent::td[@class='datalistrow']//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']"}
 80 |   (Session info: chrome=61.0.3163.100)
 81 |   (Driver info: chromedriver=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b),platform=Mac OS X 10.12.6 x86_64) (WARNING: The server did not provide any stacktrace information)
 82 | Command duration or timeout: 0 milliseconds
 83 | For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
 84 | Build info: version: '3.5.3', revision: 'a88d25fe6b', time: '2017-08-29T12:42:44.417Z'
 85 | System info: host: 'Naveens-MacBook-Air.local', ip: 'fe80:0:0:0:828:e267:315b:c8a4%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '1.8.0_121'
 86 | Driver info: org.openqa.selenium.chrome.ChromeDriver
 87 | Capabilities [{mobileEmulationEnabled=false, hasTouchScreen=false, platform=MAC, acceptSslCerts=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, platformName=MAC, setWindowRect=true, unexpectedAlertBehaviour=, applicationCacheEnabled=false, rotatable=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b), userDataDir=/var/folders/0w/z084sy393n7798ssctmpjhq00000gn/T/.org.chromium.Chromium.WdyUdq}, takesHeapSnapshot=true, pageLoadStrategy=normal, unhandledPromptBehavior=, databaseEnabled=false, handlesAlerts=true, version=61.0.3163.100, browserConnectionEnabled=false, nativeEvents=true, locationContextEnabled=true, cssSelectorsEnabled=true}]
 88 | Session ID: d08a002bf183b1fbcc19c132316d1bbf
 89 | *** Element info: {Using=xpath, value=//a[text()='test2 test2']//parent::td[@class='datalistrow']//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']}
 90 | 	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215)
 91 | 	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)
 92 | 	at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
 93 | 	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:82)
 94 | 	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:45)
 95 | 	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
 96 | 	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
 97 | 	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:646)
 98 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:416)
 99 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:518)
100 | 	at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
101 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:408)
102 | 	at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:105)
103 | 	at com.sun.proxy.$Proxy8.findElement(Unknown Source)
104 | 	at org.openqa.selenium.support.events.EventFiringWebDriver.findElement(EventFiringWebDriver.java:189)
105 | 	at com.crm.qa.pages.ContactsPage.selectContactsByName(ContactsPage.java:42)
106 | 	at com.crm.qa.testcases.ContactsPageTest.selectMultipleContactsTest(ContactsPageTest.java:63)
107 | ... Removed 32 stack frames
Click to show all stack frames 108 |
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//a[text()='test2 test2']//parent::td[@class='datalistrow']//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']"}
109 |   (Session info: chrome=61.0.3163.100)
110 |   (Driver info: chromedriver=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b),platform=Mac OS X 10.12.6 x86_64) (WARNING: The server did not provide any stacktrace information)
111 | Command duration or timeout: 0 milliseconds
112 | For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
113 | Build info: version: '3.5.3', revision: 'a88d25fe6b', time: '2017-08-29T12:42:44.417Z'
114 | System info: host: 'Naveens-MacBook-Air.local', ip: 'fe80:0:0:0:828:e267:315b:c8a4%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '1.8.0_121'
115 | Driver info: org.openqa.selenium.chrome.ChromeDriver
116 | Capabilities [{mobileEmulationEnabled=false, hasTouchScreen=false, platform=MAC, acceptSslCerts=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, platformName=MAC, setWindowRect=true, unexpectedAlertBehaviour=, applicationCacheEnabled=false, rotatable=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b), userDataDir=/var/folders/0w/z084sy393n7798ssctmpjhq00000gn/T/.org.chromium.Chromium.WdyUdq}, takesHeapSnapshot=true, pageLoadStrategy=normal, unhandledPromptBehavior=, databaseEnabled=false, handlesAlerts=true, version=61.0.3163.100, browserConnectionEnabled=false, nativeEvents=true, locationContextEnabled=true, cssSelectorsEnabled=true}]
117 | Session ID: d08a002bf183b1fbcc19c132316d1bbf
118 | *** Element info: {Using=xpath, value=//a[text()='test2 test2']//parent::td[@class='datalistrow']//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']}
119 | 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
120 | 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
121 | 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
122 | 	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
123 | 	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215)
124 | 	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)
125 | 	at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
126 | 	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:82)
127 | 	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:45)
128 | 	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
129 | 	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
130 | 	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:646)
131 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:416)
132 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:518)
133 | 	at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
134 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:408)
135 | 	at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
136 | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
137 | 	at java.lang.reflect.Method.invoke(Method.java:498)
138 | 	at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:105)
139 | 	at com.sun.proxy.$Proxy8.findElement(Unknown Source)
140 | 	at org.openqa.selenium.support.events.EventFiringWebDriver.findElement(EventFiringWebDriver.java:189)
141 | 	at com.crm.qa.pages.ContactsPage.selectContactsByName(ContactsPage.java:42)
142 | 	at com.crm.qa.testcases.ContactsPageTest.selectMultipleContactsTest(ContactsPageTest.java:63)
143 | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
144 | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
145 | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
146 | 	at java.lang.reflect.Method.invoke(Method.java:498)
147 | 	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
148 | 	at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
149 | 	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
150 | 	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
151 | 	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
152 | 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
153 | 	at org.testng.TestRunner.privateRun(TestRunner.java:744)
154 | 	at org.testng.TestRunner.run(TestRunner.java:602)
155 | 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
156 | 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
157 | 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
158 | 	at org.testng.SuiteRunner.run(SuiteRunner.java:289)
159 | 	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
160 | 	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
161 | 	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
162 | 	at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
163 | 	at org.testng.TestNG.runSuites(TestNG.java:1144)
164 | 	at org.testng.TestNG.run(TestNG.java:1115)
165 | 	at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
166 | 	at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
167 | 	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
168 | 
20com.crm.qa.testcases.ContactsPageTest@5bcab519
selectSingleContactsTest
Test class: com.crm.qa.testcases.ContactsPageTest
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//a[text()='test2 test2']//parent::td[@class='datalistrow']//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']"}
174 |   (Session info: chrome=61.0.3163.100)
175 |   (Driver info: chromedriver=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b),platform=Mac OS X 10.12.6 x86_64) (WARNING: The server did not provide any stacktrace information)
176 | Command duration or timeout: 0 milliseconds
177 | For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
178 | Build info: version: '3.5.3', revision: 'a88d25fe6b', time: '2017-08-29T12:42:44.417Z'
179 | System info: host: 'Naveens-MacBook-Air.local', ip: 'fe80:0:0:0:828:e267:315b:c8a4%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '1.8.0_121'
180 | Driver info: org.openqa.selenium.chrome.ChromeDriver
181 | Capabilities [{mobileEmulationEnabled=false, hasTouchScreen=false, platform=MAC, acceptSslCerts=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, platformName=MAC, setWindowRect=true, unexpectedAlertBehaviour=, applicationCacheEnabled=false, rotatable=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b), userDataDir=/var/folders/0w/z084sy393n7798ssctmpjhq00000gn/T/.org.chromium.Chromium.XRZTbU}, takesHeapSnapshot=true, pageLoadStrategy=normal, unhandledPromptBehavior=, databaseEnabled=false, handlesAlerts=true, version=61.0.3163.100, browserConnectionEnabled=false, nativeEvents=true, locationContextEnabled=true, cssSelectorsEnabled=true}]
182 | Session ID: fec53fe7539628c2a413fac2aed277ff
183 | *** Element info: {Using=xpath, value=//a[text()='test2 test2']//parent::td[@class='datalistrow']//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']}
184 | 	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215)
185 | 	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)
186 | 	at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
187 | 	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:82)
188 | 	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:45)
189 | 	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
190 | 	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
191 | 	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:646)
192 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:416)
193 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:518)
194 | 	at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
195 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:408)
196 | 	at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:105)
197 | 	at com.sun.proxy.$Proxy8.findElement(Unknown Source)
198 | 	at org.openqa.selenium.support.events.EventFiringWebDriver.findElement(EventFiringWebDriver.java:189)
199 | 	at com.crm.qa.pages.ContactsPage.selectContactsByName(ContactsPage.java:42)
200 | 	at com.crm.qa.testcases.ContactsPageTest.selectSingleContactsTest(ContactsPageTest.java:58)
201 | ... Removed 32 stack frames
Click to show all stack frames 202 |
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//a[text()='test2 test2']//parent::td[@class='datalistrow']//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']"}
203 |   (Session info: chrome=61.0.3163.100)
204 |   (Driver info: chromedriver=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b),platform=Mac OS X 10.12.6 x86_64) (WARNING: The server did not provide any stacktrace information)
205 | Command duration or timeout: 0 milliseconds
206 | For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
207 | Build info: version: '3.5.3', revision: 'a88d25fe6b', time: '2017-08-29T12:42:44.417Z'
208 | System info: host: 'Naveens-MacBook-Air.local', ip: 'fe80:0:0:0:828:e267:315b:c8a4%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '1.8.0_121'
209 | Driver info: org.openqa.selenium.chrome.ChromeDriver
210 | Capabilities [{mobileEmulationEnabled=false, hasTouchScreen=false, platform=MAC, acceptSslCerts=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, platformName=MAC, setWindowRect=true, unexpectedAlertBehaviour=, applicationCacheEnabled=false, rotatable=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.31.488774 (7e15618d1bf16df8bf0ecf2914ed1964a387ba0b), userDataDir=/var/folders/0w/z084sy393n7798ssctmpjhq00000gn/T/.org.chromium.Chromium.XRZTbU}, takesHeapSnapshot=true, pageLoadStrategy=normal, unhandledPromptBehavior=, databaseEnabled=false, handlesAlerts=true, version=61.0.3163.100, browserConnectionEnabled=false, nativeEvents=true, locationContextEnabled=true, cssSelectorsEnabled=true}]
211 | Session ID: fec53fe7539628c2a413fac2aed277ff
212 | *** Element info: {Using=xpath, value=//a[text()='test2 test2']//parent::td[@class='datalistrow']//preceding-sibling::td[@class='datalistrow']//input[@name='contact_id']}
213 | 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
214 | 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
215 | 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
216 | 	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
217 | 	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215)
218 | 	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167)
219 | 	at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
220 | 	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:82)
221 | 	at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:45)
222 | 	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
223 | 	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
224 | 	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:646)
225 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:416)
226 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:518)
227 | 	at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
228 | 	at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:408)
229 | 	at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
230 | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
231 | 	at java.lang.reflect.Method.invoke(Method.java:498)
232 | 	at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:105)
233 | 	at com.sun.proxy.$Proxy8.findElement(Unknown Source)
234 | 	at org.openqa.selenium.support.events.EventFiringWebDriver.findElement(EventFiringWebDriver.java:189)
235 | 	at com.crm.qa.pages.ContactsPage.selectContactsByName(ContactsPage.java:42)
236 | 	at com.crm.qa.testcases.ContactsPageTest.selectSingleContactsTest(ContactsPageTest.java:58)
237 | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
238 | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
239 | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
240 | 	at java.lang.reflect.Method.invoke(Method.java:498)
241 | 	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
242 | 	at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
243 | 	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
244 | 	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
245 | 	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
246 | 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
247 | 	at org.testng.TestRunner.privateRun(TestRunner.java:744)
248 | 	at org.testng.TestRunner.run(TestRunner.java:602)
249 | 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
250 | 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
251 | 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
252 | 	at org.testng.SuiteRunner.run(SuiteRunner.java:289)
253 | 	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
254 | 	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
255 | 	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
256 | 	at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
257 | 	at org.testng.TestNG.runSuites(TestNG.java:1144)
258 | 	at org.testng.TestNG.run(TestNG.java:1115)
259 | 	at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
260 | 	at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
261 | 	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
262 | 
20com.crm.qa.testcases.ContactsPageTest@5bcab519

266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 |
PASSED TESTS
Test methodExceptionTime (seconds)Instance
crmLogoImageTest
Test class: com.crm.qa.testcases.LoginPageTest
0com.crm.qa.testcases.LoginPageTest@5700d6b1
loginPageTitleTest
Test class: com.crm.qa.testcases.LoginPageTest
0com.crm.qa.testcases.LoginPageTest@5700d6b1
loginTest
Test class: com.crm.qa.testcases.LoginPageTest
4com.crm.qa.testcases.LoginPageTest@5700d6b1
validateCreateNewContact
Test class: com.crm.qa.testcases.ContactsPageTest
Parameters: Mr., Tom, Peter, Google
5com.crm.qa.testcases.ContactsPageTest@5bcab519
validateCreateNewContact
Test class: com.crm.qa.testcases.ContactsPageTest
Parameters: Dr., David, Cris, Amazon
5com.crm.qa.testcases.ContactsPageTest@5bcab519
validateCreateNewContact
Test class: com.crm.qa.testcases.ContactsPageTest
Parameters: Mrs., Mukta, Sharma, Ebay
4com.crm.qa.testcases.ContactsPageTest@5bcab519
verifyContactsLinkTest
Test class: com.crm.qa.testcases.HomePageTest
1com.crm.qa.testcases.HomePageTest@6fd02e5
verifyContactsPageLabel
Test class: com.crm.qa.testcases.ContactsPageTest
0com.crm.qa.testcases.ContactsPageTest@5bcab519
verifyHomePageTitleTest
Test class: com.crm.qa.testcases.HomePageTest
0com.crm.qa.testcases.HomePageTest@6fd02e5
verifyUserNameTest
Test class: com.crm.qa.testcases.HomePageTest
0com.crm.qa.testcases.HomePageTest@6fd02e5

324 | 325 | -------------------------------------------------------------------------------- /test-output/FREE CRM Application Test Automation Test Suite/Free CRM App Test Cases.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 21 | 50 | 51 | 52 | 53 | 54 | 55 | 66 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /test-output/FREE CRM Application Test Automation Test Suite/testng-failed.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test-output/TestSuite/testGuru.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | TestNG: testGuru 4 | 5 | 6 | 7 | 11 | 53 | 54 | 55 | 56 |

testGuru

57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 |
Tests passed/Failed/Skipped:3/0/0
Started on:Tue Sep 26 16:29:19 IST 2017
Total time:8 seconds (8306 ms)
Included groups:
Excluded groups:

69 | (Hover the method name to see the test class name)

70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 |
PASSED TESTS
Test methodExceptionTime (seconds)Instance
executSessionOne
Test class: com.crm.qa.testcases.TestMultipleSession
5com.crm.qa.testcases.TestMultipleSession@1794d431
executSessionThree
Test class: com.crm.qa.testcases.TestMultipleSession
5com.crm.qa.testcases.TestMultipleSession@1794d431
executeSessionTwo
Test class: com.crm.qa.testcases.TestMultipleSession
2com.crm.qa.testcases.TestMultipleSession@1794d431

93 | 94 | -------------------------------------------------------------------------------- /test-output/TestSuite/testGuru.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test-output/bullet_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/test-output/bullet_point.png -------------------------------------------------------------------------------- /test-output/collapseall.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/test-output/collapseall.gif -------------------------------------------------------------------------------- /test-output/emailable-report.html: -------------------------------------------------------------------------------- 1 | 2 | TestNG Report
Test# Passed# Skipped# FailedTime (ms)Included GroupsExcluded Groups
Default suite
Default test00159,031
ClassMethodStartTime (ms)
Default suite
Default test — failed
com.crm.qa.testcases.FreeCrmTestfreeCrmTitleTest153043098043951754

Default test

com.crm.qa.testcases.FreeCrmTest#freeCrmTitleTest

Exception
java.lang.AssertionError: expected [true] but found [false] 3 | at org.testng.Assert.fail(Assert.java:93) 4 | at org.testng.Assert.failNotEquals(Assert.java:512) 5 | at org.testng.Assert.assertTrue(Assert.java:41) 6 | at org.testng.Assert.assertTrue(Assert.java:51) 7 | at com.crm.qa.testcases.FreeCrmTest.freeCrmTitleTest(FreeCrmTest.java:41) 8 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 9 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 10 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 11 | at java.lang.reflect.Method.invoke(Method.java:498) 12 | at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) 13 | at org.testng.internal.Invoker.invokeMethod(Invoker.java:661) 14 | at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869) 15 | at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193) 16 | at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) 17 | at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 18 | at org.testng.TestRunner.privateRun(TestRunner.java:744) 19 | at org.testng.TestRunner.run(TestRunner.java:602) 20 | at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) 21 | at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) 22 | at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) 23 | at org.testng.SuiteRunner.run(SuiteRunner.java:289) 24 | at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 25 | at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 26 | at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) 27 | at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 28 | at org.testng.TestNG.runSuites(TestNG.java:1144) 29 | at org.testng.TestNG.run(TestNG.java:1115) 30 | at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) 31 | at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 32 | at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77) 33 |

back to summary

-------------------------------------------------------------------------------- /test-output/failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/test-output/failed.png -------------------------------------------------------------------------------- /test-output/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | TestNG reports 7 | 8 | 9 | 10 | 11 | 12 | 18 | 21 | 22 | 23 | 24 |
25 | Test results 26 |
27 | 1 suite, 1 failed test 28 |
29 | 117 |
118 |
119 |
120 |
121 |
122 | 123 | com.crm.qa.testcases.FreeCrmTest 124 |
125 |
126 |
127 |
128 | 129 | 130 | freeCrmTitleTest 131 |
java.lang.AssertionError: expected [true] but found [false] 132 | at org.testng.Assert.fail(Assert.java:93) 133 | at org.testng.Assert.failNotEquals(Assert.java:512) 134 | at org.testng.Assert.assertTrue(Assert.java:41) 135 | at org.testng.Assert.assertTrue(Assert.java:51) 136 | at com.crm.qa.testcases.FreeCrmTest.freeCrmTitleTest(FreeCrmTest.java:41) 137 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 138 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 139 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 140 | at java.lang.reflect.Method.invoke(Method.java:498) 141 | at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) 142 | at org.testng.internal.Invoker.invokeMethod(Invoker.java:661) 143 | at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869) 144 | at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193) 145 | at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) 146 | at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 147 | at org.testng.TestRunner.privateRun(TestRunner.java:744) 148 | at org.testng.TestRunner.run(TestRunner.java:602) 149 | at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) 150 | at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) 151 | at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) 152 | at org.testng.SuiteRunner.run(SuiteRunner.java:289) 153 | at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 154 | at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 155 | at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) 156 | at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 157 | at org.testng.TestNG.runSuites(TestNG.java:1144) 158 | at org.testng.TestNG.run(TestNG.java:1115) 159 | at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) 160 | at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 161 | at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77) 162 | 163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 | /private/var/folders/fd/lw5s91x96f947xsp40gd_2180000gp/T/testng-eclipse--2091497846/testng-customsuite.xml 172 |
173 |
174 |
175 | <?xml version="1.0" encoding="UTF-8"?>
176 | <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
177 | <suite guice-stage="DEVELOPMENT" name="Default suite">
178 |   <test verbose="2" name="Default test">
179 |     <classes>
180 |       <class name="com.crm.qa.testcases.FreeCrmTest"/>
181 |     </classes>
182 |   </test> <!-- Default test -->
183 | </suite> <!-- Default suite -->
184 |             
185 |
186 |
187 |
188 |
189 | Tests for Default suite 190 |
191 |
192 |
    193 |
  • 194 | Default test (1 class) 195 |
  • 196 |
197 |
198 |
199 |
200 |
201 | Groups for Default suite 202 |
203 |
204 |
205 |
206 |
207 |
208 | Times for Default suite 209 |
210 |
211 |
212 | 229 | Total running time: 51 seconds 230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 | Reporter output for Default suite 238 |
239 |
240 |
241 |
242 |
243 |
244 | 0 ignored methods 245 |
246 |
247 |
248 |
249 |
250 |
251 | Methods in chronological order 252 |
253 |
254 |
255 |
com.crm.qa.testcases.FreeCrmTest
256 |
257 | setUp 258 | 0 ms 259 |
260 |
261 | 262 | 263 | freeCrmTitleTest 264 | 7246 ms 265 |
266 |
267 |
268 |
269 |
270 | 271 | 272 | -------------------------------------------------------------------------------- /test-output/junitreports/TEST-com.crm.qa.testcases.ContactsPageTest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 14 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /test-output/junitreports/TEST-com.crm.qa.testcases.FreeCrmTest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /test-output/junitreports/TEST-com.crm.qa.testcases.HomePageTest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | (EventFiringWebDriver.java:93) 9 | at com.crm.qa.base.TestBase.initialization(TestBase.java:53) 10 | at com.crm.qa.testcases.HomePageTest.setUp(HomePageTest.java:31) 11 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 12 | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 13 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 14 | at java.lang.reflect.Method.invoke(Method.java:498) 15 | at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) 16 | at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523) 17 | at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:224) 18 | at org.testng.internal.Invoker.invokeMethod(Invoker.java:599) 19 | at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869) 20 | at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193) 21 | at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) 22 | at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 23 | at org.testng.TestRunner.privateRun(TestRunner.java:744) 24 | at org.testng.TestRunner.run(TestRunner.java:602) 25 | at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) 26 | at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) 27 | at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) 28 | at org.testng.SuiteRunner.run(SuiteRunner.java:289) 29 | at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 30 | at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 31 | at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) 32 | at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 33 | at org.testng.TestNG.runSuites(TestNG.java:1144) 34 | at org.testng.TestNG.run(TestNG.java:1115) 35 | at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) 36 | at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 37 | at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77) 38 | ]]> 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /test-output/junitreports/TEST-com.crm.qa.testcases.LoginPageTest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test-output/junitreports/TEST-com.crm.qa.testcases.TestMultipleSession.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test-output/navigator-bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/test-output/navigator-bullet.png -------------------------------------------------------------------------------- /test-output/old/Default suite/Default test.properties: -------------------------------------------------------------------------------- 1 | [SuiteResult context=Default test] -------------------------------------------------------------------------------- /test-output/old/Default suite/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
Class nameMethod nameGroups
com.crm.qa.testcases.FreeCrmTest  
@Test
 freeCrmTitleTest 
@BeforeClass
@BeforeMethod
 setUp 
@AfterMethod
@AfterClass
33 | -------------------------------------------------------------------------------- /test-output/old/Default suite/groups.html: -------------------------------------------------------------------------------- 1 |

Groups used for this test run

-------------------------------------------------------------------------------- /test-output/old/Default suite/index.html: -------------------------------------------------------------------------------- 1 | Results for Default suite 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /test-output/old/Default suite/main.html: -------------------------------------------------------------------------------- 1 | Results for Default suite 2 | Select a result on the left-hand pane. 3 | -------------------------------------------------------------------------------- /test-output/old/Default suite/methods-alphabetical.html: -------------------------------------------------------------------------------- 1 |

Methods run, sorted chronologically

>> means before, << means after


Default suite

(Hover the method name to see the test class name)

2 | 3 | 4 | 5 | 6 | 7 | 8 |
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
18/07/01 13:13:00 0      freeCrmTitleTestmain@1287934450
18/07/01 13:12:53 -7245     >>setUp  main@1287934450
9 | -------------------------------------------------------------------------------- /test-output/old/Default suite/methods-not-run.html: -------------------------------------------------------------------------------- 1 |

Methods that were not run

2 |
-------------------------------------------------------------------------------- /test-output/old/Default suite/methods.html: -------------------------------------------------------------------------------- 1 |

Methods run, sorted chronologically

>> means before, << means after


Default suite

(Hover the method name to see the test class name)

2 | 3 | 4 | 5 | 6 | 7 | 8 |
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
18/07/01 13:12:53 0     >>setUp  main@1287934450
18/07/01 13:13:00 7245      freeCrmTitleTestmain@1287934450
9 | -------------------------------------------------------------------------------- /test-output/old/Default suite/reporter-output.html: -------------------------------------------------------------------------------- 1 |

Reporter output

-------------------------------------------------------------------------------- /test-output/old/Default suite/testng.xml.html: -------------------------------------------------------------------------------- 1 | testng.xml for Default suite<?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 verbose="2" name="Default test">
    <classes>
      <class name="com.crm.qa.testcases.FreeCrmTest"/>
    </classes>
  </test> <!-- Default test -->
</suite> <!-- Default suite -->
-------------------------------------------------------------------------------- /test-output/old/Default suite/toc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Results for Default suite 4 | 5 | 6 | 7 | 8 |

Results for
Default suite

9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 |
1 test1 class1 method:
14 |   chronological
15 |   alphabetical
16 |   not run (0)
0 groupreporter outputtestng.xml
23 | 24 |

29 |

25 |
Default test (0/1/0) 26 | Results 27 |
28 |
30 | -------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/Free CRM App Test Cases.properties: -------------------------------------------------------------------------------- 1 | [SuiteResult context=Free CRM App Test Cases] -------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 |
Class nameMethod nameGroups
com.crm.qa.testcases.HomePageTest  
@Test
 verifyHomePageTitleTest 
 verifyUserNameTest 
 verifyContactsLinkTest 
@BeforeClass
@BeforeMethod
 setUp 
@AfterMethod
 tearDown 
@AfterClass
com.crm.qa.testcases.ContactsPageTest  
@Test
 validateCreateNewContact 
 selectMultipleContactsTest 
 verifyContactsPageLabel 
 selectSingleContactsTest 
@BeforeClass
@BeforeMethod
 setUp 
@AfterMethod
 tearDown 
@AfterClass
com.crm.qa.testcases.LoginPageTest  
@Test
 loginPageTitleTest 
 crmLogoImageTest 
 loginTest 
@BeforeClass
@BeforeMethod
 setUp 
@AfterMethod
 tearDown 
@AfterClass
125 | -------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/groups.html: -------------------------------------------------------------------------------- 1 |

Groups used for this test run

-------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/index.html: -------------------------------------------------------------------------------- 1 | Results for FREE CRM Application Test Automation Test Suite 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/main.html: -------------------------------------------------------------------------------- 1 | Results for FREE CRM Application Test Automation Test Suite 2 | Select a result on the left-hand pane. 3 | -------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/methods-alphabetical.html: -------------------------------------------------------------------------------- 1 |

Methods run, sorted chronologically

>> means before, << means after


FREE CRM Application Test Automation Test Suite

(Hover the method name to see the test class name)

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 |
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
17/10/13 23:50:33 0      crmLogoImageTestmain@418304857
17/10/13 23:50:03 -30008      loginPageTitleTestmain@418304857
17/10/13 23:51:21 48234      loginTestmain@418304857
17/10/13 23:51:52 78726      selectMultipleContactsTestmain@418304857
17/10/13 23:50:56 22918      selectSingleContactsTestmain@418304857
17/10/13 23:49:56 -36511     >>setUp  main@418304857
17/10/13 23:50:03 -29686     >>setUp  main@418304857
17/10/13 23:50:16 -16458     >>setUp  main@418304857
17/10/13 23:50:28 -4406     >>setUp  main@418304857
17/10/13 23:50:33 166     >>setUp  main@418304857
17/10/13 23:50:45 12184     >>setUp  main@418304857
17/10/13 23:51:17 43710     >>setUp  main@418304857
17/10/13 23:51:25 52581     >>setUp  main@418304857
17/10/13 23:51:41 68622     >>setUp  main@418304857
17/10/13 23:52:14 100907     >>setUp  main@418304857
17/10/13 23:52:33 119952     >>setUp  main@418304857
17/10/13 23:52:52 138881     >>setUp  main@418304857
17/10/13 23:50:03 -29943     <<tearDown  main@418304857
17/10/13 23:50:16 -16565     <<tearDown  main@418304857
17/10/13 23:50:28 -4528     <<tearDown  main@418304857
17/10/13 23:50:33 68     <<tearDown  main@418304857
17/10/13 23:50:45 12021     <<tearDown  main@418304857
17/10/13 23:51:16 43556     <<tearDown  main@418304857
17/10/13 23:51:25 52495     <<tearDown  main@418304857
17/10/13 23:51:41 68477     <<tearDown  main@418304857
17/10/13 23:52:12 99210     <<tearDown  main@418304857
17/10/13 23:52:33 119855     <<tearDown  main@418304857
17/10/13 23:52:52 138713     <<tearDown  main@418304857
17/10/13 23:53:07 153718     <<tearDown  main@418304857
17/10/13 23:52:27 114658      validateCreateNewContactmain@418304857
17/10/13 23:52:46 133455      validateCreateNewContactmain@418304857
17/10/13 23:53:02 149031      validateCreateNewContactmain@418304857
17/10/13 23:51:39 66667      verifyContactsLinkTestmain@418304857
17/10/13 23:50:28 -4702      verifyContactsPageLabelmain@418304857
17/10/13 23:50:16 -16666      verifyHomePageTitleTestmain@418304857
17/10/13 23:50:44 11292      verifyUserNameTestmain@418304857
77 | -------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/methods-not-run.html: -------------------------------------------------------------------------------- 1 |

Methods that were not run

2 |
-------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/methods.html: -------------------------------------------------------------------------------- 1 |

Methods run, sorted chronologically

>> means before, << means after


FREE CRM Application Test Automation Test Suite

(Hover the method name to see the test class name)

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 |
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
17/10/13 23:49:56 0     >>setUp  main@418304857
17/10/13 23:50:03 6503      loginPageTitleTestmain@418304857
17/10/13 23:50:03 6568     <<tearDown  main@418304857
17/10/13 23:50:03 6825     >>setUp  main@418304857
17/10/13 23:50:16 19845      verifyHomePageTitleTestmain@418304857
17/10/13 23:50:16 19946     <<tearDown  main@418304857
17/10/13 23:50:16 20053     >>setUp  main@418304857
17/10/13 23:50:28 31809      verifyContactsPageLabelmain@418304857
17/10/13 23:50:28 31983     <<tearDown  main@418304857
17/10/13 23:50:28 32105     >>setUp  main@418304857
17/10/13 23:50:33 36511      crmLogoImageTestmain@418304857
17/10/13 23:50:33 36579     <<tearDown  main@418304857
17/10/13 23:50:33 36677     >>setUp  main@418304857
17/10/13 23:50:44 47803      verifyUserNameTestmain@418304857
17/10/13 23:50:45 48532     <<tearDown  main@418304857
17/10/13 23:50:45 48695     >>setUp  main@418304857
17/10/13 23:50:56 59429      selectSingleContactsTestmain@418304857
17/10/13 23:51:16 80067     <<tearDown  main@418304857
17/10/13 23:51:17 80221     >>setUp  main@418304857
17/10/13 23:51:21 84745      loginTestmain@418304857
17/10/13 23:51:25 89006     <<tearDown  main@418304857
17/10/13 23:51:25 89092     >>setUp  main@418304857
17/10/13 23:51:39 103178      verifyContactsLinkTestmain@418304857
17/10/13 23:51:41 104988     <<tearDown  main@418304857
17/10/13 23:51:41 105133     >>setUp  main@418304857
17/10/13 23:51:52 115237      selectMultipleContactsTestmain@418304857
17/10/13 23:52:12 135721     <<tearDown  main@418304857
17/10/13 23:52:14 137418     >>setUp  main@418304857
17/10/13 23:52:27 151169      validateCreateNewContactmain@418304857
17/10/13 23:52:33 156366     <<tearDown  main@418304857
17/10/13 23:52:33 156463     >>setUp  main@418304857
17/10/13 23:52:46 169966      validateCreateNewContactmain@418304857
17/10/13 23:52:52 175224     <<tearDown  main@418304857
17/10/13 23:52:52 175392     >>setUp  main@418304857
17/10/13 23:53:02 185542      validateCreateNewContactmain@418304857
17/10/13 23:53:07 190229     <<tearDown  main@418304857
77 | -------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/reporter-output.html: -------------------------------------------------------------------------------- 1 |

Reporter output

-------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/testng.xml.html: -------------------------------------------------------------------------------- 1 | testng.xml for FREE CRM Application Test Automation Test Suite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite guice-stage="DEVELOPMENT" name="FREE CRM Application Test Automation Test Suite">
  <listeners>
    <listener class-name="com.qa.ExtentReportListener.ExtentReporterNG"/>
  </listeners>
  <test name="Free CRM App Test Cases">
    <classes>
      <class name="com.crm.qa.testcases.LoginPageTest"/>
      <class name="com.crm.qa.testcases.HomePageTest"/>
      <class name="com.crm.qa.testcases.ContactsPageTest"/>
    </classes>
  </test> <!-- Free CRM App Test Cases -->
</suite> <!-- FREE CRM Application Test Automation Test Suite -->
-------------------------------------------------------------------------------- /test-output/old/FREE CRM Application Test Automation Test Suite/toc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Results for FREE CRM Application Test Automation Test Suite 4 | 5 | 6 | 7 | 8 |

Results for
FREE CRM Application Test Automation Test Suite

9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 |
1 test3 classes10 methods:
14 |   chronological
15 |   alphabetical
16 |   not run (0)
0 groupreporter outputtestng.xml
23 | 24 |

29 |

25 |
Free CRM App Test Cases (10/2/0) 26 | Results 27 |
28 |
30 | -------------------------------------------------------------------------------- /test-output/old/TestSuite/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
Class nameMethod nameGroups
com.crm.qa.testcases.TestMultipleSession  
@Test
 executSessionOne 
 executSessionThree 
 executeSessionTwo 
@BeforeClass
@BeforeMethod
@AfterMethod
@AfterClass
37 | -------------------------------------------------------------------------------- /test-output/old/TestSuite/groups.html: -------------------------------------------------------------------------------- 1 |

Groups used for this test run

-------------------------------------------------------------------------------- /test-output/old/TestSuite/index.html: -------------------------------------------------------------------------------- 1 | Results for TestSuite 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /test-output/old/TestSuite/main.html: -------------------------------------------------------------------------------- 1 | Results for TestSuite 2 | Select a result on the left-hand pane. 3 | -------------------------------------------------------------------------------- /test-output/old/TestSuite/methods-alphabetical.html: -------------------------------------------------------------------------------- 1 |

Methods run, sorted chronologically

>> means before, << means after


TestSuite

(Hover the method name to see the test class name)

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
17/09/26 16:28:37 0      executSessionOneTestNG-test=testGuru-1@649293552
17/09/26 16:28:37 0      executSessionThreeTestNG-test=testGuru-2@267709270
17/09/26 16:28:37 0      executeSessionTwoTestNG-test=testGuru-3@2037721091
11 | -------------------------------------------------------------------------------- /test-output/old/TestSuite/methods-not-run.html: -------------------------------------------------------------------------------- 1 |

Methods that were not run

2 |
-------------------------------------------------------------------------------- /test-output/old/TestSuite/methods.html: -------------------------------------------------------------------------------- 1 |

Methods run, sorted chronologically

>> means before, << means after


TestSuite

(Hover the method name to see the test class name)

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
TimeDelta (ms)Suite
configuration
Test
configuration
Class
configuration
Groups
configuration
Method
configuration
Test
method
ThreadInstances
17/09/26 16:28:37 0      executSessionOneTestNG-test=testGuru-1@649293552
17/09/26 16:28:37 0      executSessionThreeTestNG-test=testGuru-2@267709270
17/09/26 16:28:37 0      executeSessionTwoTestNG-test=testGuru-3@2037721091
11 | -------------------------------------------------------------------------------- /test-output/old/TestSuite/reporter-output.html: -------------------------------------------------------------------------------- 1 |

Reporter output

-------------------------------------------------------------------------------- /test-output/old/TestSuite/testGuru.properties: -------------------------------------------------------------------------------- 1 | [SuiteResult context=testGuru] -------------------------------------------------------------------------------- /test-output/old/TestSuite/testng.xml.html: -------------------------------------------------------------------------------- 1 | testng.xml for TestSuite<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="3" guice-stage="DEVELOPMENT" name="TestSuite" parallel="methods">
  <test name="testGuru">
    <classes>
      <class name="com.crm.qa.testcases.TestMultipleSession"/>
    </classes>
  </test> <!-- testGuru -->
</suite> <!-- TestSuite -->
-------------------------------------------------------------------------------- /test-output/old/TestSuite/toc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Results for TestSuite 4 | 5 | 6 | 7 | 8 |

Results for
TestSuite

9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 |
1 test1 class3 methods:
14 |   chronological
15 |   alphabetical
16 |   not run (0)
0 groupreporter outputtestng.xml
23 | 24 |

29 |

25 |
testGuru (3/0/0) 26 | Results 27 |
28 |
30 | -------------------------------------------------------------------------------- /test-output/old/index.html: -------------------------------------------------------------------------------- 1 | 2 | Test results 3 | 4 | 5 |

Test results

6 | 7 | 8 | 9 |
SuitePassedFailedSkippedtestng.xml
Total010 
Default suite010Link
10 | -------------------------------------------------------------------------------- /test-output/passed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/test-output/passed.png -------------------------------------------------------------------------------- /test-output/skipped.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naveenanimation20/PageObjectModel/77e346fc6d653213c02f567fa9075c9f559fdb15/test-output/skipped.png -------------------------------------------------------------------------------- /test-output/testng-failed.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test-output/testng-reports.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0px 0px 5px 5px; 3 | } 4 | 5 | ul { 6 | margin: 0px; 7 | } 8 | 9 | li { 10 | list-style-type: none; 11 | } 12 | 13 | a { 14 | text-decoration: none; 15 | } 16 | 17 | a:hover { 18 | text-decoration: underline; 19 | } 20 | 21 | .navigator-selected { 22 | background: #ffa500; 23 | } 24 | 25 | .wrapper { 26 | position: absolute; 27 | top: 60px; 28 | bottom: 0; 29 | left: 400px; 30 | right: 0; 31 | overflow: auto; 32 | } 33 | 34 | .navigator-root { 35 | position: absolute; 36 | top: 60px; 37 | bottom: 0; 38 | left: 0; 39 | width: 400px; 40 | overflow-y: auto; 41 | } 42 | 43 | .suite { 44 | margin: 0px 10px 10px 0px; 45 | background-color: #fff8dc; 46 | } 47 | 48 | .suite-name { 49 | padding-left: 10px; 50 | font-size: 25px; 51 | font-family: Times; 52 | } 53 | 54 | .main-panel-header { 55 | padding: 5px; 56 | background-color: #9FB4D9; //afeeee; 57 | font-family: monospace; 58 | font-size: 18px; 59 | } 60 | 61 | .main-panel-content { 62 | padding: 5px; 63 | margin-bottom: 10px; 64 | background-color: #DEE8FC; //d0ffff; 65 | } 66 | 67 | .rounded-window { 68 | border-radius: 10px; 69 | border-style: solid; 70 | border-width: 1px; 71 | } 72 | 73 | .rounded-window-top { 74 | border-top-right-radius: 10px 10px; 75 | border-top-left-radius: 10px 10px; 76 | border-style: solid; 77 | border-width: 1px; 78 | overflow: auto; 79 | } 80 | 81 | .light-rounded-window-top { 82 | border-top-right-radius: 10px 10px; 83 | border-top-left-radius: 10px 10px; 84 | } 85 | 86 | .rounded-window-bottom { 87 | border-style: solid; 88 | border-width: 0px 1px 1px 1px; 89 | border-bottom-right-radius: 10px 10px; 90 | border-bottom-left-radius: 10px 10px; 91 | overflow: auto; 92 | } 93 | 94 | .method-name { 95 | font-size: 12px; 96 | font-family: monospace; 97 | } 98 | 99 | .method-content { 100 | border-style: solid; 101 | border-width: 0px 0px 1px 0px; 102 | margin-bottom: 10; 103 | padding-bottom: 5px; 104 | width: 80%; 105 | } 106 | 107 | .parameters { 108 | font-size: 14px; 109 | font-family: monospace; 110 | } 111 | 112 | .stack-trace { 113 | white-space: pre; 114 | font-family: monospace; 115 | font-size: 12px; 116 | font-weight: bold; 117 | margin-top: 0px; 118 | margin-left: 20px; 119 | } 120 | 121 | .testng-xml { 122 | font-family: monospace; 123 | } 124 | 125 | .method-list-content { 126 | margin-left: 10px; 127 | } 128 | 129 | .navigator-suite-content { 130 | margin-left: 10px; 131 | font: 12px 'Lucida Grande'; 132 | } 133 | 134 | .suite-section-title { 135 | margin-top: 10px; 136 | width: 80%; 137 | border-style: solid; 138 | border-width: 1px 0px 0px 0px; 139 | font-family: Times; 140 | font-size: 18px; 141 | font-weight: bold; 142 | } 143 | 144 | .suite-section-content { 145 | list-style-image: url(bullet_point.png); 146 | } 147 | 148 | .top-banner-root { 149 | position: absolute; 150 | top: 0; 151 | height: 45px; 152 | left: 0; 153 | right: 0; 154 | padding: 5px; 155 | margin: 0px 0px 5px 0px; 156 | background-color: #0066ff; 157 | font-family: Times; 158 | color: #fff; 159 | text-align: center; 160 | } 161 | 162 | .top-banner-title-font { 163 | font-size: 25px; 164 | } 165 | 166 | .test-name { 167 | font-family: 'Lucida Grande'; 168 | font-size: 16px; 169 | } 170 | 171 | .suite-icon { 172 | padding: 5px; 173 | float: right; 174 | height: 20; 175 | } 176 | 177 | .test-group { 178 | font: 20px 'Lucida Grande'; 179 | margin: 5px 5px 10px 5px; 180 | border-width: 0px 0px 1px 0px; 181 | border-style: solid; 182 | padding: 5px; 183 | } 184 | 185 | .test-group-name { 186 | font-weight: bold; 187 | } 188 | 189 | .method-in-group { 190 | font-size: 16px; 191 | margin-left: 80px; 192 | } 193 | 194 | table.google-visualization-table-table { 195 | width: 100%; 196 | } 197 | 198 | .reporter-method-name { 199 | font-size: 14px; 200 | font-family: monospace; 201 | } 202 | 203 | .reporter-method-output-div { 204 | padding: 5px; 205 | margin: 0px 0px 5px 20px; 206 | font-size: 12px; 207 | font-family: monospace; 208 | border-width: 0px 0px 0px 1px; 209 | border-style: solid; 210 | } 211 | 212 | .ignored-class-div { 213 | font-size: 14px; 214 | font-family: monospace; 215 | } 216 | 217 | .ignored-methods-div { 218 | padding: 5px; 219 | margin: 0px 0px 5px 20px; 220 | font-size: 12px; 221 | font-family: monospace; 222 | border-width: 0px 0px 0px 1px; 223 | border-style: solid; 224 | } 225 | 226 | .border-failed { 227 | border-top-left-radius: 10px 10px; 228 | border-bottom-left-radius: 10px 10px; 229 | border-style: solid; 230 | border-width: 0px 0px 0px 10px; 231 | border-color: #f00; 232 | } 233 | 234 | .border-skipped { 235 | border-top-left-radius: 10px 10px; 236 | border-bottom-left-radius: 10px 10px; 237 | border-style: solid; 238 | border-width: 0px 0px 0px 10px; 239 | border-color: #edc600; 240 | } 241 | 242 | .border-passed { 243 | border-top-left-radius: 10px 10px; 244 | border-bottom-left-radius: 10px 10px; 245 | border-style: solid; 246 | border-width: 0px 0px 0px 10px; 247 | border-color: #19f52d; 248 | } 249 | 250 | .times-div { 251 | text-align: center; 252 | padding: 5px; 253 | } 254 | 255 | .suite-total-time { 256 | font: 16px 'Lucida Grande'; 257 | } 258 | 259 | .configuration-suite { 260 | margin-left: 20px; 261 | } 262 | 263 | .configuration-test { 264 | margin-left: 40px; 265 | } 266 | 267 | .configuration-class { 268 | margin-left: 60px; 269 | } 270 | 271 | .configuration-method { 272 | margin-left: 80px; 273 | } 274 | 275 | .test-method { 276 | margin-left: 100px; 277 | } 278 | 279 | .chronological-class { 280 | background-color: #0ccff; 281 | border-style: solid; 282 | border-width: 0px 0px 1px 1px; 283 | } 284 | 285 | .method-start { 286 | float: right; 287 | } 288 | 289 | .chronological-class-name { 290 | padding: 0px 0px 0px 5px; 291 | color: #008; 292 | } 293 | 294 | .after, .before, .test-method { 295 | font-family: monospace; 296 | font-size: 14px; 297 | } 298 | 299 | .navigator-suite-header { 300 | font-size: 22px; 301 | margin: 0px 10px 5px 0px; 302 | background-color: #deb887; 303 | text-align: center; 304 | } 305 | 306 | .collapse-all-icon { 307 | padding: 5px; 308 | float: right; 309 | } 310 | -------------------------------------------------------------------------------- /test-output/testng-reports.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | $('a.navigator-link').click(function() { 3 | // Extract the panel for this link 4 | var panel = getPanelName($(this)); 5 | 6 | // Mark this link as currently selected 7 | $('.navigator-link').parent().removeClass('navigator-selected'); 8 | $(this).parent().addClass('navigator-selected'); 9 | 10 | showPanel(panel); 11 | }); 12 | 13 | installMethodHandlers('failed'); 14 | installMethodHandlers('skipped'); 15 | installMethodHandlers('passed', true); // hide passed methods by default 16 | 17 | $('a.method').click(function() { 18 | showMethod($(this)); 19 | return false; 20 | }); 21 | 22 | // Hide all the panels and display the first one (do this last 23 | // to make sure the click() will invoke the listeners) 24 | $('.panel').hide(); 25 | $('.navigator-link').first().click(); 26 | 27 | // Collapse/expand the suites 28 | $('a.collapse-all-link').click(function() { 29 | var contents = $('.navigator-suite-content'); 30 | if (contents.css('display') == 'none') { 31 | contents.show(); 32 | } else { 33 | contents.hide(); 34 | } 35 | }); 36 | }); 37 | 38 | // The handlers that take care of showing/hiding the methods 39 | function installMethodHandlers(name, hide) { 40 | function getContent(t) { 41 | return $('.method-list-content.' + name + "." + t.attr('panel-name')); 42 | } 43 | 44 | function getHideLink(t, name) { 45 | var s = 'a.hide-methods.' + name + "." + t.attr('panel-name'); 46 | return $(s); 47 | } 48 | 49 | function getShowLink(t, name) { 50 | return $('a.show-methods.' + name + "." + t.attr('panel-name')); 51 | } 52 | 53 | function getMethodPanelClassSel(element, name) { 54 | var panelName = getPanelName(element); 55 | var sel = '.' + panelName + "-class-" + name; 56 | return $(sel); 57 | } 58 | 59 | $('a.hide-methods.' + name).click(function() { 60 | var w = getContent($(this)); 61 | w.hide(); 62 | getHideLink($(this), name).hide(); 63 | getShowLink($(this), name).show(); 64 | getMethodPanelClassSel($(this), name).hide(); 65 | }); 66 | 67 | $('a.show-methods.' + name).click(function() { 68 | var w = getContent($(this)); 69 | w.show(); 70 | getHideLink($(this), name).show(); 71 | getShowLink($(this), name).hide(); 72 | showPanel(getPanelName($(this))); 73 | getMethodPanelClassSel($(this), name).show(); 74 | }); 75 | 76 | if (hide) { 77 | $('a.hide-methods.' + name).click(); 78 | } else { 79 | $('a.show-methods.' + name).click(); 80 | } 81 | } 82 | 83 | function getHashForMethod(element) { 84 | return element.attr('hash-for-method'); 85 | } 86 | 87 | function getPanelName(element) { 88 | return element.attr('panel-name'); 89 | } 90 | 91 | function showPanel(panelName) { 92 | $('.panel').hide(); 93 | var panel = $('.panel[panel-name="' + panelName + '"]'); 94 | panel.show(); 95 | } 96 | 97 | function showMethod(element) { 98 | var hashTag = getHashForMethod(element); 99 | var panelName = getPanelName(element); 100 | showPanel(panelName); 101 | var current = document.location.href; 102 | var base = current.substring(0, current.indexOf('#')) 103 | document.location.href = base + '#' + hashTag; 104 | var newPosition = $(document).scrollTop() - 65; 105 | $(document).scrollTop(newPosition); 106 | } 107 | 108 | function drawTable() { 109 | for (var i = 0; i < suiteTableInitFunctions.length; i++) { 110 | window[suiteTableInitFunctions[i]](); 111 | } 112 | 113 | for (var k in window.suiteTableData) { 114 | var v = window.suiteTableData[k]; 115 | var div = v.tableDiv; 116 | var data = v.tableData 117 | var table = new google.visualization.Table(document.getElementById(div)); 118 | table.draw(data, { 119 | showRowNumber : false 120 | }); 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /test-output/testng-results.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /test-output/testng.css: -------------------------------------------------------------------------------- 1 | .invocation-failed, .test-failed { background-color: #DD0000; } 2 | .invocation-percent, .test-percent { background-color: #006600; } 3 | .invocation-passed, .test-passed { background-color: #00AA00; } 4 | .invocation-skipped, .test-skipped { background-color: #CCCC00; } 5 | 6 | .main-page { 7 | font-size: x-large; 8 | } 9 | 10 | --------------------------------------------------------------------------------