documenting my Automation test script practice on parabank demo site

This commit is contained in:
arul 2025-11-26 22:41:38 +05:30
commit 7d8e390612
79 changed files with 3977 additions and 0 deletions

BIN
AccountID.xlsx Normal file

Binary file not shown.

397
ExtentReportResults.html Normal file
View File

@ -0,0 +1,397 @@
<!DOCTYPE html>
<html>
<head>
<!--
ExtentReports Library 2.41.1 | http://relevantcodes.com/extentreports-for-selenium/ | https://github.com/anshooarora/
Copyright (c) 2015, Anshoo Arora (Relevant Codes) | Copyrights licensed under the New BSD License | http://opensource.org/licenses/BSD-3-Clause
Documentation: http://extentreports.relevantcodes.com
-->
<meta charset='UTF-8' />
<meta name='description' content='ExtentReports (by Anshoo Arora) is a reporting library for automation testing for .NET and Java. It creates detailed and beautiful HTML reports for modern browsers. ExtentReports shows test and step summary along with dashboards, system and environment details for quick analysis of your tests.' />
<meta name='robots' content='noodp, noydir' />
<meta name='viewport' content='width=device-width, initial-scale=1' />
<meta name='extentx' id='extentx' content='' />
<title>
ExtentReports 2.0
</title>
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,600' rel='stylesheet' type='text/css'>
<link href='https://cdn.rawgit.com/anshooarora/extentreports/6032d73243ba4fe4fb8769eb9c315d4fdf16fe68/cdn/extent.css' type='text/css' rel='stylesheet' />
<style>
</style>
</head>
<body class='extent default standard hide-overflow'>
<!-- nav -->
<nav>
<div class='logo-container blue darken-2'>
<a class='logo-content' href='http://extentreports.relevantcodes.com'>
<span>ExtentReports</span>
</a>
<a href='#' data-activates='slide-out' class='button-collapse hide-on-large-only'><i class='mdi-navigation-apps'></i></a>
</div>
<ul id='slide-out' class='side-nav fixed hide-on-med-and-down'>
<li class='analysis waves-effect active'><a href='#!' class='test-view' onclick="_updateCurrentStage(0)"><i class='mdi-action-dashboard'></i>Test Details</a></li>
<li class='analysis waves-effect'>
<a href='#!' onclick="_updateCurrentStage(-1)" class='dashboard-view'><i class='mdi-action-track-changes'></i></i>Analysis</a>
</li>
</ul>
<span class='report-name'>Automation Report</span> <span class='report-headline'></span>
<ul class='right hide-on-med-and-down nav-right'>
<li class='theme-selector' alt='Click to toggle dark theme. To enable by default, use js configuration $("body").addClass("dark");' title='Click to toggle dark theme. To enable by default, use js configuration $("body").addClass("dark");'>
<i class='mdi-hardware-desktop-windows'></i>
</li>
<li>
<span class='suite-started-time'>2023-03-24 11:34:00</span>
</li>
<li>
<span>v2.41.1</span>
</li>
</ul>
</nav>
<!-- /nav -->
<!-- container -->
<div class='container'>
<!-- dashboard -->
<div id='dashboard-view' class='row'>
<div class='time-totals'>
<div class='col l2 m4 s6'>
<div class='card suite-total-tests'>
<span class='panel-name'>Total Tests</span>
<span class='total-tests'> <span class='panel-lead'></span> </span>
</div>
</div>
<div class='col l2 m4 s6'>
<div class='card suite-total-steps'>
<span class='panel-name'>Total Steps</span>
<span class='total-steps'> <span class='panel-lead'></span> </span>
</div>
</div>
<div class='col l2 m4 s12'>
<div class='card suite-total-time-current'>
<span class='panel-name'>Total Time Taken (Current Run)</span>
<span class='suite-total-time-current-value panel-lead'>0h 0m 19s+38ms</span>
</div>
</div>
<div class='col l2 m4 s12'>
<div class='card suite-total-time-overall'>
<span class='panel-name'>Total Time Taken (Overall)</span>
<span class='suite-total-time-overall-value panel-lead'>0h 0m 19s+38ms</span>
</div>
</div>
<div class='col l2 m4 s6 suite-start-time'>
<div class='card accent green-accent'>
<span class='panel-name'>Start</span>
<span class='panel-lead suite-started-time'>2023-03-24 11:33:41</span>
</div>
</div>
<div class='col l2 m4 s6 suite-end-time'>
<div class='card accent pink-accent'>
<span class='panel-name'>End</span>
<span class='panel-lead suite-ended-time'>2023-03-24 11:34:00</span>
</div>
</div>
</div>
<div class='charts'>
<div class='col s12 m6 l4 fh'>
<div class='card-panel'>
<div>
<span class='panel-name'>Tests View</span>
</div>
<div class='panel-setting modal-trigger test-count-setting right'>
<a href='#test-count-setting'><i class='mdi-navigation-more-vert text-md'></i></a>
</div>
<div class='chart-box'>
<canvas class='text-centered' id='test-analysis'></canvas>
</div>
<div>
<span class='weight-light'><span class='t-pass-count weight-normal'></span> test(s) passed</span>
</div>
<div>
<span class='weight-light'><span class='t-fail-count weight-normal'></span> test(s) failed, <span class='t-others-count weight-normal'></span> others</span>
</div>
</div>
</div>
<div class='col s12 m6 l4 fh'>
<div class='card-panel'>
<div>
<span class='panel-name'>Steps View</span>
</div>
<div class='panel-setting modal-trigger step-status-filter right'>
<a href='#step-status-filter'><i class='mdi-navigation-more-vert text-md'></i></a>
</div>
<div class='chart-box'>
<canvas class='text-centered' id='step-analysis'></canvas>
</div>
<div>
<span class='weight-light'><span class='s-pass-count weight-normal'></span> step(s) passed </span>
</div>
<div>
<span class='weight-light'><span class='s-fail-count weight-normal'></span> step(s) failed, <span class='s-others-count weight-normal'></span> others</span>
</div>
</div>
</div>
<div class='col s12 m12 l4 fh'>
<div class='card-panel'>
<span class='panel-name'>Pass Percentage</span>
<span class='pass-percentage panel-lead'></span>
<div class='progress light-blue lighten-3'>
<div class='determinate light-blue'></div>
</div>
</div>
</div>
</div>
<div class='system-view'>
<div class='col l4 m12 s12'>
<div class='card-panel'>
<span class='label info outline right'>Environment</span>
<table>
<thead>
<tr>
<th>Param</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>User Name</td>
<td>1000074437</td>
</tr>
<tr>
<td>OS</td>
<td>Windows Server 2019</td>
</tr>
<tr>
<td>Java Version</td>
<td>15.0.2</td>
</tr>
<tr>
<td>Host Name</td>
<td>Evolve-VM-28</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- /dashboard -->
<!-- tests -->
<div id='test-view' class='row _addedTable'>
<div class='col _addedCell1'>
<div class='contents'>
<div class='card-panel heading'>
<h5>Tests</h5>
</div>
<div class='card-panel filters'>
<div>
<a class='dropdown-button btn-floating btn-small waves-effect waves-light grey tests-toggle' data-activates='tests-toggle' data-constrainwidth='true' data-beloworigin='true' data-hover='true' href='#'>
<i class='mdi-action-reorder'></i>
</a>
<ul id='tests-toggle' class='dropdown-content'>
<li class='pass'><a href='#!'>Pass</a></li>
<li class='fail'><a href='#!'>Fail</a></li>
<li class='skip'><a href='#!'>Skip</a></li>
<li class='divider'></li>
<li class='clear'><a href='#!'>Clear Filters</a></li>
</ul>
</div>
<div>
<a class='btn-floating btn-small waves-effect waves-light grey' id='clear-filters' alt='Clear Filters' title='Clear Filters'>
<i class='mdi-navigation-close'></i>
</a>
</div>
<div>
<a class='btn-floating btn-small waves-effect waves-light grey' id='enableDashboard' alt='Enable Dashboard' title='Enable Dashboard'>
<i class='mdi-action-track-changes'></i>
</a>
</div>
<div>
<a class='btn-floating btn-small waves-effect waves-light blue enabled' id='refreshCharts' alt='Refresh Charts on Filters' title='Refresh Charts on Filters'>
<i class='mdi-navigation-refresh'></i>
</a>
</div>
<div class='search' alt='Search Tests' title='Search Tests'>
<div class='input-field left'>
<input id='searchTests' type='text' class='validate' placeholder='Search Tests...'>
</div>
<a href="#" class='btn-floating btn-small waves-effect waves-light grey'>
<i class='mdi-action-search'></i>
</a>
</div>
</div>
<div class='card-panel no-padding-h no-padding-v no-margin-v'>
<div class='wrapper'>
<ul id='test-collection' class='test-collection'>
<li class='collection-item test displayed active pass ' extentid='f0d92290-16ce-49a5-b3f7-ec6cacd5b32e'>
<div class='test-head'>
<span class='test-name'>ExtentDemo </span>
<span class='test-status label right outline capitalize pass'>pass</span>
<span class='category-assigned hide '></span>
</div>
<div class='test-body'>
<div class='test-info'>
<span title='Test started time' alt='Test started time' class='test-started-time label green lighten-1 text-white'>2023-03-24 11:33:41</span>
<span title='Test ended time' alt='Test ended time' class='test-ended-time label red lighten-1 text-white'>2023-03-24 11:34:00</span>
<span title='Time taken to finish' alt='Time taken to finish' class='test-time-taken label blue-grey lighten-3 text-white'>0h 0m 18s+685ms</span>
</div>
<div class='test-desc'></div>
<div class='test-attributes'>
</div>
<div class='test-steps'>
<table class='bordered table-results'>
<thead>
<tr>
<th>Status</th>
<th>Timestamp</th>
<th>Details</th>
</tr>
</thead>
<tbody>
<tr>
<td class='status pass' title='pass' alt='pass'><i class='mdi-action-check-circle'></i></td>
<td class='timestamp'>11:33:45</td>
<td class='step-details'><a href='C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\src\..\Screenshots\1679637825831.png' data-featherlight='image'><img class='report-img' src='file:///C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\src\..\Screenshots\1679637825831.png' /></a>[+] Navigated to Parabank URL</td>
</tr>
<tr>
<td class='status pass' title='pass' alt='pass'><i class='mdi-action-check-circle'></i></td>
<td class='timestamp'>11:33:50</td>
<td class='step-details'><a href='C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\src\..\Screenshots\1679637830105.png' data-featherlight='image'><img class='report-img' src='file:///C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\src\..\Screenshots\1679637830105.png' /></a>[+] Account Registration Done.</td>
</tr>
<tr>
<td class='status pass' title='pass' alt='pass'><i class='mdi-action-check-circle'></i></td>
<td class='timestamp'>11:33:52</td>
<td class='step-details'><a href='C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\src\..\Screenshots\1679637832446.png' data-featherlight='image'><img class='report-img' src='file:///C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\src\..\Screenshots\1679637832446.png' /></a>[+] user Login Successful.</td>
</tr>
<tr>
<td class='status pass' title='pass' alt='pass'><i class='mdi-action-check-circle'></i></td>
<td class='timestamp'>11:33:53</td>
<td class='step-details'><a href='C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\src\..\Screenshots\1679637833944.png' data-featherlight='image'><img class='report-img' src='file:///C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\src\..\Screenshots\1679637833944.png' /></a>[+] opened new Account successfully</td>
</tr>
</tbody>
</table>
<ul class='collapsible node-list' data-collapsible='accordion'>
</ul>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<div id='test-details-wrapper' class='col _addedCell2'>
<div class='contents'>
<div class='card-panel details-view'>
<h5 class='details-name'></h5>
<div class='step-filters right'>
<span class='btn-floating btn-small waves-effect waves-light blue' status='info' alt='info' title='info'><i class='mdi-action-info-outline'></i></span>
<span class='btn-floating btn-small waves-effect waves-light green' status='pass' alt='pass' title='pass'><i class='mdi-action-check-circle'></i></span>
<span class='btn-floating btn-small waves-effect waves-light red' status='fail' alt='fail' title='fail'><i class='mdi-navigation-cancel'></i></span>
<span class='btn-floating btn-small waves-effect waves-light red darken-4' status='fatal' alt='fatal' title='fatal'><i class='mdi-navigation-cancel'></i></span>
<span class='btn-floating btn-small waves-effect waves-light red lighten-2' status='error' alt='error' title='error'><i class='mdi-alert-error'></i></span>
<span class='btn-floating btn-small waves-effect waves-light orange' alt='warning' status='warning' title='warning'><i class='mdi-alert-warning'></i></span>
<span class='btn-floating btn-small waves-effect waves-light cyan' status='skip' alt='skip' title='skip'><i class='mdi-content-redo'></i></span>
<span class='btn-floating btn-small waves-effect waves-light grey darken-2' status='clear-step-filter' alt='Clear filters' title='Clear filters'><i class='mdi-content-clear'></i></span>
</div>
<div class='details-container'>
</div>
</div>
</div>
</div>
</div>
<!-- /tests -->
<!-- categories -->
<!-- /categories -->
<!-- exceptions -->
<!-- /exceptions -->
<!-- testrunner logs -->
<!-- /testrunner logs -->
</div>
<!-- /container -->
<!-- test dashboard counts setting -->
<div id='test-count-setting' class='modal bottom-sheet'>
<div class='modal-content'>
<h5>Configure Tests Count Setting</h5>
<input name='test-count-setting' type='radio' id='parentWithoutNodes' class='with-gap'>
<label for='parentWithoutNodes'>Parent Tests Only (Does not include child nodes in counts)</label>
<br>
<input name='test-count-setting' type='radio' id='parentWithoutNodesAndNodes' class='with-gap'>
<label for='parentWithoutNodesAndNodes'>Parent Tests Without Child Tests + Child Tests</label>
<br>
<input name='test-count-setting' type='radio' id='childNodes' class='with-gap'>
<label for='childNodes'>Child Tests Only</label>
</div>
<div class='modal-footer'>
<a href='#!' class='modal-action modal-close waves-effect waves-green btn'>Save</a>
</div>
</div>
<!-- /test dashboard counts setting -->
<!-- filter for step status -->
<div id='step-status-filter' class='modal bottom-sheet'>
<div class='modal-content'>
<h5>Select status</h5>
<input checked class='filled-in' type='checkbox' id='step-dashboard-filter-pass'>
<label for='step-dashboard-filter-pass'>Pass</label>
<br>
<input checked class='filled-in' type='checkbox' id='step-dashboard-filter-fail'>
<label for='step-dashboard-filter-fail'>Fail</label>
<br>
<input checked class='filled-in' type='checkbox' id='step-dashboard-filter-fatal'>
<label for='step-dashboard-filter-fatal'>Fatal</label>
<br>
<input checked class='filled-in' type='checkbox' id='step-dashboard-filter-error'>
<label for='step-dashboard-filter-error'>Error</label>
<br>
<input checked class='filled-in' type='checkbox' id='step-dashboard-filter-warning'>
<label for='step-dashboard-filter-warning'>Warning</label>
<br>
<input checked class='filled-in' type='checkbox' id='step-dashboard-filter-skip'>
<label for='step-dashboard-filter-skip'>Skipped</label>
<br>
<input checked class='filled-in' type='checkbox' id='step-dashboard-filter-info'>
<label for='step-dashboard-filter-info'>Info</label>
<br>
<input checked class='filled-in' type='checkbox' id='step-dashboard-filter-unknown'>
<label for='step-dashboard-filter-unknown'>Unknown</label>
</div>
<div class='modal-footer'>
<a href='#!' class='modal-action modal-close waves-effect waves-green btn'>Save</a>
</div>
</div>
<!-- /filter for step status -->
<script src='https://cdn.rawgit.com/anshooarora/extentreports/6032d73243ba4fe4fb8769eb9c315d4fdf16fe68/cdn/extent.js' type='text/javascript'></script>
<script>$(document).ready(function() { $('.logo span').html('ExtentReports'); });</script>
<script>
$(document).ready(function() {
});
</script>
</body>
</html>

