Setting Chrome Browser from Environmental Variables




Setting the property in Environment Variables to Open Browser in Selenium. 

Navigate to Control Panel\System and Security\System\Advanced System Settings\Advance\Environment variables


  1. Add the TEMP as below
  2. Select the Path System variable and click on Edit button. Now move to the end of the Variable value field, then add a semi colon (;) 
  3. Add the ChromeDriver’s folder location
  4. Click Apply and OK




5.Add the script as below

ChromeDriver driver = new ChromeDriver();
driver.get("http://www.google.com");

6.Run the script,observe the script will execute änd open Chrome Browser with out "System.setProperty("webdriver.chrome.driver", "C:\\Users\\prasanthi.podila\\eclipse-workspace\\FrameworkFile\\ExternalFiles\\chromedriver_win32\\chromedriver.exe"); command

Ant Installation in windows

ANT Download:
Download Ant from http://ant.apache.org/bindownload.cgi
Click zip archive: apache-ant-1.9.4-bin.zip link
Extract or Unzip the file
Click INSTALL

Setting JDK and Ant path in Command prompt :
set java_home=C:\Program Files\Java\jdk1.7.0_45
set ant_home=C:\ant\apache-ant-1.9.2-bin\apache-ant-1.9.2
set path=%path%;%java_home%\bin;%ant_home%\bin;
Type ant in command prompt.
(Or )
Setting JDK and Ant path in Environment Variables:

1. Right click Computer properties
2. Click Advance system settings

3. Click New under System Variable
4. Enter JAVA_HOME in variable name
5. Enter C:\Program Files\Java\jdk1.7.0_45 in variable value (JDK path)
6. Click OK

7.Click New under System Variable
8.Enter ANT_HOME in variable name
9.Enter C:\ant\apache-ant-1.9.2-bin\apache-ant-1.9.2 in variable value (Ant path)
10.Click OK

11.Select Path
12.Edit Path
13. Enter ; in variable value
14.Enter %path%;%java_home%\bin;%ant_home%\bin;
15.Click OK

16.Enter ant -version in command prompt and click enter
17.Enter ant and click enter

testng-results.xsl

xml version="1.0" encoding="UTF-8"?>







<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"


xmlns:math="http://exslt.org/math"


xmlns:testng="http://testng.org">





<xsl:output method="html" indent="yes" omit-xml-declaration="yes"


doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"


doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>


<xsl:output name="text" method="text"/>


<xsl:output name="xml" method="xml" indent="yes"/>


<xsl:output name="html" method="html" indent="yes" omit-xml-declaration="yes"/>


<xsl:output name="xhtml" method="xhtml" indent="yes" omit-xml-declaration="yes"/>





<xsl:param name="testNgXslt.outputDir"/>


<xsl:param name="testNgXslt.cssFile"/>


<xsl:param name="testNgXslt.showRuntimeTotals"/>


<xsl:param name="testNgXslt.reportTitle"/>


<xsl:param name="testNgXslt.sortTestCaseLinks"/>


<xsl:param name="testNgXslt.chartScaleFactor"/>




<xsl:param name="testNgXslt.testDetailsFilter"/>





<xsl:variable name="testDetailsFilter" select="if ($testNgXslt.testDetailsFilter) then $testNgXslt.testDetailsFilter else 'FAIL,PASS,SKIP'"/>





<xsl:variable name="chartWidth" select="round(600 * testng:getVariableSafe($testNgXslt.chartScaleFactor, 1))"/>


<xsl:variable name="chartHeight" select="round(200 * testng:getVariableSafe($testNgXslt.chartScaleFactor, 1))"/>





<xsl:template name="writeCssFile">


<xsl:result-document href="{testng:absolutePath('style.css')}" format="text">


<xsl:choose>


<xsl:when test="testng:isFilterSelected('CONF') = 'true'">



.testMethodStatusCONF { }

</xsl:when>


<xsl:otherwise>



.testMethodStatusCONF { display: none; }

</xsl:otherwise>


</xsl:choose>





<xsl:choose>


<xsl:when test="testng:isFilterSelected('FAIL') = 'true'">