0
README.md Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

259
pom.xml Normal file
View File

@ -0,0 +1,259 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hexaware</groupId>
<artifactId>parabank</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>parabank</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.41.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.javafaker/javafaker -->
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>1.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/tech.grasshopper/extentreports-cucumber6-adapter -->
<dependency>
<groupId>tech.grasshopper</groupId>
<artifactId>extentreports-cucumber6-adapter</artifactId>
<version>2.8.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.ibm.db2/jcc -->
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>jcc</artifactId>
<version>11.5.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.ibm.db2.jcc/db2jcc -->
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc</artifactId>
<version>db2jcc4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>net.sf.jt400</groupId>
<artifactId>jt400</artifactId>
<version>10.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>datatable</artifactId>
<version>3.5.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.4.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-devtools-v101</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.stephenc.monte/monte-screen-recorder -->
<dependency>
<groupId>com.github.stephenc.monte</groupId>
<artifactId>monte-screen-recorder</artifactId>
<version>0.7.7.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/tech.grasshopper/extentreports-cucumber6-adapter -->
<dependency>
<groupId>tech.grasshopper</groupId>
<artifactId>extentreports-cucumber6-adapter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>5.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.opencsv/opencsv -->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.7.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

View File

@ -0,0 +1,145 @@
package com.hexaware.parabank;
import java.io.FileInputStream;
import java.util.Properties;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.testng.Assert;
public class OpenNewAccount {
WebDriver driver;
String accId;
Properties props = commonUtils.reader("src/test/java/com/hexaware/parabank/config.properties");
public OpenNewAccount(WebDriver driver)throws IOException {
this.driver = driver;
PageFactory.initElements(this.driver, this);
}
@FindBy(xpath= "//a[text() = 'Open New Account']")
private WebElement openNewAccountLink;
@FindBy(xpath = "//select[@id = 'type']")
private WebElement accountTypeDropDown;
@FindBy(xpath = "//select[@id = 'fromAccountId']")
private WebElement chooseAccountDropDown;
@FindBy(xpath = "//input[@value = 'Open New Account']")
private WebElement openNewAccountBtn;
@FindBy(xpath = "(//div[@class = 'ng-scope']/p)[1]")
private WebElement confirmationTxt;
@FindBy(xpath = "//a[@id = 'newAccountId']")
private WebElement newAccountId;
public void clickOpenNewAccount() {
openNewAccountLink.click();
}
public boolean selectTransfer() {
try {
commonUtils.DropDown(driver, accountTypeDropDown,"SAVINGS", 8);
commonUtils.DropDownByIndex(driver, chooseAccountDropDown, 0, 8);
commonUtils.aClick(driver,openNewAccountBtn);
return true;
}
catch(Exception e) {
e.printStackTrace();
return false;
}
}
public boolean AssertWelcomeText() {
try {
boolean b = commonUtils.isVisible(driver, confirmationTxt, 8);
if(b) {
Assert.assertEquals(confirmationTxt.getText(),props.getProperty("welcomeTxt"));
}
return true;
}
catch(Exception | AssertionError e) {
e.printStackTrace();
return false;
}
}
public void FetchAccountID() throws IOException {
accId = newAccountId.getText();
System.out.println(accId);
writer();
}
private void writer() throws IOException {
String[] valueToWrite = {accId};
write(System.getProperty("user.dir"), "AccountID.xlsx", "AccountId", valueToWrite);
}
private void write(String path, String fileName, String sheetName, String[] dataToWrite) throws IOException {
FileInputStream fis = new FileInputStream(path + "//" + fileName);
String fileExtensionName = fileName.substring(fileName.indexOf("."));
Workbook wb = null;
if (fileExtensionName.equals(".xlsx")) {
//If it is xlsx file then create object of XSSFWorkbook class
wb = new XSSFWorkbook(fis);
} else if (fileExtensionName.equals(".xls")) {
//If it is xls file then create object of HSSFWorkbook class
wb = new HSSFWorkbook(fis);
}
Sheet sheet = wb.getSheet(sheetName);
int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();
Row row = sheet.getRow(0);
Row newRow = sheet.createRow(rowCount + 1);
for (int j = 0; j < row.getLastCellNum() ; j++) {
Cell cell = newRow.createCell(j);
cell.setCellValue(dataToWrite[j]);
}
fis.close();
FileOutputStream fos = new FileOutputStream(path + "//" + fileName);
wb.write(fos);
fos.close();
System.out.println("[+] data inserted in excel file");
}
}

View File

@ -0,0 +1,192 @@
package com.hexaware.parabank;
import java.io.IOException;
import java.util.Properties;
import org.junit.Assert;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import com.github.javafaker.Faker;
public class RegisterationPage {
WebDriver driver;
Properties props = commonUtils.reader("src/test/java/com/hexaware/parabank/config.properties");
public RegisterationPage(WebDriver driver)throws IOException {
this.driver = driver;
PageFactory.initElements(this.driver,this);
}
@FindBy(xpath = "//a[text() = 'Register']")
private WebElement RegisterLink;
@FindBy(xpath = "//input[@id = 'customer.firstName']")
private WebElement firstNameTxtBox;
@FindBy(xpath = "//input[@id = 'customer.lastName']")
private WebElement lastNameTxtBox;
@FindBy(xpath = "//input[@id = 'customer.address.street']")
private WebElement addressTxtBox;
@FindBy(xpath = "//input[@id = 'customer.address.city']")
private WebElement cityTxtBox;
@FindBy(xpath = "//input[@id = 'customer.address.state']")
private WebElement stateTxtBox;
@FindBy(xpath = "//input[@id = 'customer.address.zipCode']")
private WebElement zipCodeTxtBox;
@FindBy(xpath = "//input[@id = 'customer.phoneNumber']")
private WebElement phoneNumberTxtBox;
@FindBy(xpath = "//input[@id = 'customer.ssn']")
private WebElement SSNTxtBox;
@FindBy(xpath = "//input[@id = 'customer.username']")
private WebElement userNameTxtBox;
@FindBy(xpath = "//input[@id = 'customer.password']")
private WebElement passwordTxtBox;
@FindBy(xpath = "//input[@id = 'repeatedPassword']")
private WebElement confirmPasswordTxtBox;
@FindBy(xpath = "//input[@value = 'Register']")
private WebElement registerBtn;
public String goToUrl() throws IOException {
driver.get("https://parabank.parasoft.com/parabank/index.htm");
String title = driver.getTitle();
return title;
}
public void clickRegisterLink() {
Assert.assertTrue(webElementClickNType("registerLink","blank"));
}
public boolean typeCredAndRegister() {
try {
Faker faker = new Faker();
Assert.assertTrue(webElementClickNType("firstName",faker.name().firstName()));
Assert.assertTrue(webElementClickNType("lastName",faker.name().lastName()));
Assert.assertTrue(webElementClickNType("address",faker.address().streetName()));
Assert.assertTrue(webElementClickNType("city",faker.address().city()));
Assert.assertTrue(webElementClickNType("state",faker.address().state()));
Assert.assertTrue(webElementClickNType("zipCode",faker.address().zipCode()));
Assert.assertTrue(webElementClickNType("phoneNumber","9264857264"));
Assert.assertTrue(webElementClickNType("SSN","071256789"));
Assert.assertTrue(webElementClickNType("userName",props.getProperty("userName")));
Assert.assertTrue(webElementClickNType("password",props.getProperty("password")));
Assert.assertTrue(webElementClickNType("confirmPassword",props.getProperty("password")));
Assert.assertTrue(webElementClickNType("registerBtn","blank"));
return true;
}
catch(Exception | AssertionError e) {
e.printStackTrace();
return false;
}
}
public boolean webElementClickNType(String parameter , String input) {
WebElement element;
switch(parameter) {
case "registerLink":
element = RegisterLink;
break;
case "firstName":
element = firstNameTxtBox;
break;
case "lastName":
element = lastNameTxtBox;
break;
case "address":
element = addressTxtBox;
break;
case "city":
element = cityTxtBox;
break;
case "state":
element = stateTxtBox;
break;
case "zipCode":
element = zipCodeTxtBox;
break;
case "phoneNumber":
element = phoneNumberTxtBox;
break;
case "SSN":
element = SSNTxtBox;
break;
case "userName":
element = userNameTxtBox;
break;
case "password":
element = passwordTxtBox;
break;
case "confirmPassword":
element = confirmPasswordTxtBox;
break;
case "registerBtn":
element = registerBtn;
break;
default:
return false;
}
if(!input.equalsIgnoreCase("blank")) {
boolean b = commonUtils.isVisible(driver, element, 15);
if(b) {
commonUtils.scrollToElement(driver, element);
element.clear();
element.sendKeys(input);
}
}
else {
commonUtils.isVisible(driver, element, 15);
commonUtils.scrollToElement(driver, element);
boolean b = commonUtils.isClickable(driver, element, 8);
if(b) {
commonUtils.aClick(driver, element);
}
}
return true;
}
}

View File

@ -0,0 +1,69 @@
package com.hexaware.parabank;
import java.io.IOException;
import org.testng.annotations.Test;
import com.relevantcodes.extentreports.LogStatus;
public class Runner extends hook{
RegisterationPage rP;
UserAccountLogin uAL;
OpenNewAccount op;
@Test (priority = 1)
public void RegisterAccount() throws IOException {
rP = new RegisterationPage(driver);
String title = rP.goToUrl();
if(title.equals("ParaBank | Welcome | Online Banking")) {
test.log(LogStatus.PASS,test.addScreenCapture(capture(driver))+ "[+] Navigated to Parabank URL");
}else {
test.log(LogStatus.FAIL,test.addScreenCapture(capture(driver))+ "[-] Browser is not navigated to Parabank URL !");
}
rP.clickRegisterLink();
boolean b = rP.typeCredAndRegister();
if(b){
test.log(LogStatus.PASS,test.addScreenCapture(capture(driver))+ "[+] Account Registration Done.");
}else {
test.log(LogStatus.FAIL,test.addScreenCapture(capture(driver))+ "[-] Account Registration Failed !");
}
}
@Test(priority = 2)
public void loginAccount() throws IOException {
uAL = new UserAccountLogin(driver);
uAL.clickLogOutLink();
boolean b = uAL.Login();
if(b) {
test.log(LogStatus.PASS,test.addScreenCapture(capture(driver))+ "[+] user Login Successful.");
}else {
test.log(LogStatus.FAIL,test.addScreenCapture(capture(driver))+ "[-] user Login Unsuccessful! ");
}
}
@Test(priority = 3)
public void OpenNewAccount() throws IOException {
op = new OpenNewAccount(driver);
op.clickOpenNewAccount();
boolean b = op.selectTransfer();
boolean d = op.AssertWelcomeText();
if(b && d) {
test.log(LogStatus.PASS,test.addScreenCapture(capture(driver))+ "[+] opened new Account successfully");
}else {
test.log(LogStatus.FAIL,test.addScreenCapture(capture(driver))+ "[-] Failed to OpenNewAccount ");
}
op.FetchAccountID();
}
}

View File

@ -0,0 +1,109 @@
package com.hexaware.parabank;
import java.io.IOException;
import java.util.Properties;
import org.junit.Assert;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
public class UserAccountLogin {
WebDriver driver;
Properties props = commonUtils.reader("src/test/java/com/hexaware/parabank/config.properties");
public UserAccountLogin(WebDriver driver)throws IOException {
this.driver = driver;
PageFactory.initElements(this.driver, this);
}
@FindBy(xpath = "//a[text() = 'Log Out']")
private WebElement logOutLink;
@FindBy(xpath = "//input[@name = 'username']")
private WebElement userNameTxtBox;
@FindBy(xpath = "//input[@name = 'password']")
private WebElement passwordTxtBox;
@FindBy(xpath = "//input[@value = 'Log In']")
private WebElement logInBtn;
public void clickLogOutLink() {
Assert.assertTrue(webElementClickNType("logOutLink","blank"));
}
public boolean Login() {
try {
Assert.assertTrue(webElementClickNType("userName",props.getProperty("userName")));
Assert.assertTrue(webElementClickNType("password",props.getProperty("password")));
Assert.assertTrue(webElementClickNType("logInBtn","blank"));
return true;
}
catch(Exception | AssertionError e) {
e.printStackTrace();
return false;
}
}
public boolean webElementClickNType(String parameter , String input) {
WebElement element;
switch(parameter) {
case "logOutLink":
element = logOutLink;
break;
case "userName":
element = userNameTxtBox;
break;
case "password":
element = passwordTxtBox;
break;
case "logInBtn":
element = logInBtn;
break;
default:
return false;
}
if(!input.equalsIgnoreCase("blank")) {
boolean b = commonUtils.isVisible(driver, element, 15);
if(b) {
commonUtils.scrollToElement(driver, element);
element.clear();
element.sendKeys(input);
}
}
else {
commonUtils.isVisible(driver, element, 15);
commonUtils.scrollToElement(driver, element);
boolean b = commonUtils.isClickable(driver, element, 8);
if(b) {
commonUtils.aClick(driver, element);
}
}
return true;
}
}

View File

@ -0,0 +1,461 @@
package com.hexaware.parabank;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
public class commonUtils {
static Robot robot;
static String urlConfigPath = "src/test/java/Properties/URLS.properties";
static Properties props;
static {
try {
robot = new Robot();
} catch (AWTException e) {
throw new RuntimeException(e);
}
}
static Actions actions;
public static Properties reader(String path) throws IOException {
FileReader reader = new FileReader(path);
Properties P = new Properties();
P.load(reader);
return P;
}
public static ThreadLocal<Actions> tlActions = new ThreadLocal<>();
public static Actions actions_init(WebDriver driver) {
tlActions.set(new Actions(driver));
return getActions();
}
public static synchronized Actions getActions() {
return tlActions.get();
}
public static void aClick(WebDriver driver, WebElement element) {
commonUtils.actions_init(driver).moveToElement(element).perform();
commonUtils.actions_init(driver).click(element).perform();
}
public static void doubleClick(WebDriver driver, WebElement element) {
commonUtils.actions_init(driver).moveToElement(element).perform();
commonUtils.actions_init(driver).doubleClick(element).perform();
}
public static void jClick(WebDriver driver, WebElement element) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", element);
}
public static void jSendKeys(WebDriver driver, WebElement element, String value) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].setAttribute('value', '" + value + "')", element);
}
public static void click(WebElement element) {
element.click();
}
public static void dragAndDrop(WebElement sourceElement, WebElement targetElement) {
actions = commonUtils.getActions();
actions.dragAndDrop(sourceElement, targetElement).perform();
}
public static void hoverTo(WebDriver driver, WebElement element) {
commonUtils.actions_init(driver).moveToElement(element).perform();
}
public static void scroll(WebDriver driver, int i, int j) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollBy(" + i + "," + j + ")", "");
}
public static void setAttribute(WebDriver driver, WebElement element, String attribute, String value) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].setAttribute('" + attribute + "','" + value + "')", element);
}
public static boolean isClickable(WebDriver driver, WebElement element, int sec) {
try {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(sec));
wait.until(ExpectedConditions.elementToBeClickable(element));
return true;
} catch (Exception e) {
return false;
}
}
public static void staleElementWait(WebDriver driver, WebElement element, int sec) {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(sec));
wait.until(ExpectedConditions.refreshed(ExpectedConditions.stalenessOf(element)));
}
public static void uploadFile(String path) throws InterruptedException {
Thread.sleep(10000);
uploader(path);
}
public static void uploader(String Path) {
StringSelection selection = new StringSelection(Path);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, null);
robot.delay(250);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
}
public static void switchToTab(WebDriver driver, int Tab) {
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(Tab - 1));
}
public static void HitEnter() {
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(150);
robot.keyRelease(KeyEvent.VK_ENTER);
}
public static void HitEnter2() throws AWTException {
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(150);
robot.keyRelease(KeyEvent.VK_ENTER);
}
public static void takeScreenShot(WebDriver driver, String path) throws IOException {
TakesScreenshot screenshot = ((TakesScreenshot) driver);
File src = screenshot.getScreenshotAs(OutputType.FILE);
File dest = new File(path);
FileUtils.copyFile(src, dest);
}
public static void simpleAlert(WebDriver driver, String status) {
if (status.equalsIgnoreCase("accept")) {
driver.switchTo().alert().accept();
}
}
public static void promptAlert(WebDriver driver, String text, String status) {
if (status.equalsIgnoreCase("accept")) {
driver.switchTo().alert().sendKeys(text);
driver.switchTo().alert().accept();
} else if (status.equalsIgnoreCase("dismiss")) {
driver.switchTo().alert().dismiss();
}
}
public static void confirmationAlert(WebDriver driver, String status) {
if (status.equalsIgnoreCase("accept")) {
driver.switchTo().alert().accept();
} else if (status.equalsIgnoreCase("dismiss")) {
driver.switchTo().alert().dismiss();
}
}
public static boolean waitForAlert(WebDriver driver, int sec) {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(sec));
wait.until(ExpectedConditions.alertIsPresent());
return true;
}
public static void frameSwitch(WebDriver driver, List<WebElement> elements, WebElement element) {
System.out.println("no of frames:" + elements.size());
for (int i = 0; i < elements.size(); i++) {
if (elements.get(i).getAttribute("id").equalsIgnoreCase(elements.get(i).getAttribute("id"))) {
try {
String ele = elements.get(i).getAttribute("id");
driver.switchTo().frame(i);
click(element);
System.out.println("found element at iframe id :" + ele);
break;
} catch (Exception e) {
System.out.println(e);
driver.switchTo().defaultContent();
}
}
}
}
public static void jFrameCount(WebDriver driver) {
JavascriptExecutor exe = (JavascriptExecutor) driver;
int f = Integer.parseInt(exe.executeScript("return window.length").toString());
System.out.println("No. of iframes on the page are " + f);
}
public static boolean DropDown(WebDriver driver, WebElement element, String x, int sec) {
try {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(sec));
Select dropDown = new Select(wait.until(ExpectedConditions.visibilityOf(element)));
dropDown.selectByVisibleText(x);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static boolean DropDownByIndex(WebDriver driver, WebElement element, int x, int sec) {
try {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(sec));
Select dropDown = new Select(wait.until(ExpectedConditions.visibilityOf(element)));
dropDown.selectByIndex(x);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static void tWait(int millisec) throws InterruptedException {
Thread.sleep(millisec);
}
public static void implicitWait(WebDriver driver, int sec) {
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(8));
}
public static void scrollToElement(WebDriver driver, WebElement element) {
JavascriptExecutor je = (JavascriptExecutor) driver;
je.executeScript("arguments[0].scrollIntoView(true);", element);
}
public static void aScrollToElement(WebDriver driver, WebElement element) {
Actions action = new Actions(driver);
action.moveToElement(element);
}
public static void mouseClick(int x, int y) throws AWTException {
Robot robot = new Robot();
robot.mouseMove(x, y);
robot.delay(1500);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
}
public static void selectChoice(WebDriver driver, List<WebElement> lElement, String choice) {
List<WebElement> option = lElement;
if (choice.equalsIgnoreCase("yes")) {
scrollToElement(driver, option.get(0));
aClick(driver, option.get(0));
} else if (choice.equalsIgnoreCase("no")) {
scrollToElement(driver, option.get(1));
aClick(driver, option.get(1));
}
}
public static boolean isVisible(WebDriver driver, WebElement element, int sec) {
try {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(sec));
wait.until(ExpectedConditions.visibilityOf(element));
return true;
} catch (Exception e) {
System.out.println(e);
return false;
}
}
public static boolean isInvisible(WebDriver driver, WebElement element, int sec) {
try {
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(sec));
wait.until(ExpectedConditions.invisibilityOf(element));
return true;
} catch (Exception e) {
System.out.println(e);
return false;
}
}
public static boolean checkSpecialCharAndNumbers(String s) {
int count = 0;
boolean flag;
for (int i = 0; i < s.length(); i++) {
if (!Character.isLetter(s.charAt(i))
&& !Character.isWhitespace(s.charAt(i))) {
count++;
}
}
if (count == 0) {
flag = false;
} else {
flag = true;
}
return flag;
}
public static boolean checkCharCount(String s, int limit) {
int count = 1;
boolean flag;
for (int i = 0; i < s.length(); i++) {
count++;
}
if (count > limit) {
flag = true;
} else if (count < limit) {
flag = true;
} else {
flag = false;
}
return flag;
}
public static boolean isOdd(int num){
if (num % 2 == 0) {
return false;
}
else {
return true;
}
}
public static boolean isEven(int num){
if (num % 2 == 0) {
return true;
}
else {
return false;
}
}
}