.testMethodStatusFAIL { background-color: #FFBBBB; }

</xsl:when>


<xsl:otherwise>



.testMethodStatusFAIL { background-color: #FFBBBB; display: none; }

</xsl:otherwise>


</xsl:choose>





<xsl:choose>


<xsl:when test="testng:isFilterSelected('PASS') = 'true'">



.testMethodStatusPASS { background-color: lightgreen; }

</xsl:when>


<xsl:otherwise>



.testMethodStatusPASS { background-color: lightgreen; display: none; }

</xsl:otherwise>


</xsl:choose>





<xsl:choose>


<xsl:when test="testng:isFilterSelected('SKIP') = 'true'">



.testMethodStatusSKIP { background-color: #FFFFBB; }

</xsl:when>


<xsl:otherwise>



.testMethodStatusSKIP { background-color: #FFFFBB; display: none; }

</xsl:otherwise>


</xsl:choose>





<![CDATA[



body { font-family: Arial, sans-serif; font-size: 12px; padding: 10px; margin: 0px; background-color: white; }


a, a:hover, a:active, a:visited { color: navy; }





.suiteMenuHeader { margin-top: 10px; }


.suiteMenuHeader td { padding: 5px; background-color: #e0e0e0; font-size: 12px; width: 100%; vertical-align: top; }





.suiteStatusPass, .suiteStatusFail { padding-right: 20px; width: 20px; height: 20px; margin: 2px 4px 2px 2px; display: inline; }


.suiteStatusPass { background-color: green; }


.suiteStatusFail { background-color: red; }





.testCaseLink, .testCaseLinkSelected { margin-top: 2px; padding: 4px; cursor: pointer; }


.testCaseLink { background-color: #f6f6f6; }


.testCaseLinkSelected { background-color: lightblue; border: 1px solid gray; padding: 3px; }


.testCaseFail, .testCasePass, .testCaseSkip { padding-right: 15px; width: 15px; height: 15px; margin: 2px 4px 2px 2px; display: inline; }


.testCaseFail { background-color: red; }


.testCasePass { background-color: green; }


.testCaseSkip { background-color: yellow; }





tr.methodsTableHeader { background-color: #eaf0f7; font-weight: bold; }


tr.methodsTableHeader td { padding: 3px; }





.testMethodStatusFAIL a, .testMethodStatusPASS a, .testMethodStatusSKIP a { color:navy; text-decoration: none; cursor: pointer; }


.testMethodStatusFAIL td, .testMethodStatusPASS td, .testMethodStatusSKIP td { padding: 3px; }





.testMethodDetails, .testMethodDetailsVisible { padding: 5px; background-color: #f5f5f5; margin: 1px; }


.testMethodDetails { display: none; }





.testMethodsTable { margin-top: 10px; font-size: 12px; }


.testMethodsTable td { border-width: 1px 0 0 1px; border-color: white; border-style:solid; }


.testMethodsTable .detailsBox { padding: 0; background-color: white; border-style: none; height: 0px; }


.testMethodsTable .testMethodStatusCONF td.firstMethodCell { border-left: 5px solid gray; }

]]>


</xsl:result-document>


</xsl:template>





<xsl:template name="writeJsFile">


<xsl:result-document href="{testng:absolutePath('main.js')}" format="text">


<![CDATA[



var selectedTestCaseLink;





function clearAllSelections() {


if (selectedTestCaseLink != null) {


selectedTestCaseLink.className = "testCaseLink";


}


}





function selectTestCaseLink(testCaseLinkElement) {


clearAllSelections();


testCaseLinkElement.className = "testCaseLinkSelected";


selectedTestCaseLink = testCaseLinkElement;


}





function switchTestMethodsView(checkbox) {


document.getElementById("testMethodsByStatus").style["display"] = checkbox.checked ? "none" : "block";


document.getElementById("testMethodsByClass").style["display"] = checkbox.checked ? "block" : "none";


}





function toggleVisibility(elementId) {


var displayElement = document.getElementById(elementId);


if (getCurrentStyle(displayElement, "display") == "none") {


displayElement.style["display"] = "block";


} else {


displayElement.style["display"] = "none";


}


}





function toggleDetailsVisibility(elementId) {


var displayElement = document.getElementById(elementId);


if (displayElement.className == "testMethodDetails") {


displayElement.className = "testMethodDetailsVisible";


} else {


displayElement.className = "testMethodDetails";


}


}





function getCurrentStyle(elem, prop) {


if (elem.currentStyle) {


var ar = prop.match(/\w[^-]*/g);


var s = ar[0];


for(var i = 1; i < ar.length; ++i) {


s += ar[i].replace(/\w/, ar[i].charAt(0).toUpperCase());


}


return elem.currentStyle[s];


} else if (document.defaultView.getComputedStyle) {


return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);


}


}





function testMethodsFilterChanged(filterCheckBox, status) {


var filterAll = document.getElementById("methodsFilter_ALL");


var filterFail = document.getElementById("methodsFilter_FAIL");


var filterPass = document.getElementById("methodsFilter_PASS");


var filterSkip = document.getElementById("methodsFilter_SKIP");


var filterConf = document.getElementById("methodsFilter_CONF");


if (filterCheckBox != filterAll) {


filterMethods(filterCheckBox, status);


checkMainFilter(filterAll, filterFail, filterPass, filterSkip, filterConf);


} else {


filterFail.checked = filterPass.checked = filterSkip.checked = filterConf.checked = filterAll.checked;


filterMethods(filterAll, "FAIL");


filterMethods(filterAll, "PASS");


filterMethods(filterAll, "SKIP");


filterMethods(filterAll, "CONF");


}


closeAllExpandedDetails();


}





function checkMainFilter(filterAll, filterFail, filterPass, filterSkip, filterConf) {


if ((filterFail.checked == filterPass.checked) && (filterPass.checked == filterSkip.checked) && (filterSkip.checked == filterConf.checked)) {


filterAll.checked = filterFail.checked;


} else {


filterAll.checked = false;


}


}





function filterMethods(filterCheckBox, status) {


var visible = filterCheckBox.checked;


alterCssElement("testMethodStatus" + status, "display", visible ? "" : "none");


}





function alterCssElement(cssClass, element, value) {


var rules;


if (document.all) {


rules = 'rules';


}


else if (document.getElementById) {


rules = 'cssRules';


}


for (var i = 0; i < document.styleSheets.length; i++) {


for (var j = 0; j < document.styleSheets[i][rules].length; j++) {


if (document.styleSheets[i][rules][j].selectorText.indexOf(cssClass) > -1) {


document.styleSheets[i][rules][j].style[element] = value;


break;


}


}


}


}





function closeAllExpandedDetails() {


var node = document.getElementsByTagName("body")[0];


//var re = new RegExp("\\btestMethodDetailsVisible\\b");


var els = document.getElementsByTagName("div");


for (var i = 0,j = els.length; i < j; i++) {


if (els[i].className == "testMethodDetailsVisible") {


els[i].className = "testMethodDetails";


}


}


}





function renderSvgEmbedTag(chartWidth, chartHeight) {


var success = false;


var userAgent = navigator.userAgent;





if (userAgent.indexOf("Firefox") > -1 || userAgent.indexOf("Safari") > -1) {


success = true;


} else if (navigator.mimeTypes != null && navigator.mimeTypes.length > 0) {


if (navigator.mimeTypes["image/svg+xml"] != null) {


success = true;


}


} else if (window.ActiveXObject) {


try {


testObj = new ActiveXObject("Adobe.SVGCtl");


success = true;


} catch (e) {}


}





var chartContainer = document.getElementById('chart-container');




if (success) {


var chart = document.createElement('embed');




chart.src = 'overview-chart.svg';


chart.type = 'image/svg+xml';


chart.width = chartWidth;


chart.height = chartHeight;




chartContainer.appendChild(chart);


} else {


var message = document.createElement('h4');


var text = document.createTextNode('SVG Pie Charts are not available. Please install a SVG viewer for your browser.');




message.style.color = 'navy';


message.appendChild(text);




chartContainer.appendChild(message);


}


}

]]>


</xsl:result-document>


</xsl:template>





<xsl:template name="htmlHead">


<head>


<title>


<xsl:value-of select="testng:getVariableSafe($testNgXslt.reportTitle, 'TestNG Results')"/>


</title>


<meta http-equiv="content-type" content="text/html; charset=utf-8"/>


<meta http-equiv="pragma" content="no-cache"/>


<meta http-equiv="cache-control" content="max-age=0"/>


<meta http-equiv="cache-control" content="no-cache"/>


<meta http-equiv="cache-control" content="no-store"/>


<LINK rel="stylesheet" href="style.css"/>


<xsl:if test="$testNgXslt.cssFile">


<LINK rel="stylesheet" href="{$testNgXslt.cssFile}"/>


</xsl:if>


<script type="text/javascript" src="main.js"/>


</head>


</xsl:template>





<xsl:function name="testng:getVariableSafe">


<xsl:param name="testVar"/>


<xsl:param name="defaultValue"/>


<xsl:value-of select="if ($testVar) then $testVar else $defaultValue"/>


</xsl:function>





<xsl:function name="testng:trim">


<xsl:param name="arg"/>


<xsl:sequence select="replace(replace($arg,'\s+$',''),'^\s+','')"/>


</xsl:function>





<xsl:function name="testng:absolutePath">


<xsl:param name="fileName"/>


<xsl:value-of select="concat('file:////', $testNgXslt.outputDir, '/', $fileName)"/>


</xsl:function>





<xsl:function name="testng:safeFileName">


<xsl:param name="fileName"/>


<xsl:value-of select="translate($fileName, '[]{}`~!@#$%^*(){};?/\|' , '______________________')"/>


</xsl:function>





<xsl:function name="testng:suiteContentFileName">


<xsl:param name="suiteElement"/>


<xsl:value-of select="testng:safeFileName(concat($suiteElement/@name, '.html'))"/>


</xsl:function>





<xsl:function name="testng:suiteGroupsFileName">


<xsl:param name="suiteElement"/>


<xsl:value-of select="testng:safeFileName(concat($suiteElement/@name, '_groups.html'))"/>


</xsl:function>





<xsl:function name="testng:testCaseContentFileName">


<xsl:param name="testCaseElement"/>


<xsl:value-of

select="testng:safeFileName(concat($testCaseElement/../@name, '_', $testCaseElement/@name, '.html'))"/>


</xsl:function>





<xsl:function name="testng:concatParams">


<xsl:param name="params"/>


<xsl:variable name="outputString">


<xsl:value-of separator="," select="for $i in ($params) return $i"/>


</xsl:variable>


<xsl:value-of select="$outputString"/>


</xsl:function>





<xsl:function name="testng:testMethodStatus">


<xsl:param name="testMethodElement"/>


<xsl:variable name="status" select="$testMethodElement/@status"/>


<xsl:variable name="statusClass" select="concat('testMethodStatus', $status)"/>


<xsl:value-of select="if ($testMethodElement/@is-config) then concat($statusClass, ' testMethodStatusCONF') else $statusClass"/>


</xsl:function>





<xsl:function name="testng:suiteMethodsCount">


<xsl:param name="testCasesElements"/>


<xsl:param name="state"/>


<xsl:value-of

select="if ($state = '*') then count($testCasesElements/class/test-method[not(@is-config)]) else count($testCasesElements/class/test-method[(@status=$state) and (not(@is-config))])"/>


</xsl:function>





<xsl:function name="testng:testCaseMethodsCount">


<xsl:param name="testCaseElement"/>


<xsl:param name="state"/>


<xsl:value-of

select="if ($state = '*') then count($testCaseElement/class/test-method[not(@is-config)]) else count($testCaseElement/class/test-method[(@status=$state) and (not(@is-config))])"/>


</xsl:function>





<xsl:function name="testng:suiteStateClass">


<xsl:param name="testCaseElements"/>


<xsl:value-of select="if (count($testCaseElements/class/test-method[(@status='FAIL') and (not(@is-config))]) > 0) then 'suiteStatusFail' else 'suiteStatusPass'"/>


</xsl:function>




<xsl:function name="testng:formatDuration">


<xsl:param name="durationMs"/>




<xsl:if test="$durationMs > 86400000">


<xsl:value-of select="format-number($durationMs div 86400000, '#')"/>d

</xsl:if>




<xsl:if test="($durationMs > 3600000) and ($durationMs mod 86400000 > 1000)">


<xsl:value-of select="format-number(($durationMs mod 86400000) div 3600000, '#')"/>h

</xsl:if>


<xsl:if test="$durationMs < 86400000">




<xsl:if test="($durationMs > 60000) and ($durationMs mod 3600000 > 1000)">


<xsl:value-of select="format-number(floor(($durationMs mod 3600000) div 60000), '0')"/>m

</xsl:if>




<xsl:if test="($durationMs > 1000) and ($durationMs mod 60000 > 1000)">


<xsl:value-of select="format-number(floor(($durationMs mod 60000) div 1000), '#')"/>s

</xsl:if>


</xsl:if>




<xsl:if test="$durationMs < 1000">


<xsl:value-of select="$durationMs"/> ms

</xsl:if>


</xsl:function>





<xsl:function name="testng:isFilterSelected">


<xsl:param name="filterName"/>


<xsl:value-of select="contains($testDetailsFilter, $filterName)"/>


</xsl:function>





<xsl:template name="formField">


<xsl:param name="label"/>


<xsl:param name="value"/>


<xsl:if test="$value">


<div>


<b>


<xsl:value-of select="$label"/>


<xsl:text>: </xsl:text>


</b>


<xsl:value-of select="$value"/>


</div>


</xsl:if>


</xsl:template>





<xsl:template name="formFieldList">


<xsl:param name="label"/>


<xsl:param name="value"/>


<xsl:if test="count($value) > 0">


<div>


<b>


<xsl:value-of select="$label"/>:

</b>


<xsl:for-each select="$value">


<div>


    -

<xsl:value-of select="."/>


</div>


</xsl:for-each>


</div>


</xsl:if>


</xsl:template>





<xsl:template match="/testng-results">


<xsl:call-template name="writeCssFile"/>


<xsl:call-template name="writeJsFile"/>


<html>


<xsl:call-template name="htmlHead"/>


<frameset cols="250px, 100%" frameborder="1">


<frame name="navigation" src="navigation.html"/>


<frame name="content" src="overview.html"/>


</frameset>


</html>





<xsl:variable name="suiteElements" select="if (suite/@url) then document(suite/@url)/suite else suite"/>





<xsl:call-template name="navigationFile">


<xsl:with-param name="suiteElements" select="$suiteElements"/>


<xsl:with-param name="reporterOutputElement" select="reporter-output"/>


</xsl:call-template>







<xsl:result-document href="{testng:absolutePath('overview-chart.svg')}" format="xml">


<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" width="{$chartWidth}" height="{$chartHeight}"

viewBox="0 0 900 300">


<defs>


<style type="text/css">


<![CDATA[



.axistitle { font-weight:bold; font-size:24px; font-family:Arial; text-anchor:middle; }


.xgrid, .ygrid, .legendtext { font-weight:normal; font-size:24px; font-family:Arial; }


.xgrid {text-anchor:middle;}


.ygrid {text-anchor:end;}


.gridline { stroke:black; stroke-width:1; }


.values { fill:black; stroke:none; text-anchor:middle; font-size:12px; font-weight:bold; }

]]>


</style>


</defs>


<svg id="graphzone" preserveAspectRatio="xMidYMid meet" x="0" y="0">


<xsl:variable name="testCaseElements" select="








if (suite/@url) then


if (document(suite/@url)/suite/test/@url)


then document(document(suite/@url)/suite/test/@url)/test


else document(suite/@url)/suite/test



else suite/test"/>


<xsl:variable name="failedCount" select="testng:suiteMethodsCount($testCaseElements, 'FAIL')"/>


<xsl:variable name="passedCount" select="testng:suiteMethodsCount($testCaseElements, 'PASS')"/>


<xsl:variable name="skippedCount" select="testng:suiteMethodsCount($testCaseElements, 'SKIP')"/>


<xsl:variable name="totalCount" select="testng:suiteMethodsCount($testCaseElements, '*')"/>





<xsl:variable name="pi" select="3.141592"/>


<xsl:variable name="radius" select="130"/>





<xsl:variable name="failedPercent" select="format-number($failedCount div $totalCount, '###%')"/>


<xsl:variable name="failedAngle" select="($failedCount div $totalCount) * $pi * 2"/>


<xsl:variable name="failedX" select="$radius * math:cos($failedAngle)"/>


<xsl:variable name="failedY" select="-1 * $radius * math:sin($failedAngle)"/>


<xsl:variable name="failedArc" select="if ($failedAngle >= $pi) then 1 else 0"/>





<xsl:variable name="failedAngle_text" select="$failedAngle div 2"/>


<xsl:variable name="failedX_text" select="($radius div 2) * math:cos($failedAngle_text)"/>


<xsl:variable name="failedY_text" select="(-1 * ($radius div 2) * math:sin($failedAngle_text))"/>





<xsl:variable name="passPercent" select="format-number($passedCount div $totalCount, '###%')"/>


<xsl:variable name="passAngle" select="($passedCount div $totalCount) * $pi * 2"/>


<xsl:variable name="passX" select="$radius * math:cos($passAngle)"/>


<xsl:variable name="passY" select="-1 * $radius * math:sin($passAngle)"/>


<xsl:variable name="passArc" select="if ($passAngle >= $pi) then 1 else 0"/>





<xsl:variable name="skipPercent" select="format-number($skippedCount div $totalCount, '###%')"/>


<xsl:variable name="skipAngle" select="($skippedCount div $totalCount) * $pi * 2"/>


<xsl:variable name="skipX" select="$radius * math:cos($skipAngle)"/>


<xsl:variable name="skipY" select="-1 * $radius * math:sin($skipAngle)"/>


<xsl:variable name="skipArc" select="if ($skipAngle >= $pi) then 1 else 0"/>





<rect style="fill:red;stroke-width:1;stroke:black;" x="10" y="86" width="20" height="20"/>


<text class="legendtext" x="40" y="105">Failed (<xsl:value-of select="$failedPercent"/>)

</text>


<rect style="fill:green;stroke-width:1;stroke:black;" x="10" y="125" width="20" height="20"/>


<text class="legendtext" x="40" y="143">Passed (<xsl:value-of select="$passPercent"/>)

</text>


<rect style="fill:yellow;stroke-width:1;stroke:black;" x="10" y="163" width="20" height="20"/>


<text class="legendtext" x="40" y="182">Skipped (<xsl:value-of select="$skipPercent"/>)

</text>


<g style="stroke:black;stroke-width:1" transform="translate(450,150)">


<xsl:variable name="failedRotation" select="(($skippedCount) div $totalCount) * 360"/>


<xsl:if test="($failedCount div $totalCount) > 0">


<g style="fill:red"

transform="rotate(-{$failedRotation}) translate({round($failedX_text div 4)}, {round($failedY_text div 4)})">


<path d="M 0 0 h {$radius} A {$radius},{$radius} 0,{$failedArc},0 {$failedX},{$failedY} z"/>


</g>


</xsl:if>


<xsl:variable name="passRotation" select="(($failedCount + $skippedCount) div $totalCount) * 360"/>


<xsl:if test="($passedCount div $totalCount) > 0">


<g style="fill:green" transform="rotate(-{$passRotation})">


<path d="M 0 0 h {$radius} A {$radius},{$radius} 0,{$passArc},0 {$passX},{$passY} z"/>


</g>


</xsl:if>


<xsl:if test="($skippedCount div $totalCount) > 0">


<g style="fill:yellow" transform="rotate(360)">


<path d="M 0 0 h {$radius} A {$radius},{$radius} 0,{$skipArc},0 {$skipX},{$skipY} z"/>


</g>


</xsl:if>


</g>


</svg>


</svg>


</xsl:result-document>






 



<xsl:result-document href="{testng:absolutePath('overview.html')}" format="xhtml">


<html xmlns="http://www.w3.org/1999/xhtml">


<xsl:call-template name="htmlHead"/>


<body>


<h2>Test suites overview</h2>


<table width="100%">


<tr>


<td align="center" id="chart-container">


<script type="text/javascript">


renderSvgEmbedTag(<xsl:value-of select="$chartWidth"/>, <xsl:value-of select="$chartHeight"/>);

</script>


</td>


</tr>


</table>


<xsl:for-each select="$suiteElements">


<xsl:variable name="testCaseElements"


select="if (test/@url) then document(test/@url)/test else test"/>


<table width="100%" cellpadding="5" cellspacing="1">


<tr style="background-color: #eaf0f7;">


<td width="100%">


<div class="{testng:suiteStateClass($testCaseElements)}"/>


<xsl:value-of select="@name"/>


</td>


<xsl:call-template name="percentageOverview">


<xsl:with-param name="failedCount"


select="testng:suiteMethodsCount($testCaseElements, 'FAIL')"/>


<xsl:with-param name="passedCount"


select="testng:suiteMethodsCount($testCaseElements, 'PASS')"/>


<xsl:with-param name="skippedCount"


select="testng:suiteMethodsCount($testCaseElements, 'SKIP')"/>


<xsl:with-param name="totalCount"


select="testng:suiteMethodsCount($testCaseElements, '*')"/>


<xsl:with-param name="totalDuration"


select="testng:formatDuration(./@duration-ms)"/>

</xsl:call-template>


</tr>


<xsl:for-each select="$testCaseElements">


<tr style="background-color: #f5f5f5; font-size: 12px;">


<td>


<xsl:value-of select="@name"/>


</td>


<td align="center">


<xsl:value-of select="testng:testCaseMethodsCount(., 'FAIL')"/>


</td>


<td align="center">


<xsl:value-of select="testng:testCaseMethodsCount(., 'PASS')"/>


</td>


<td align="center">


<xsl:value-of select="testng:testCaseMethodsCount(., 'SKIP')"/>


</td>


<td align="center">


<xsl:value-of select="testng:testCaseMethodsCount(., '*')"/>


</td>


<td align="center" style="font-weight: bold;">


<xsl:value-of

select="if (testng:testCaseMethodsCount(., '*') > 0) then format-number(testng:testCaseMethodsCount(., 'PASS') div testng:testCaseMethodsCount(., '*'), '###%') else '100%'"/>


</td>


<xsl:if test="compare($testNgXslt.showRuntimeTotals, 'true') = 0">


<td align="center" nowrap="true">


<xsl:value-of select="testng:formatDuration(./@duration-ms)"/>


</td>


</xsl:if>


</tr>


</xsl:for-each>


</table>


<br/>


</xsl:for-each>


<xsl:call-template name="powered-by"/>


</body>


</html>


</xsl:result-document>







<xsl:result-document href="{testng:absolutePath('reporterOutput.html')}" format="xhtml">


<html xmlns="http://www.w3.org/1999/xhtml">


<xsl:call-template name="htmlHead"/>


<body>


<h2>Reporter output</h2>


<xsl:for-each select="reporter-output/line">


<div>


<code>


<xsl:value-of select="."/>


</code>


</div>


</xsl:for-each>


<xsl:call-template name="powered-by"/>


</body>


</html>


</xsl:result-document>


</xsl:template>





<xsl:template name="navigationFile">


<xsl:param name="suiteElements"/>


<xsl:param name="reporterOutputElement"/>


<xsl:result-document href="{testng:absolutePath('navigation.html')}" format="xhtml">


<html xmlns="http://www.w3.org/1999/xhtml">


<xsl:call-template name="htmlHead"/>


<body>


<h2 style="margin-bottom: 5px;">


<xsl:value-of select="testng:getVariableSafe($testNgXslt.reportTitle, 'TestNG Results')"/>


</h2>


<div>


<a href="overview.html" target="content"

onclick="javscript:clearAllSelections();">Results overview

</a>


</div>


<div>


<a href="reporterOutput.html" target="content"

onclick="javscript:clearAllSelections();">Reporter output

</a>


</div>


<div>


<xsl:for-each select="$suiteElements">


<xsl:variable name="testCaseElements"


select="if (test/@url) then document(test/@url)/test else test"/>


<table class="suiteMenuHeader" width="100%" cellpadding="0" cellspacing="0">


<tr>


<td nowrap="true">


<b>


<a href="{testng:suiteContentFileName(.)}" target="content"

onclick="javscript:clearAllSelections();">


<xsl:value-of select="@name"/>


</a>


</b>


<div style="margin: 3px 0 3px 0;">


<a href="{testng:suiteGroupsFileName(.)}" target="content"

onclick="javscript:clearAllSelections();">


<xsl:value-of select="count(./groups/group)"/>



Groups

</a>


</div>


<span style="color: red;">


<xsl:value-of select="testng:suiteMethodsCount($testCaseElements, 'FAIL')"/>


</span>



/

<span style="color: green;">


<xsl:value-of select="testng:suiteMethodsCount($testCaseElements, 'PASS')"/>


</span>



/

<span style="color: yellow;">


<xsl:value-of select="testng:suiteMethodsCount($testCaseElements, 'SKIP')"/>


</span>



/

<span>


<xsl:value-of select="testng:suiteMethodsCount($testCaseElements, '*')"/>


</span>


</td>


<td style="font-weight: bold;">


<xsl:value-of

select="format-number(testng:suiteMethodsCount($testCaseElements, 'PASS') div testng:suiteMethodsCount($testCaseElements, '*'), '###%')"/>


</td>


</tr>


</table>


<xsl:call-template name="suiteContentFile">


<xsl:with-param name="suiteElement" select="."/>


</xsl:call-template>


<xsl:call-template name="suiteGroupsFile">


<xsl:with-param name="suiteElement" select="."/>


</xsl:call-template>


<xsl:call-template name="suiteTestCasesLinks">


<xsl:with-param name="testCases" select="$testCaseElements"/>


</xsl:call-template>


<xsl:call-template name="suiteTestCasesContentFiles">


<xsl:with-param name="testCases" select="$testCaseElements"/>


</xsl:call-template>


</xsl:for-each>


</div>


</body>


</html>


</xsl:result-document>


</xsl:template>





<xsl:template name="suiteContentFile">


<xsl:param name="suiteElement"/>


<xsl:variable name="testCaseElements" select="if (test/@url) then document(test/@url)/test else test"/>


<xsl:result-document href="{testng:absolutePath(testng:suiteContentFileName($suiteElement))}" format="xhtml">


<html>


<xsl:call-template name="htmlHead"/>


<body>


<table width="100%" style="font-size: 16px; margin-bottom: 10px;" cellspacing="1">


<tr>


<td width="100%">



All methods in suite

<b>


<xsl:value-of select="./@name"/>


</b>


</td>


<xsl:call-template name="percentageOverview">


<xsl:with-param name="failedCount"


select="testng:suiteMethodsCount($testCaseElements, 'FAIL')"/>


<xsl:with-param name="passedCount"


select="testng:suiteMethodsCount($testCaseElements, 'PASS')"/>


<xsl:with-param name="skippedCount"


select="testng:suiteMethodsCount($testCaseElements, 'SKIP')"/>


<xsl:with-param name="totalCount"


select="testng:suiteMethodsCount($testCaseElements, '*')"/>


<xsl:with-param name="totalDuration"


select="testng:formatDuration($suiteElement/@duration-ms)"/>


</xsl:call-template>


</tr>


</table>


<xsl:call-template name="testMethods">


<xsl:with-param name="classes" select="$testCaseElements/class"/>


<xsl:with-param name="failedMethods" select="$testCaseElements/class/test-method[@status='FAIL']"/>


<xsl:with-param name="passedMethods" select="$testCaseElements/class/test-method[@status='PASS']"/>


<xsl:with-param name="skipedMethods" select="$testCaseElements/class/test-method[@status='SKIP']"/>


</xsl:call-template>


<xsl:call-template name="powered-by"/>


</body>


</html>


</xsl:result-document>


</xsl:template>





<xsl:template name="suiteGroupsFile">


<xsl:param name="suiteElement"/>


<xsl:result-document href="{testng:absolutePath(testng:suiteGroupsFileName($suiteElement))}" format="xhtml">


<html xmlns="http://www.w3.org/1999/xhtml">


<xsl:call-template name="htmlHead"/>


<body>


<h2>



Groups for suite:

<b>


<xsl:value-of select="$suiteElement/@name"/>


</b>


</h2>


<xsl:for-each select="$suiteElement/groups/group">


<xsl:sort order="ascending" select="@name"/>


<table style="margin-bottom: 20px; font-size: 12px; width:100%;" cellpadding="3"

cellspacing="1">


<tr>


<td style="background-color: #f5f5f5;">


<div style="font-size: 18px;">


<xsl:value-of select="./@name"/>


</div>


</td>


</tr>


<xsl:for-each select="method">


<tr>


<td style="background-color: #eaf0f7;">


<xsl:value-of select="@signature"/>


</td>


</tr>


</xsl:for-each>


</table>


</xsl:for-each>


<xsl:call-template name="powered-by"/>


</body>


</html>


</xsl:result-document>


</xsl:template>





<xsl:template name="testMethods">


<xsl:param name="classes"/>


<xsl:param name="failedMethods"/>


<xsl:param name="passedMethods"/>


<xsl:param name="skipedMethods"/>


<xsl:param name="filePrefix"/>





<div style="width: 200px;">


<label for="groupMethodsCheckBox" style="font-weight: bold; margin: 0;">


<input id="groupMethodsCheckBox" type="checkbox" onclick="switchTestMethodsView(this)">


<xsl:if test="testng:isFilterSelected('BY_CLASS') = 'true'">


<xsl:attribute name="checked" select="true"/>


</xsl:if>


</input>



Group by class

</label>


<br/>


<label for="methodsFilter_ALL" style="font-weight: bold; margin: 0;">


<input id="methodsFilter_ALL" type="checkbox" onclick="testMethodsFilterChanged(this, 'ALL')">


<xsl:if test="testng:isFilterSelected('FAIL') = 'true' and testng:isFilterSelected('PASS') = 'true' and testng:isFilterSelected('SKIP') = 'true' and testng:isFilterSelected('CONF') = 'true'">


<xsl:attribute name="checked" select="true"/>


</xsl:if>


</input>



All

</label>


</div>


<label for="methodsFilter_FAIL" style="margin-left: 20px;">


<input id="methodsFilter_FAIL" type="checkbox" onclick="testMethodsFilterChanged(this, 'FAIL')">


<xsl:if test="testng:isFilterSelected('FAIL') = 'true'">


<xsl:attribute name="checked" select="true"/>


</xsl:if>


</input>



Failed

</label>


<label for="methodsFilter_PASS">


<input id="methodsFilter_PASS" type="checkbox" onclick="testMethodsFilterChanged(this, 'PASS')">


<xsl:if test="testng:isFilterSelected('PASS') = 'true'">


<xsl:attribute name="checked" select="true"/>


</xsl:if>


</input>



Passed

</label>


<label for="methodsFilter_SKIP">


<input id="methodsFilter_SKIP" type="checkbox" onclick="testMethodsFilterChanged(this, 'SKIP')">


<xsl:if test="testng:isFilterSelected('SKIP') = 'true'">


<xsl:attribute name="checked" select="true"/>


</xsl:if>


</input>



Skipped

</label>


<label for="methodsFilter_CONF">


<input id="methodsFilter_CONF" type="checkbox" onclick="testMethodsFilterChanged(this, 'CONF')">


<xsl:if test="testng:isFilterSelected('CONF') = 'true'">


<xsl:attribute name="checked" select="true"/>


</xsl:if>


</input>



Config

</label>


<br/>







<div id="testMethodsByStatus">


<xsl:if test="testng:isFilterSelected('BY_CLASS') = 'true'">


<xsl:attribute name="style" select="'display: none;'"/>


</xsl:if>


<table class="testMethodsTable" cellpadding="0" cellspacing="0">


<tr class="methodsTableHeader">


<td width="100%">Name</td>


<td nowrap="true">Started</td>


<td nowrap="true">Duration</td>


<td>Exception</td>


</tr>


<xsl:call-template name="testMethodsList">


<xsl:with-param name="methodList" select="$failedMethods"/>


<xsl:with-param name="category" select="'byStatus_failed'"/>


</xsl:call-template>


<xsl:call-template name="testMethodsList">


<xsl:with-param name="methodList" select="$passedMethods"/>


<xsl:with-param name="category" select="'byStatus_passed'"/>


</xsl:call-template>


<xsl:call-template name="testMethodsList">


<xsl:with-param name="methodList" select="$skipedMethods"/>


<xsl:with-param name="category" select="'byStatus_skiped'"/>


</xsl:call-template>


</table>


</div>







<div id="testMethodsByClass">


<xsl:if test="testng:isFilterSelected('BY_CLASS') != 'true'">


<xsl:attribute name="style" select="'display: none;'"/>


</xsl:if>


<xsl:for-each select="$classes">


<xsl:sort order="ascending" select="@name"/>


<table class="testMethodsTable" cellpadding="0" cellspacing="0">


<tr>


<td colspan="4">


<h3 style="display: inline;">


<xsl:value-of select="./@name"/>


</h3>


</td>


</tr>


<tr class="methodsTableHeader">


<td width="100%">Name</td>


<td nowrap="true">Started</td>


<td nowrap="true">Duration</td>


<td>Exception</td>


</tr>


<xsl:call-template name="testMethodsList">




<xsl:with-param name="methodList" select="./test-method"/>


<xsl:with-param name="category" select="'byClass'"/>


<xsl:with-param name="sortByStartTime" select="'true'"/>


</xsl:call-template>


</table>


<br/>


</xsl:for-each>


</div>


</xsl:template>





<xsl:template name="testMethodsList">


<xsl:param name="methodList"/>


<xsl:param name="category"/>


<xsl:param name="sortByStartTime"/>


<xsl:for-each select="$methodList">


<xsl:sort order="ascending" select="if (compare($sortByStartTime, 'true') = 0) then @started-at else ''"/>


<xsl:variable name="methodId" select="concat(../@name, '_', @name, '_', $category, '_', @status, position())"/>


<xsl:variable name="detailsId" select="concat($methodId, '_details')"/>


<xsl:variable name="exceptionDetailsId" select="concat($methodId, '_exception')"/>


<tr id="{concat($methodId, '_row')}" class="{testng:testMethodStatus(.)}">


<xsl:if test="testng:isFilterSelected(@status) != 'true'">




</xsl:if>


<td width="100%" class="firstMethodCell">


<a onclick="toggleDetailsVisibility('{$detailsId}')">


<xsl:value-of select="concat(@name, '(', testng:trim(testng:concatParams(./params/param)), ')')"/>


</a>


</td>


<td nowrap="true">


<xsl:value-of select="substring(@started-at, 12, 8)"/>


</td>


<td nowrap="true" align="right">


<xsl:value-of select="testng:formatDuration(@duration-ms)"/>


</td>


<td nowrap="true">


<xsl:if test="./exception">


<a onclick="toggleDetailsVisibility('{$exceptionDetailsId}')">


<xsl:value-of select="concat(exception/@class, ': ', exception/message)"/>


</a>


</xsl:if>


 


</td>


</tr>


<tr>


<td colspan="4" class="detailsBox">


<div id="{$detailsId}" class="testMethodDetails">


<xsl:call-template name="formField">


<xsl:with-param name="label" select="'Name'"/>


<xsl:with-param name="value" select="@name"/>


</xsl:call-template>


<xsl:call-template name="formField">


<xsl:with-param name="label" select="'Description'"/>


<xsl:with-param name="value" select="@description"/>


</xsl:call-template>


<xsl:call-template name="formField">


<xsl:with-param name="label" select="'Signature'"/>


<xsl:with-param name="value" select="@signature"/>


</xsl:call-template>


<xsl:if test="./params">


<xsl:call-template name="formField">


<xsl:with-param name="label" select="'Parameters'"/>


<xsl:with-param name="value" select="testng:concatParams(./params/param)"/>


</xsl:call-template>


</xsl:if>


<xsl:call-template name="formField">


<xsl:with-param name="label" select="'Start time'"/>


<xsl:with-param name="value" select="substring(@started-at, 12, 8)"/>


</xsl:call-template>


<xsl:call-template name="formField">


<xsl:with-param name="label" select="'End time'"/>


<xsl:with-param name="value" select="substring(@finished-at, 12, 8)"/>


</xsl:call-template>


<xsl:call-template name="formField">


<xsl:with-param name="label" select="'Duration'"/>


<xsl:with-param name="value" select="testng:formatDuration(@duration-ms)"/>


</xsl:call-template>


<xsl:call-template name="formField">


<xsl:with-param name="label" select="'In groups:'"/>


<xsl:with-param name="value" select="@groups"/>


</xsl:call-template>


<xsl:if test="@depends-on-methods">


<xsl:call-template name="formFieldList">


<xsl:with-param name="label" select="'Depends on methods'"/>


<xsl:with-param name="value"


select="tokenize(@depends-on-methods, ',')"/>


</xsl:call-template>


</xsl:if>


<xsl:if test="@depends-on-groups">


<xsl:call-template name="formFieldList">


<xsl:with-param name="label" select="'Depends on groups'"/>


<xsl:with-param name="value"


select="tokenize(@depends-on-groups, ',')"/>


</xsl:call-template>


</xsl:if>


</div>


</td>


</tr>


<tr>


<xsl:if test="exception">


<td colspan="4" class="detailsBox">


<div id="{$exceptionDetailsId}" class="testMethodDetails">


<xsl:choose>


<xsl:when test="exception/full-stacktrace">


<pre style="padding: 5px; margin: 0;">


<xsl:value-of select="testng:trim(exception/full-stacktrace)"/>


</pre>


</xsl:when>


<xsl:when test="exception/short-stacktrace and not (exception/full-stacktrace)">


<pre style="padding: 5px; margin: 0;">


<xsl:value-of select="testng:trim(exception/short-stacktrace)"/>


</pre>


</xsl:when>


<xsl:otherwise>


<pre style="padding: 5px; margin: 0;"><No stacktrace information></pre>


</xsl:otherwise>


</xsl:choose>


</div>


</td>


</xsl:if>


</tr>


</xsl:for-each>


</xsl:template>





<xsl:template name="suiteTestCasesLinks">


<xsl:param name="testCases"/>


<xsl:for-each select="$testCases">


<xsl:sort order="ascending" select="if (compare($testNgXslt.sortTestCaseLinks, 'true') = 0) then @name else ''"/>


<div class="testCaseLink"

onclick="javscript:selectTestCaseLink(this); parent.content.location='{testng:testCaseContentFileName(.)}'">


<div class="{if (count(./class/test-method[@status='FAIL']) > 0)




then 'testCaseFail'


else if ((count(./class/test-method[@status='FAIL']) = 0) and (count(./class/test-method[@status='PASS']) > 0))


then 'testCasePass'

else 'testCaseSkip'}">


</div>


<xsl:value-of select="@name"/>


</div>


</xsl:for-each>


</xsl:template>





<xsl:template name="suiteTestCasesContentFiles">


<xsl:param name="testCases"/>


<xsl:for-each select="$testCases">


<xsl:result-document href="{testng:absolutePath(testng:testCaseContentFileName(.))}" format="xhtml">


<html>


<xsl:call-template name="htmlHead"/>


<body>


<table width="100%" style="font-size: 16px; margin-bottom: 10px;" cellspacing="1">


<tr>


<td width="100%">



Test case

<b>


<xsl:value-of select="./@name"/>


</b>


</td>


<xsl:call-template name="percentageOverview">


<xsl:with-param name="failedCount" select="testng:testCaseMethodsCount(., 'FAIL')"/>


<xsl:with-param name="passedCount" select="testng:testCaseMethodsCount(., 'PASS')"/>


<xsl:with-param name="skippedCount"


select="testng:testCaseMethodsCount(., 'SKIP')"/>


<xsl:with-param name="totalCount" select="testng:testCaseMethodsCount(., '*')"/>


<xsl:with-param name="totalDuration"


select="testng:formatDuration(./@duration-ms)"/>


</xsl:call-template>


</tr>


</table>


<xsl:call-template name="testMethods">


<xsl:with-param name="classes" select="./class"/>


<xsl:with-param name="failedMethods" select="./class/test-method[@status='FAIL']"/>


<xsl:with-param name="passedMethods" select="./class/test-method[@status='PASS']"/>


<xsl:with-param name="skipedMethods" select="./class/test-method[@status='SKIP']"/>


</xsl:call-template>


<xsl:call-template name="powered-by"/>


</body>


</html>


</xsl:result-document>


</xsl:for-each>


</xsl:template>





<xsl:template name="percentageOverview">


<xsl:param name="failedCount"/>


<xsl:param name="passedCount"/>


<xsl:param name="skippedCount"/>


<xsl:param name="totalCount"/>


<xsl:param name="totalDuration"/>


<td style="background-color: #FFBBBB; padding: 3px 3px 3px 0;" align="center">


<div style="width: 50px;">


<xsl:value-of select="$failedCount"/>


</div>


</td>


<td style="background-color: lightgreen; padding: 3px 3px 3px 0;" align="center">


<div style="width: 50px;">


<xsl:value-of select="$passedCount"/>


</div>


</td>


<td style="background-color: #FFFFBB; padding: 3px 3px 3px 0;" align="center">


<div style="width: 50px;">


<xsl:value-of select="$skippedCount"/>


</div>


</td>


<td align="center" style="background-color: #eaf0f7; padding: 3px 3px 3px 0;">


<div style="width: 50px;">


<xsl:value-of select="$totalCount"/>


</div>


</td>


<td align="center" style="font-weight: bold; background-color: #eaf0f7; padding: 3px 3px 3px 0;">


<div style="width: 50px;">


<xsl:value-of

select="if ($totalCount > 0) then format-number($passedCount div $totalCount, '###%') else '100%'"/>


</div>


</td>


<xsl:if test="compare($testNgXslt.showRuntimeTotals, 'true') = 0">


<td style="background-color: #eaf0f7; padding: 3px 3px 3px 0;" align="center" nowrap="true">


<xsl:value-of select="$totalDuration"/>


</td>


</xsl:if>


</xsl:template>





<xsl:template name="powered-by">


<div style="margin-top: 15px; color: gray; text-align: center; font-size: 9px;">



Generated with

<a href="http://code.google.com/p/testng-xslt/" style="color: #8888aa;" target="_blank">



TestNG XSLT

</a>


</div>


</xsl:template>





</xsl:stylesheet>