View File

@ -0,0 +1,4 @@
userName = kayaljai09
password = kayal09jai
welcomeTxt = Congratulations, your account is now open.

View File

@ -0,0 +1,76 @@
package com.hexaware.parabank;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
public class hook {
ExtentTest test;
ExtentReports report;
public WebDriver driver;
@BeforeClass
public void setup() {
System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir")+ "\\drivers\\chromedriver.exe" );
ChromeOptions options = new ChromeOptions();
options.addArguments("--ignore-ssl-errors=yes");
options.addArguments("--ignore-certificate-errors");
options.addArguments("disable-infobars");
options.addArguments("--remote-allow-origins=*");
options.setAcceptInsecureCerts(true);
driver= new ChromeDriver(options);
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
report = new ExtentReports(System.getProperty("user.dir")+"\\ExtentReportResults.html");
test = report.startTest("ExtentDemo");
}
public String capture(WebDriver driver) throws IOException {
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
File Dest = new File("src/../Screenshots/" + System.currentTimeMillis()
+ ".png");
String errflpath = Dest.getAbsolutePath();
FileUtils.copyFile(scrFile, Dest);
return errflpath;
}
@AfterClass
public void tearDown() throws InterruptedException {
Thread.sleep(5000);
driver.quit();
report.endTest(test);
report.flush();
}
}

View File

@ -0,0 +1,5 @@
Manifest-Version: 1.0
Built-By: 1000074437
Build-Jdk: 15.0.2
Created-By: Maven Integration for Eclipse

View File

@ -0,0 +1,7 @@
#Generated by Maven Integration for Eclipse
#Fri Mar 24 11:24:19 GMT+05:30 2023
m2e.projectLocation=C\:\\Users\\1000074437\\Desktop\\1000074437\\Parabank\\parabank\\parabank
m2e.projectName=parabank
groupId=com.hexaware
artifactId=parabank
version=0.0.1-SNAPSHOT

View File

@ -0,0 +1,259 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hexaware</groupId>
<artifactId>parabank</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>parabank</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.41.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.javafaker/javafaker -->
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>1.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.8.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/tech.grasshopper/extentreports-cucumber6-adapter -->
<dependency>
<groupId>tech.grasshopper</groupId>
<artifactId>extentreports-cucumber6-adapter</artifactId>
<version>2.8.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.ibm.db2/jcc -->
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>jcc</artifactId>
<version>11.5.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.ibm.db2.jcc/db2jcc -->
<dependency>
<groupId>com.ibm.db2.jcc</groupId>
<artifactId>db2jcc</artifactId>
<version>db2jcc4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>net.sf.jt400</groupId>
<artifactId>jt400</artifactId>
<version>10.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>datatable</artifactId>
<version>3.5.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.4.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-devtools-v101</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.stephenc.monte/monte-screen-recorder -->
<dependency>
<groupId>com.github.stephenc.monte</groupId>
<artifactId>monte-screen-recorder</artifactId>
<version>0.7.7.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/tech.grasshopper/extentreports-cucumber6-adapter -->
<dependency>
<groupId>tech.grasshopper</groupId>
<artifactId>extentreports-cucumber6-adapter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>5.0.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.opencsv/opencsv -->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.7.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

Binary file not shown.

View File

@ -0,0 +1,4 @@
userName = kayaljai09
password = kayal09jai
welcomeTxt = Congratulations, your account is now open.

Binary file not shown.

View File

@ -0,0 +1,84 @@
<html>
<head>
<title>TestNG: Default test</title>
<link href="../testng.css" rel="stylesheet" type="text/css" />
<link href="../my-testng.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.log { display: none;}
.stack-trace { display: none;}
</style>
<script type="text/javascript">
<!--
function flip(e) {
current = e.style.display;
if (current == 'block') {
e.style.display = 'none';
return 0;
}
else {
e.style.display = 'block';
return 1;
}
}
function toggleBox(szDivId, elem, msg1, msg2)
{
var res = -1; if (document.getElementById) {
res = flip(document.getElementById(szDivId));
}
else if (document.all) {
// this is the way old msie versions work
res = flip(document.all[szDivId]);
}
if(elem) {
if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;
}
}
function toggleAllBoxes() {
if (document.getElementsByTagName) {
d = document.getElementsByTagName('div');
for (i = 0; i < d.length; i++) {
if (d[i].className == 'log') {
flip(d[i]);
}
}
}
}
// -->
</script>
</head>
<body>
<h2 align='center'>Default test</h2><table border='1' align="center">
<tr>
<td>Tests passed/Failed/Skipped:</td><td>1/0/0</td>
</tr><tr>
<td>Started on:</td><td>Thu Mar 23 19:07:30 GMT+05:30 2023</td>
</tr>
<tr><td>Total time:</td><td>14 seconds (14310 ms)</td>
</tr><tr>
<td>Included groups:</td><td></td>
</tr><tr>
<td>Excluded groups:</td><td></td>
</tr>
</table><p/>
<small><i>(Hover the method name to see the test class name)</i></small><p/>
<table width='100%' border='1' class='invocation-passed'>
<tr><td colspan='4' align='center'><b>PASSED TESTS</b></td></tr>
<tr><td><b>Test method</b></td>
<td width="30%"><b>Exception</b></td>
<td width="10%"><b>Time (seconds)</b></td>
<td><b>Instance</b></td>
</tr>
<tr>
<td title='com.hexaware.parabank.Runner.RegisterAccount()'><b>RegisterAccount</b><br>Test class: com.hexaware.parabank.Runner</td>
<td></td>
<td>5</td>
<td>com.hexaware.parabank.Runner@53aac487</td></tr>
</table><p>
</body>
</html>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitXMLReporter -->
<testsuite ignored="0" hostname="Evolve-VM-28" failures="0" tests="1" name="Default test" time="14.31" errors="0" timestamp="2023-03-23T19:07:44 GMT+05:30">
<testcase classname="com.hexaware.parabank.Runner" name="RegisterAccount" time="5.304"/>
</testsuite> <!-- Default test -->

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Failed suite [Default suite]" guice-stage="DEVELOPMENT">
<test thread-count="5" name="Default test(failed)">
<classes>
<class name="com.hexaware.parabank.Runner">
<methods>
<include name="typeCred"/>
<include name="setup"/>
<include name="tearDown"/>
</methods>
</class> <!-- com.hexaware.parabank.Runner -->
</classes>
</test> <!-- Default test(failed) -->
</suite> <!-- Failed suite [Default suite] -->

243
test-output/Spark.html Normal file
View File

@ -0,0 +1,243 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title></title>
<link rel="apple-touch-icon" href="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@b00a2d0486596e73dd7326beacf352c639623a0e/commons/img/logo.png">
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@b00a2d0486596e73dd7326beacf352c639623a0e/commons/img/logo.png">
<link href="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@c43b89d03a7c43dae8bb8f0f078bad1997af6b3b/spark/css/spark-style.css" rel="stylesheet" />
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://cdn.rawgit.com/extent-framework/extent-github-cdn/7cc78ce/spark/js/jsontree.js"></script>
<style type="text/css"></style></head><body class="spa -report standard">
<div class="app">
<div class="layout">
<div class="header navbar">
<div class="vheader">
<div class="nav-logo">
<a href="#">
<div class="logo" style="background-image: url('https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@b00a2d0486596e73dd7326beacf352c639623a0e/commons/img/logo.png')"></div>
</a>
</div>
<ul class="nav-left">
<li class="search-box">
<a class="search-toggle" href="#">
<i class="search-icon fa fa-search"></i>
<i class="search-icon-close fa fa-close"></i>
</a>
</li>
<li class="search-input"><input id="search-tests" class="form-control" type="text" placeholder="Search..."></li>
</ul>
<ul class="nav-right">
<li class="m-r-10">
<a href="#"><span class="badge badge-primary"></span></a>
</li>
<li class="m-r-10">
<a href="#"><span class="badge badge-primary">Mar 23, 2023 03:24:27 PM</span></a>
</li>
</ul>
</div>
</div><div class="side-nav">
<div class="side-nav-inner">
<ul class="side-nav-menu">
<li class="nav-item dropdown" onclick="toggleView('test-view')">
<a id="nav-test" class="dropdown-toggle" href="#">
<span class="ico"><i class="fa fa-list"></i></span>
</a>
</li>
<li class="nav-item dropdown" onclick="toggleView('dashboard-view')">
<a id="nav-dashboard" class="dropdown-toggle" href="#">
<span class="ico"><i class="fa fa-bar-chart"></i></span>
</a>
</li>
</ul>
</div>
</div> <div class="vcontainer">
<div class="main-content">
<div class="test-wrapper row view test-view">
<div class="test-list">
<div class="test-list-tools">
<ul class="tools pull-left">
<li><a href="#"><span class="font-size-14">Tests</span></a></li>
</ul>
<ul class="tools text-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-exclamation-circle"></i></a>
<ul id="status-toggle" class="dropdown-menu dropdown-md p-v-0">
<a class="dropdown-item" status="pass" href="#"><span>Pass</span><span class="status success"></span></a>
<div class="dropdown-divider"></div>
<a status="clear" class="dropdown-item" href="#"><span>Clear</span><span class="pull-right"><i class="fa fa-close"></i></span></a>
</ul>
</li>
</ul>
</div> <div class="test-list-wrapper scrollable">
<ul class="test-list-item">
<li class="test-item" status="pass" test-id="1"
author=""
tag=""
device="">
<div class="test-detail">
<p class="name">Navigating to the parabank Url</p>
<p class="text-sm">
<span>15:24:31 PM</span> / <span>30:00:007</span>
<span class="badge pass-bg log float-right">Pass</span>
</p>
</div>
<div class="test-contents d-none">
<div class="detail-head">
<div class="p-v-10">
<div class="info">
<h5 class="test-status text-pass">Navigating to the parabank Url</h5>
<span class='badge badge-success'>03.23.2023 15:24:31</span>
<span class='badge badge-danger'>03.23.2023 15:24:31</span>
<span class='badge badge-default'>30:00:007</span>
&middot; <span class='uri-anchor badge badge-default'>#test-id=1</span>
</div>
</div>
</div><div class="detail-body mt-4">
<table class="table table-sm">
<thead><tr><th class="status-col">Status</th><th class="timestamp-col">Timestamp</th><th class="details-col">Details</th></tr></thead>
<tbody>
<tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td>
<td>3:24:31 PM</td>
<td>
Website successfully launched
</td>
</tr>
</tbody>
</table>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="test-content scrollable">
<div class="test-content-tools">
<ul><li><a class="back-to-test" href="#"><i class="fa fa-arrow-left"></i></a></li></ul>
</div>
<div class="test-content-detail"><div class="detail-body"></div></div>
</div></div>
<div class="container-fluid p-4 view dashboard-view">
<div class="row">
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Started</p>
<h3>Mar 23, 2023 03:24:27 PM</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Ended</p>
<h3>Mar 23, 2023 03:24:31 PM</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0 text-pass">Tests Passed</p>
<h3>1</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0 text-fail">Tests Failed</p>
<h3>0</h3>
</div></div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h6 class="card-title">Tests</h6>
</div>
<div class="card-body">
<div class="">
<canvas id='parent-analysis' width='115' height='90'></canvas>
</div>
</div>
<div class="card-footer">
<div><small data-tooltip='100%'>
<b>1</b> tests passed
</small>
</div>
<div>
<small data-tooltip='0%'><b>0</b> tests failed,
<b>0</b> skipped, <b data-tooltip='0%'>0</b> others
</small>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h6 class="card-title">Log events</h6>
</div>
<div class="card-body">
<div class="">
<canvas id='events-analysis' width='115' height='90'></canvas>
</div>
</div>
<div class="card-footer">
<div><small data-tooltip='100%'><b>1</b> events passed</small></div>
<div>
<small data-tooltip='0%'><b>0</b> events failed,
<b data-tooltip='%'>0</b> others
</small>
</div>
</div>
</div>
</div>
</div>
<div class="row"><div class="col-md-12">
<div class="card"><div class="card-header"><p>Timeline</p></div>
<div class="card-body pt-0"><div>
<canvas id="timeline" height="120"></canvas>
</div></div>
</div>
</div></div>
<script>
var timeline = {
"Navigating to the parabank Url":0.007
};
</script>
<div class="row">
</div>
</div>
<script>
var statusGroup = {
parentCount: 5,
passParent: 1,
failParent: 0,
warningParent: 0,
skipParent: 0,
childCount: 5,
passChild: 0,
failChild: 0,
warningChild: 0,
skipChild: 0,
infoChild: 0,
grandChildCount: 5,
passGrandChild: 0,
failGrandChild: 0,
warningGrandChild: 0,
skipGrandChild: 0,
infoGrandChild: 0,
eventsCount: 5,
passEvents: 1,
failEvents: 0,
warningEvents: 0,
skipEvents: 0,
infoEvents: 0
};
</script> </div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@14e9bb345ef7e2ed3a102f271d84e9f0267c88e7/spark/js/spark-script.js"></script>
<script type="text/javascript"></script></body>
</html>

View File

@ -0,0 +1,94 @@
<html>
<head>
<title>TestNG: Test</title>
<link href="../testng.css" rel="stylesheet" type="text/css" />
<link href="../my-testng.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.log { display: none;}
.stack-trace { display: none;}
</style>
<script type="text/javascript">
<!--
function flip(e) {
current = e.style.display;
if (current == 'block') {
e.style.display = 'none';
return 0;
}
else {
e.style.display = 'block';
return 1;
}
}
function toggleBox(szDivId, elem, msg1, msg2)
{
var res = -1; if (document.getElementById) {
res = flip(document.getElementById(szDivId));
}
else if (document.all) {
// this is the way old msie versions work
res = flip(document.all[szDivId]);
}
if(elem) {
if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;
}
}
function toggleAllBoxes() {
if (document.getElementsByTagName) {
d = document.getElementsByTagName('div');
for (i = 0; i < d.length; i++) {
if (d[i].className == 'log') {
flip(d[i]);
}
}
}
}
// -->
</script>
</head>
<body>
<h2 align='center'>Test</h2><table border='1' align="center">
<tr>
<td>Tests passed/Failed/Skipped:</td><td>3/0/0</td>
</tr><tr>
<td>Started on:</td><td>Fri Mar 24 11:33:38 GMT+05:30 2023</td>
</tr>
<tr><td>Total time:</td><td>22 seconds (22170 ms)</td>
</tr><tr>
<td>Included groups:</td><td></td>
</tr><tr>
<td>Excluded groups:</td><td></td>
</tr>
</table><p/>
<small><i>(Hover the method name to see the test class name)</i></small><p/>
<table width='100%' border='1' class='invocation-passed'>
<tr><td colspan='4' align='center'><b>PASSED TESTS</b></td></tr>
<tr><td><b>Test method</b></td>
<td width="30%"><b>Exception</b></td>
<td width="10%"><b>Time (seconds)</b></td>
<td><b>Instance</b></td>
</tr>
<tr>
<td title='com.hexaware.parabank.Runner.RegisterAccount()'><b>RegisterAccount</b><br>Test class: com.hexaware.parabank.Runner</td>
<td></td>
<td>8</td>
<td>com.hexaware.parabank.Runner@3527942a</td></tr>
<tr>
<td title='com.hexaware.parabank.Runner.OpenNewAccount()'><b>OpenNewAccount</b><br>Test class: com.hexaware.parabank.Runner</td>
<td></td>
<td>2</td>
<td>com.hexaware.parabank.Runner@3527942a</td></tr>
<tr>
<td title='com.hexaware.parabank.Runner.loginAccount()'><b>loginAccount</b><br>Test class: com.hexaware.parabank.Runner</td>
<td></td>
<td>2</td>
<td>com.hexaware.parabank.Runner@3527942a</td></tr>
</table><p>
</body>
</html>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitXMLReporter -->
<testsuite ignored="0" hostname="Evolve-VM-28" failures="0" tests="3" name="Test" time="22.17" errors="0" timestamp="2023-03-24T11:34:00 GMT+05:30">
<testcase classname="com.hexaware.parabank.Runner" name="RegisterAccount" time="8.224"/>
<testcase classname="com.hexaware.parabank.Runner" name="loginAccount" time="2.334"/>
<testcase classname="com.hexaware.parabank.Runner" name="OpenNewAccount" time="2.346"/>
</testsuite> <!-- Test -->

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Failed suite [Suite]" guice-stage="DEVELOPMENT">
<test thread-count="5" name="Test(failed)">
<classes>
<class name="com.hexaware.parabank.Runner">
<methods>
<include name="setup"/>
<include name="tearDown"/>
<include name="OpenNewAccount"/>
</methods>
</class> <!-- com.hexaware.parabank.Runner -->
</classes>
</test> <!-- Test(failed) -->
</suite> <!-- Failed suite [Suite] -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

BIN
test-output/collapseall.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

View File

@ -0,0 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>TestNG Report</title>
<style type="text/css">table {margin-bottom:10px;border-collapse:collapse;empty-cells:show}th,td {border:1px solid #009;padding:.25em .5em}th {vertical-align:bottom}td {vertical-align:top}table a {font-weight:bold}.stripe td {background-color: #E6EBF9}.num {text-align:right}.passedodd td {background-color: #3F3}.passedeven td {background-color: #0A0}.skippedodd td {background-color: #DDD}.skippedeven td {background-color: #CCC}.failedodd td,.attn {background-color: #F33}.failedeven td,.stripe .attn {background-color: #D00}.stacktrace {white-space:pre;font-family:monospace}.totop {font-size:85%;text-align:center;border-bottom:2px solid #000}.invisible {display:none}</style>
</head>
<body>
<table>
<tr><th>Test</th><th># Passed</th><th># Skipped</th><th># Retried</th><th># Failed</th><th>Time (ms)</th><th>Included Groups</th><th>Excluded Groups</th></tr>
<tr><th colspan="8">Suite</th></tr>
<tr><td><a href="#t0">Test</a></td><td class="num">3</td><td class="num">0</td><td class="num">0</td><td class="num">0</td><td class="num">22,170</td><td></td><td></td></tr>
</table>
<table id='summary'><thead><tr><th>Class</th><th>Method</th><th>Start</th><th>Time (ms)</th></tr></thead><tbody><tr><th colspan="4">Suite</th></tr></tbody><tbody id="t0"><tr><th colspan="4">Test &#8212; passed</th></tr><tr class="passedeven"><td rowspan="3">com.hexaware.parabank.Runner</td><td><a href="#m0">OpenNewAccount</a></td><td rowspan="1">1679637832458</td><td rowspan="1">2346</td></tr><tr class="passedeven"><td><a href="#m1">RegisterAccount</a></td><td rowspan="1">1679637821895</td><td rowspan="1">8224</td></tr><tr class="passedeven"><td><a href="#m2">loginAccount</a></td><td rowspan="1">1679637830122</td><td rowspan="1">2334</td></tr></tbody>
</table>
<h2>Test</h2><h3 id="m0">com.hexaware.parabank.Runner#OpenNewAccount</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
<h3 id="m1">com.hexaware.parabank.Runner#RegisterAccount</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
<h3 id="m2">com.hexaware.parabank.Runner#loginAccount</h3><table class="result"><tr><th class="invisible"/></tr></table><p class="totop"><a href="#summary">back to summary</a></p>
</body>
</html>

BIN
test-output/failed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

284
test-output/index.html Normal file
View File

@ -0,0 +1,284 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>TestNG reports</title>
<link type="text/css" href="testng-reports1.css" rel="stylesheet" id="ultra" />
<link type="text/css" href="testng-reports.css" rel="stylesheet" id="retro" disabled="false"/>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="testng-reports.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type='text/javascript'>
google.load('visualization', '1', {packages:['table']});
google.setOnLoadCallback(drawTable);
var suiteTableInitFunctions = new Array();
var suiteTableData = new Array();
</script>
<!--
<script type="text/javascript" src="jquery-ui/js/jquery-ui-1.8.16.custom.min.js"></script>
-->
</head>
<body>
<div class="top-banner-root">
<span class="top-banner-title-font">Test results</span>
<button id="button" class="button">Switch Retro Theme</button> <!-- button -->
<br/>
<span class="top-banner-font-1">1 suite</span>
</div> <!-- top-banner-root -->
<div class="navigator-root">
<div class="navigator-suite-header">
<span>All suites</span>
<a href="#" title="Collapse/expand all the suites" class="collapse-all-link">
<img src="collapseall.gif" class="collapse-all-icon">
</img> <!-- collapse-all-icon -->
</a> <!-- collapse-all-link -->
</div> <!-- navigator-suite-header -->
<div class="suite">
<div class="rounded-window">
<div class="suite-header light-rounded-window-top">
<a href="#" panel-name="suite-Suite" class="navigator-link">
<span class="suite-name border-passed">Suite</span>
</a> <!-- navigator-link -->
</div> <!-- suite-header light-rounded-window-top -->
<div class="navigator-suite-content">
<div class="suite-section-title">
<span>Info</span>
</div> <!-- suite-section-title -->
<div class="suite-section-content">
<ul>
<li>
<a href="#" panel-name="test-xml-Suite" class="navigator-link ">
<span>C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\testng.xml</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" panel-name="testlist-Suite" class="navigator-link ">
<span class="test-stats">1 test</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" panel-name="group-Suite" class="navigator-link ">
<span>0 groups</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" panel-name="times-Suite" class="navigator-link ">
<span>Times</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" panel-name="reporter-Suite" class="navigator-link ">
<span>Reporter output</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" panel-name="ignored-methods-Suite" class="navigator-link ">
<span>Ignored methods</span>
</a> <!-- navigator-link -->
</li>
<li>
<a href="#" panel-name="chronological-Suite" class="navigator-link ">
<span>Chronological view</span>
</a> <!-- navigator-link -->
</li>
</ul>
</div> <!-- suite-section-content -->
<div class="result-section">
<div class="suite-section-title">
<span>Results</span>
</div> <!-- suite-section-title -->
<div class="suite-section-content">
<ul>
<li>
<span class="method-stats">3 methods, 3 passed</span>
</li>
<li>
<span class="method-list-title passed">Passed methods</span>
<span class="show-or-hide-methods passed">
<a href="#" panel-name="suite-Suite" class="hide-methods passed suite-Suite"> (hide)</a> <!-- hide-methods passed suite-Suite -->
<a href="#" panel-name="suite-Suite" class="show-methods passed suite-Suite"> (show)</a> <!-- show-methods passed suite-Suite -->
</span>
<div class="method-list-content passed suite-Suite">
<span>
<img src="passed.png" width="3%"/>
<a href="#" panel-name="suite-Suite" title="com.hexaware.parabank.Runner" class="method navigator-link" hash-for-method="OpenNewAccount">OpenNewAccount</a> <!-- method navigator-link -->
</span>
<br/>
<span>
<img src="passed.png" width="3%"/>
<a href="#" panel-name="suite-Suite" title="com.hexaware.parabank.Runner" class="method navigator-link" hash-for-method="RegisterAccount">RegisterAccount</a> <!-- method navigator-link -->
</span>
<br/>
<span>
<img src="passed.png" width="3%"/>
<a href="#" panel-name="suite-Suite" title="com.hexaware.parabank.Runner" class="method navigator-link" hash-for-method="loginAccount">loginAccount</a> <!-- method navigator-link -->
</span>
<br/>
</div> <!-- method-list-content passed suite-Suite -->
</li>
</ul>
</div> <!-- suite-section-content -->
</div> <!-- result-section -->
</div> <!-- navigator-suite-content -->
</div> <!-- rounded-window -->
</div> <!-- suite -->
</div> <!-- navigator-root -->
<div class="wrapper">
<div class="main-panel-root">
<div panel-name="suite-Suite" class="panel Suite">
<div class="suite-Suite-class-passed">
<div class="main-panel-header rounded-window-top">
<img src="passed.png"/>
<span class="class-name">com.hexaware.parabank.Runner</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<div class="method">
<div class="method-content">
<a name="OpenNewAccount">
</a> <!-- OpenNewAccount -->
<span class="method-name">OpenNewAccount</span>
</div> <!-- method-content -->
</div> <!-- method -->
<div class="method">
<div class="method-content">
<a name="RegisterAccount">
</a> <!-- RegisterAccount -->
<span class="method-name">RegisterAccount</span>
</div> <!-- method-content -->
</div> <!-- method -->
<div class="method">
<div class="method-content">
<a name="loginAccount">
</a> <!-- loginAccount -->
<span class="method-name">loginAccount</span>
</div> <!-- method-content -->
</div> <!-- method -->
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- suite-Suite-class-passed -->
</div> <!-- panel Suite -->
<div panel-name="test-xml-Suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">C:\Users\1000074437\Desktop\1000074437\Parabank\parabank\parabank\testng.xml</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<pre>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE suite SYSTEM &quot;https://testng.org/testng-1.0.dtd&quot;&gt;
&lt;suite name=&quot;Suite&quot; guice-stage=&quot;DEVELOPMENT&quot;&gt;
&lt;test thread-count=&quot;5&quot; name=&quot;Test&quot;&gt;
&lt;classes&gt;
&lt;class name=&quot;com.hexaware.parabank.hook&quot;/&gt;
&lt;class name=&quot;com.hexaware.parabank.Runner&quot;/&gt;
&lt;/classes&gt;
&lt;/test&gt; &lt;!-- Test --&gt;
&lt;/suite&gt; &lt;!-- Suite --&gt;
</pre>
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="testlist-Suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Tests for Suite</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<ul>
<li>
<span class="test-name">Test (2 classes)</span>
</li>
</ul>
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="group-Suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Groups for Suite</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="times-Suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Times for Suite</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<div class="times-div">
<script type="text/javascript">
suiteTableInitFunctions.push('tableData_Suite');
function tableData_Suite() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'Number');
data.addColumn('string', 'Method');
data.addColumn('string', 'Class');
data.addColumn('number', 'Time (ms)');
data.addRows(3);
data.setCell(0, 0, 0)
data.setCell(0, 1, 'RegisterAccount')
data.setCell(0, 2, 'com.hexaware.parabank.Runner')
data.setCell(0, 3, 8224);
data.setCell(1, 0, 1)
data.setCell(1, 1, 'OpenNewAccount')
data.setCell(1, 2, 'com.hexaware.parabank.Runner')
data.setCell(1, 3, 2346);
data.setCell(2, 0, 2)
data.setCell(2, 1, 'loginAccount')
data.setCell(2, 2, 'com.hexaware.parabank.Runner')
data.setCell(2, 3, 2334);
window.suiteTableData['Suite']= { tableData: data, tableDiv: 'times-div-Suite'}
return data;
}
</script>
<span class="suite-total-time">Total running time: 12 seconds</span>
<div id="times-div-Suite">
</div> <!-- times-div-Suite -->
</div> <!-- times-div -->
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="reporter-Suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Reporter output for Suite</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="ignored-methods-Suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">0 ignored methods</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
<div panel-name="chronological-Suite" class="panel">
<div class="main-panel-header rounded-window-top">
<span class="header-content">Methods in chronological order</span>
</div> <!-- main-panel-header rounded-window-top -->
<div class="main-panel-content rounded-window-bottom">
<div class="chronological-class">
<div class="chronological-class-name">com.hexaware.parabank.Runner</div> <!-- chronological-class-name -->
<div class="configuration-class before">
<span class="method-name">setup</span>
<span class="method-start">0 ms</span>
</div> <!-- configuration-class before -->
<div class="test-method">
<span class="method-name">RegisterAccount</span>
<span class="method-start">3204 ms</span>
</div> <!-- test-method -->
<div class="test-method">
<span class="method-name">loginAccount</span>
<span class="method-start">11431 ms</span>
</div> <!-- test-method -->
<div class="test-method">
<span class="method-name">OpenNewAccount</span>
<span class="method-start">13767 ms</span>
</div> <!-- test-method -->
<div class="configuration-class after">
<span class="method-name">tearDown</span>
<span class="method-start">16116 ms</span>
</div> <!-- configuration-class after -->
</div> <!-- main-panel-content rounded-window-bottom -->
</div> <!-- panel -->
</div> <!-- main-panel-root -->
</div> <!-- wrapper -->
</body>
<script type="text/javascript" src="testng-reports2.js"></script>
</html>

2
test-output/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitReportReporter -->
<testsuite hostname="Evolve-VM-27" failures="0" tests="1" name="com.hexaware.parabank.App" time="0.008" errors="0" timestamp="2023-03-21T16:09:37 GMT+05:30" skipped="0">
<testcase classname="com.hexaware.parabank.App" name="print" time="0.008"/>
<system-out/>
</testsuite> <!-- com.hexaware.parabank.App -->

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitReportReporter -->
<testsuite hostname="Evolve-VM-28" failures="0" tests="3" name="com.hexaware.parabank.Runner" time="12.904" errors="0" timestamp="2023-03-24T11:34:01 GMT+05:30" skipped="0">
<testcase classname="com.hexaware.parabank.Runner" name="RegisterAccount" time="8.224"/>
<system-out/>
<testcase classname="com.hexaware.parabank.Runner" name="loginAccount" time="2.334"/>
<system-out/>
<testcase classname="com.hexaware.parabank.Runner" name="OpenNewAccount" time="2.346"/>
<system-out/>
</testsuite> <!-- com.hexaware.parabank.Runner -->

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by org.testng.reporters.JUnitReportReporter -->
<testsuite hostname="Evolve-VM-28" failures="0" tests="2" name="com.hexaware.parabank.UserRegistration" time="4.058" errors="1" timestamp="2023-03-23T16:50:44 GMT+05:30" skipped="0">
<testcase classname="com.hexaware.parabank.UserRegistration" name="goToUrl" time="4.057"/>
<system-out/>
<testcase classname="com.hexaware.parabank.UserRegistration" name="typeCred" time="0.001">
<error message="Cannot invoke &quot;org.openqa.selenium.SearchContext.findElement(org.openqa.selenium.By)&quot; because &quot;this.searchContext&quot; is null" type="java.lang.NullPointerException">
<![CDATA[java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.SearchContext.findElement(org.openqa.selenium.By)" because "this.searchContext" is null
at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:70)
at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:39)
at com.sun.proxy.$Proxy11.click(Unknown Source)
at com.hexaware.parabank.UserRegistration.typeCred(UserRegistration.java:40)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:598)
at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:824)
at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.testng.TestRunner.privateRun(TestRunner.java:794)
at org.testng.TestRunner.run(TestRunner.java:596)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:377)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:371)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:332)
at org.testng.SuiteRunner.run(SuiteRunner.java:276)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1212)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1134)
at org.testng.TestNG.runSuites(TestNG.java:1063)
at org.testng.TestNG.run(TestNG.java:1031)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
]]>
</error>
</testcase> <!-- typeCred -->
<system-out/>
</testsuite> <!-- com.hexaware.parabank.UserRegistration -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

View File

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

View File

@ -0,0 +1,36 @@
<table border='1'>
<tr>
<th>Class name</th>
<th>Method name</th>
<th>Groups</th>
</tr><tr>
<td>com.hexaware.parabank.Runner</td>
<td>&nbsp;</td><td>&nbsp;</td></tr>
<tr>
<td align='center' colspan='3'>@Test</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>RegisterAccount</td>
<td>&nbsp;</td></tr>
<tr>
<td align='center' colspan='3'>@BeforeClass</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>setup</td>
<td>&nbsp;</td></tr>
<tr>
<td align='center' colspan='3'>@BeforeMethod</td>
</tr>
<tr>
<td align='center' colspan='3'>@AfterMethod</td>
</tr>
<tr>
<td align='center' colspan='3'>@AfterClass</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>tearDown</td>
<td>&nbsp;</td></tr>
</table>

View File

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

View File

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

View File

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

View File

@ -0,0 +1,10 @@
<h2>Methods run, sorted chronologically</h2><h3>&gt;&gt; means before, &lt;&lt; means after</h3><p/><br/><em>Default suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
<table border="1">
<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
<tr bgcolor="f0819d"> <td>23/03/23 19:07:33</td> <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="Runner.RegisterAccount()[pri:1, instance:com.hexaware.parabank.Runner@53aac487]">RegisterAccount</td>
<td>main@216856121</td> <td></td> </tr>
<tr bgcolor="668b6e"> <td>23/03/23 19:07:30</td> <td>-3029</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&gt;&gt;hook.setup()[pri:0, instance:com.hexaware.parabank.Runner@53aac487]">&gt;&gt;setup</td>
<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td> <td>main@216856121</td> <td></td> </tr>
<tr bgcolor="668b6e"> <td>23/03/23 19:07:38</td> <td>5310</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&lt;&lt;hook.tearDown()[pri:0, instance:com.hexaware.parabank.Runner@53aac487]">&lt;&lt;tearDown</td>
<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td> <td>main@216856121</td> <td></td> </tr>
</table>

View File

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

View File

@ -0,0 +1,10 @@
<h2>Methods run, sorted chronologically</h2><h3>&gt;&gt; means before, &lt;&lt; means after</h3><p/><br/><em>Default suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
<table border="1">
<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
<tr bgcolor="668b6e"> <td>23/03/23 19:07:38</td> <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&lt;&lt;hook.tearDown()[pri:0, instance:com.hexaware.parabank.Runner@53aac487]">&lt;&lt;tearDown</td>
<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td> <td>main@216856121</td> <td></td> </tr>
<tr bgcolor="668b6e"> <td>23/03/23 19:07:30</td> <td>-8339</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&gt;&gt;hook.setup()[pri:0, instance:com.hexaware.parabank.Runner@53aac487]">&gt;&gt;setup</td>
<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td> <td>main@216856121</td> <td></td> </tr>
<tr bgcolor="f0819d"> <td>23/03/23 19:07:33</td> <td>-5310</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="Runner.RegisterAccount()[pri:1, instance:com.hexaware.parabank.Runner@53aac487]">RegisterAccount</td>
<td>main@216856121</td> <td></td> </tr>
</table>

View File

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

View File

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

View File

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

View File

@ -0,0 +1 @@
[SuiteResult context=Test]

View File

@ -0,0 +1,44 @@
<table border='1'>
<tr>
<th>Class name</th>
<th>Method name</th>
<th>Groups</th>
</tr><tr>
<td>com.hexaware.parabank.Runner</td>
<td>&nbsp;</td><td>&nbsp;</td></tr>
<tr>
<td align='center' colspan='3'>@Test</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>OpenNewAccount</td>
<td>&nbsp;</td></tr>
<tr>
<td>&nbsp;</td>
<td>loginAccount</td>
<td>&nbsp;</td></tr>
<tr>
<td>&nbsp;</td>
<td>RegisterAccount</td>
<td>&nbsp;</td></tr>
<tr>
<td align='center' colspan='3'>@BeforeClass</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>setup</td>
<td>&nbsp;</td></tr>
<tr>
<td align='center' colspan='3'>@BeforeMethod</td>
</tr>
<tr>
<td align='center' colspan='3'>@AfterMethod</td>
</tr>
<tr>
<td align='center' colspan='3'>@AfterClass</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>tearDown</td>
<td>&nbsp;</td></tr>
</table>

View File

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

View File

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

View File

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

View File

@ -0,0 +1,14 @@
<h2>Methods run, sorted chronologically</h2><h3>&gt;&gt; means before, &lt;&lt; means after</h3><p/><br/><em>Suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
<table border="1">
<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
<tr bgcolor="76738a"> <td>23/03/24 11:33:52</td> <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="Runner.OpenNewAccount()[pri:3, instance:com.hexaware.parabank.Runner@3527942a]">OpenNewAccount</td>
<td>main@113411247</td> <td></td> </tr>
<tr bgcolor="76738a"> <td>23/03/24 11:33:41</td> <td>-10563</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="Runner.RegisterAccount()[pri:1, instance:com.hexaware.parabank.Runner@3527942a]">RegisterAccount</td>
<td>main@113411247</td> <td></td> </tr>
<tr bgcolor="76738a"> <td>23/03/24 11:33:50</td> <td>-2336</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="Runner.loginAccount()[pri:2, instance:com.hexaware.parabank.Runner@3527942a]">loginAccount</td>
<td>main@113411247</td> <td></td> </tr>
<tr bgcolor="f0819d"> <td>23/03/24 11:33:38</td> <td>-13762</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&gt;&gt;hook.setup()[pri:0, instance:com.hexaware.parabank.Runner@3527942a]">&gt;&gt;setup</td>
<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td> <td>main@113411247</td> <td></td> </tr>
<tr bgcolor="f0819d"> <td>23/03/24 11:33:54</td> <td>2350</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&lt;&lt;hook.tearDown()[pri:0, instance:com.hexaware.parabank.Runner@3527942a]">&lt;&lt;tearDown</td>
<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td> <td>main@113411247</td> <td></td> </tr>
</table>

View File

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

View File

@ -0,0 +1,14 @@
<h2>Methods run, sorted chronologically</h2><h3>&gt;&gt; means before, &lt;&lt; means after</h3><p/><br/><em>Suite</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
<table border="1">
<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
<tr bgcolor="76738a"> <td>23/03/24 11:33:41</td> <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="Runner.RegisterAccount()[pri:1, instance:com.hexaware.parabank.Runner@3527942a]">RegisterAccount</td>
<td>main@113411247</td> <td></td> </tr>
<tr bgcolor="76738a"> <td>23/03/24 11:33:52</td> <td>10563</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="Runner.OpenNewAccount()[pri:3, instance:com.hexaware.parabank.Runner@3527942a]">OpenNewAccount</td>
<td>main@113411247</td> <td></td> </tr>
<tr bgcolor="76738a"> <td>23/03/24 11:33:50</td> <td>8227</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="Runner.loginAccount()[pri:2, instance:com.hexaware.parabank.Runner@3527942a]">loginAccount</td>
<td>main@113411247</td> <td></td> </tr>
<tr bgcolor="f0819d"> <td>23/03/24 11:33:38</td> <td>-3199</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&gt;&gt;hook.setup()[pri:0, instance:com.hexaware.parabank.Runner@3527942a]">&gt;&gt;setup</td>
<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td> <td>main@113411247</td> <td></td> </tr>
<tr bgcolor="f0819d"> <td>23/03/24 11:33:54</td> <td>12913</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&lt;&lt;hook.tearDown()[pri:0, instance:com.hexaware.parabank.Runner@3527942a]">&lt;&lt;tearDown</td>
<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td> <td>main@113411247</td> <td></td> </tr>
</table>

View File

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

View File

@ -0,0 +1 @@
<html><head><title>testng.xml for Suite</title></head><body><tt>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt; <br/>&lt;!DOCTYPE&nbsp;suite&nbsp;SYSTEM&nbsp;"https://testng.org/testng-1.0.dtd"&gt; <br/>&lt;suite&nbsp;name="Suite"&nbsp;guice-stage="DEVELOPMENT"&gt; <br/>&nbsp;&nbsp;&lt;test&nbsp;thread-count="5"&nbsp;name="Test"&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;classes&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class&nbsp;name="com.hexaware.parabank.hook"/&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class&nbsp;name="com.hexaware.parabank.Runner"/&gt; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/classes&gt; <br/>&nbsp;&nbsp;&lt;/test&gt;&nbsp;&lt;!--&nbsp;Test&nbsp;--&gt; <br/>&lt;/suite&gt;&nbsp;&lt;!--&nbsp;Suite&nbsp;--&gt; <br/></tt></body></html>

View File

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

View File

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

BIN
test-output/passed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1019 B

BIN
test-output/skipped.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Failed suite [Suite]" guice-stage="DEVELOPMENT">
<test thread-count="5" name="Test(failed)">
<classes>
<class name="com.hexaware.parabank.Runner">
<methods>
<include name="setup"/>
<include name="tearDown"/>
<include name="OpenNewAccount"/>
</methods>
</class> <!-- com.hexaware.parabank.Runner -->
</classes>
</test> <!-- Test(failed) -->
</suite> <!-- Failed suite [Suite] -->

View File

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

View File

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

View File

@ -0,0 +1,344 @@
body {
background-color: whitesmoke;
margin: 0 0 5px 5px;
}
ul {
margin-top: 10px;
margin-left:-10px;
}
li {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
padding:5px 5px;
}
a {
text-decoration: none;
color: black;
font-size: 14px;
}
a:hover {
color:black ;
text-decoration: underline;
}
.navigator-selected {
/* #ffa500; Mouse hover color after click Orange.*/
background:#027368
}
.wrapper {
position: absolute;
top: 60px;
bottom: 0;
left: 400px;
right: 0;
margin-right:9px;
overflow: auto;/*imortant*/
}
.navigator-root {
position: absolute;
top: 60px;
bottom: 0;
left: 0;
width: 400px;
overflow-y: auto;/*important*/
}
.suite {
margin: -5px 10px 10px 5px;
background-color: whitesmoke ;/*Colour of the left bside box*/
}
.suite-name {
font-size: 24px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;/*All TEST SUITE*/
color: white;
}
.main-panel-header {
padding: 5px;
background-color: #027368; /*afeeee*/;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
color:white;
font-size: 18px;
}
.main-panel-content {
padding: 5px;
margin-bottom: 10px;
background-color: #CCD0D1; /*d0ffff*/; /*Belongs to backGround of rightSide boxes*/
}
.rounded-window {
border-style: dotted;
border-width: 1px;/*Border of left Side box*/
background-color: whitesmoke;
border-radius: 10px;
}
.rounded-window-top {
border-top-right-radius: 10px 10px;
border-top-left-radius: 10px 10px;
border-style: solid;
border-width: 1px;
overflow: auto;/*Top of RightSide box*/
}
.light-rounded-window-top {
background-color: #027368;
padding-left:120px;
border-radius: 10px;
}
.rounded-window-bottom {
border-bottom-right-radius: 10px 10px;
border-bottom-left-radius: 10px 10px;
overflow: auto;/*Bottom of rightSide box*/
}
.method-name {
font-size: 14px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight: bold;
}
.method-content {
border-style: solid;
border-width: 0 0 1px 0;
margin-bottom: 10px;
padding-bottom: 5px;
width: 100%;
}
.parameters {
font-size: 14px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.stack-trace {
white-space: pre;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 12px;
font-weight: bold;
margin-top: 0;
margin-left: 20px; /*Error Stack Trace Message*/
}
.testng-xml {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.method-list-content {
margin-left: 10px;
}
.navigator-suite-content {
margin-left: 10px;
font: 12px 'Lucida Grande';
}
.suite-section-title {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
font-weight:bold;
background-color: #8C8887;
margin-left: -10px;
margin-top:10px;
padding:6px;
}
.suite-section-content {
list-style-image: url(bullet_point.png);
background-color: whitesmoke;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
overflow: hidden;
}
.top-banner-root {
position: absolute;
top: 0;
height: 45px;
left: 0;
right: 0;
padding: 5px;
margin: 0 0 5px 0;
background-color: #027368;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 18px;
color: #fff;
text-align: center;/*Belongs to the Top of Report*//*Status: - Completed*/
}
.top-banner-title-font {
font-size: 25px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
padding: 3px;
float: right;
}
.test-name {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 16px;
}
.suite-icon {
padding: 5px;
float: right;
height: 20px;
}
.test-group {
font: 20px 'Lucida Grande';
margin: 5px 5px 10px 5px;
border-width: 0 0 1px 0;
border-style: solid;
padding: 5px;
}
.test-group-name {
font-weight: bold;
}
.method-in-group {
font-size: 16px;
margin-left: 80px;
}
table.google-visualization-table-table {
width: 100%;
}
.reporter-method-name {
font-size: 14px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.reporter-method-output-div {
padding: 5px;
margin: 0 0 5px 20px;
font-size: 12px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
border-width: 0 0 0 1px;
border-style: solid;
}
.ignored-class-div {
font-size: 14px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.ignored-methods-div {
padding: 5px;
margin: 0 0 5px 20px;
font-size: 12px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
border-width: 0 0 0 1px;
border-style: solid;
}
.border-failed {
border-radius:2px;
border-style: solid;
border-width: 0 0 0 10px;
border-color: #F20505;
}
.border-skipped {
border-radius:2px;
border-style: solid;
border-width: 0 0 0 10px;
border-color: #F2BE22;
}
.border-passed {
border-radius:2px;
border-style: solid;
border-width: 0 0 0 10px;
border-color: #038C73;
}
.times-div {
text-align: center;
padding: 5px;
}
.suite-total-time {
font: 16px 'Lucida Grande';
}
.configuration-suite {
margin-left: 20px;
}
.configuration-test {
margin-left: 40px;
}
.configuration-class {
margin-left: 60px;
}
.configuration-method {
margin-left: 80px;
}
.test-method {
margin-left: 100px;
}
.chronological-class {
background-color: #CCD0D1;
border-width: 0 0 1px 1px;/*Chronological*/
}
.method-start {
float: right;
}
.chronological-class-name {
padding: 0 0 0 5px;
margin-top:5px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #008;
}
.after, .before, .test-method {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
margin-top:5px;
}
.navigator-suite-header {
font-size: 18px;
margin: 0px 10px 10px 5px;
padding: 5px;
border-radius: 10px;
background-color: #027368;
color: white;
font-weight:bold;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
text-align: center; /*All Suites on top of left box*//*Status: -Completed*/
}
.collapse-all-icon {
padding: 3px;
float: right;
}
.button{
position: absolute;
margin-left:500px;
margin-top:8px;
background-color: white;
color:#027368;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight:bold;
border-color:#027368;
border-radius:25px;
cursor: pointer;
height:30px;
width:150px;
outline: none;
}
/*Author: - Akhil Gullapalli*/

View File

@ -0,0 +1,76 @@
window.onload = function () {
let cookies = document.cookie;
let cookieValue = cookies.split('=');
if (cookieValue[1] === 'null' || localStorage.getItem('Theme') === 'null') {
document.getElementById('retro').setAttribute('disabled', 'false');
} else if (cookieValue[1] === 'Switch Ultra Theme' ||
localStorage.getItem('Theme') === 'Switch Ultra Theme') {
document.getElementById('button').innerText = "Switch Retro Theme";
document.getElementById('retro').setAttribute('disabled', 'false');
} else if (cookieValue[1] === 'Switch Retro Theme' ||
localStorage.getItem('Theme') === 'Switch Retro Theme') {
if (cookieValue[1] === 'Switch Ultra Theme' ||
localStorage.getItem('Theme') === 'Switch Ultra Theme') {
document.getElementById('button').innerText = "Switch Retro Theme";
document.getElementById('retro').setAttribute('disabled', 'false');
document.getElementById('button').innerText = "Switch Ultra Theme";
document.getElementById('retro').removeAttribute('disabled');
document.getElementById('ultra').setAttribute('disabled', 'false');
localStorage.setItem('Theme', select);
} else if (select === 'Switch Ultra Theme') {
document.getElementById('button').innerText = "Switch Retro Theme";
document.getElementById('ultra').removeAttribute('disabled');
document.getElementById('retro').setAttribute('disabled', 'false');
localStorage.setItem('Theme', select);
}
} else if (cookieValue[1] === 'Switch Retro Theme' ||
localStorage.getItem('Theme') === 'Switch Retro Theme') {
document.getElementById('button').innerText = "Switch Ultra Theme";
document.getElementById('ultra').setAttribute('disabled', 'false');
}
}
document.getElementById('button').onclick = function () {
let select = document.getElementById('button').innerText;
if (select === 'Switch Retro Theme') {
let d = new Date();
days = 365;
d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000
document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";";
document.getElementById('button').innerText = "Switch Ultra Theme";
document.getElementById('retro').removeAttribute('disabled');
document.getElementById('ultra').setAttribute('disabled', 'false');
localStorage.setItem('Theme', select);
} else if (select === 'Switch Ultra Theme') {
let d = new Date();
days = 365;
d.setTime(+d + (days * 86400000)); //24 * 60 * 60 * 1000
document.cookie = "Theme =" + select + "; expires=" + d.toGMTString() + ";";
document.getElementById('button').innerText = "Switch Retro Theme";
document.getElementById('ultra').removeAttribute('disabled');
document.getElementById('retro').setAttribute('disabled', 'false');
localStorage.setItem('Theme', select);
}
}
//Function to mouse hovering affect.
document.getElementById('button').onmouseover = function () {
document.getElementById('button').style.borderRadius = "25px";
document.getElementById('button').style.width = "180px";
document.getElementById('button').style.height = "45px";
document.getElementById('button').style.marginTop = "1px";
}
//Function to mouse out affect
document.getElementById('button').onmouseout = function () {
document.getElementById('button').style.borderRadius = "25px";
document.getElementById('button').style.width = "150px";
document.getElementById('button').style.height = "30px";
document.getElementById('button').style.marginTop = "8px";
}
//This is the file where we handle the switching of the Themes.
/*Author:- Akhil Gullapalli*/

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<testng-results ignored="0" total="3" passed="3" failed="0" skipped="0">
<reporter-output>
</reporter-output>
<suite started-at="2023-03-24T11:33:38 GMT+05:30" name="Suite" finished-at="2023-03-24T11:34:00 GMT+05:30" duration-ms="22170">
<groups>
</groups>
<test started-at="2023-03-24T11:33:38 GMT+05:30" name="Test" finished-at="2023-03-24T11:34:00 GMT+05:30" duration-ms="22170">
<class name="com.hexaware.parabank.Runner">
<test-method is-config="true" signature="setup()[pri:0, instance:com.hexaware.parabank.Runner@3527942a]" started-at="2023-03-24T11:33:38 GMT+05:30" name="setup" finished-at="2023-03-24T11:33:41 GMT+05:30" duration-ms="3193" status="PASS">
<reporter-output>
</reporter-output>
</test-method> <!-- setup -->
<test-method signature="RegisterAccount()[pri:1, instance:com.hexaware.parabank.Runner@3527942a]" started-at="2023-03-24T11:33:41 GMT+05:30" name="RegisterAccount" finished-at="2023-03-24T11:33:50 GMT+05:30" duration-ms="8224" status="PASS">
<reporter-output>
</reporter-output>
</test-method> <!-- RegisterAccount -->
<test-method signature="loginAccount()[pri:2, instance:com.hexaware.parabank.Runner@3527942a]" started-at="2023-03-24T11:33:50 GMT+05:30" name="loginAccount" finished-at="2023-03-24T11:33:52 GMT+05:30" duration-ms="2334" status="PASS">
<reporter-output>
</reporter-output>
</test-method> <!-- loginAccount -->
<test-method signature="OpenNewAccount()[pri:3, instance:com.hexaware.parabank.Runner@3527942a]" started-at="2023-03-24T11:33:52 GMT+05:30" name="OpenNewAccount" finished-at="2023-03-24T11:33:54 GMT+05:30" duration-ms="2346" status="PASS">
<reporter-output>
</reporter-output>
</test-method> <!-- OpenNewAccount -->
<test-method is-config="true" signature="tearDown()[pri:0, instance:com.hexaware.parabank.Runner@3527942a]" started-at="2023-03-24T11:33:54 GMT+05:30" name="tearDown" finished-at="2023-03-24T11:34:00 GMT+05:30" duration-ms="6032" status="PASS">
<reporter-output>
</reporter-output>
</test-method> <!-- tearDown -->
</class> <!-- com.hexaware.parabank.Runner -->
</test> <!-- Test -->
</suite> <!-- Suite -->
</testng-results>

9
test-output/testng.css Normal file
View File

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

10
testng.xml Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class name="com.hexaware.parabank.hook"/>
<class name="com.hexaware.parabank.Runner"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->