Created
May 6, 2016 20:29
-
-
Save vendettamit/583e6a0cd70b6f1abefa275dbc297400 to your computer and use it in GitHub Desktop.
xml stylesheet to transform MS Coded UI test results to html with xslt 2.0
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<xsl:stylesheet version="2.0" | |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |
xmlns:xp="http://www.xmlprime.com/" | |
xmlns:ext="urn:extensions"> | |
<xsl:output method="html" /> | |
<xsl:param name="applicationPath" select="'.'" /> | |
<xsl:template match="/"> | |
<script language="javascript"> | |
function toggle (name, spn) | |
{ | |
var element = name;//document.getElementById (name); | |
var span = spn; //document.getElementById (spn); | |
if (element.style.display == 'none'){ | |
element.style.display = ''; | |
span.innerText = 'Hide'; | |
} | |
else { | |
span.innerText = 'Show'; | |
element.style.display = 'none'; | |
} | |
} | |
</script> | |
<div id="test-report"> | |
<style type="text/css"> | |
#test-report | |
{ | |
font-family: Arial, Helvetica, sans-serif; | |
margin-left: 0; | |
margin-right: 0; | |
margin-top: 0; | |
} | |
#test-report .header | |
{ | |
background-color: #566077; | |
background-repeat: repeat-x; | |
color: #fff; | |
font-weight: bolder; | |
height: 85px; | |
vertical-align: middle; | |
} | |
#test-report .headertext | |
{ | |
height: 35px; | |
margin-left: 15px; | |
padding-top: 15px; | |
width: auto; | |
} | |
#test-report .wrapper | |
{ | |
padding-left: 20px; | |
padding-right: 20px; | |
width: auto; | |
} | |
#test-report .legend | |
{ | |
background-color: #ffc; | |
border: #d7ce28 1px solid; | |
font-size: small; | |
margin-top: 15px; | |
padding: 5px; | |
vertical-align: middle; | |
width: inherit; | |
} | |
#test-report .clickablerow | |
{ | |
cursor: pointer; | |
} | |
#test-report .tabletotal | |
{ | |
border-top: 1px #000; | |
font-weight: 700; | |
} | |
#test-report .results-table | |
{ | |
border-collapse: collapse; | |
font-size: 12px; | |
margin-top: 20px; | |
text-align: left; | |
width: 100%; | |
} | |
#test-report .results-table th | |
{ | |
background: #b9c9fe; | |
border-bottom: 1px solid #fff; | |
border-top: 4px solid #aabcfe; | |
color: #039; | |
font-size: 13px; | |
font-weight: 400; | |
padding: 8px; | |
} | |
#test-report .results-table td | |
{ | |
background: #e8edff; | |
border-bottom: 1px solid #545409; | |
border-top: 1px solid transparent; | |
color: #669; | |
padding: 5px; | |
} | |
#test-report .errorlist td | |
{ | |
background: #FFF; | |
border-bottom: 0; | |
border-top: 0 solid transparent; | |
color: #000; | |
padding: 0; | |
} | |
#test-report .inner-results | |
{ | |
border-collapse: collapse; | |
font-size: 12px; | |
margin-bottom: 3px; | |
margin-top: 4px; | |
text-align: left; | |
/*width: 100%;*/ | |
width: auto; | |
} | |
#test-report .inner-results td | |
{ | |
background: #FFF; | |
border-bottom: 1px solid #545409; | |
border-top: 1px solid transparent; | |
color: #669; | |
padding: 3px; | |
} | |
.summaryline-Item | |
{ | |
padding:10px; | |
} | |
.center{ | |
text-align:center; | |
} | |
.left{ | |
text-align:left | |
} | |
#test-report .inner-header th | |
{ | |
background: #b9c9fe; | |
color: #039; | |
border: 1px solid; | |
} | |
#test-report .inner-rule-description | |
{ | |
background-color: transparent; | |
border-collapse: collapse; | |
border: 0px; | |
font-size: 12px; | |
margin-bottom: 3px; | |
margin-top: 4px; | |
text-align: left; | |
width: 100%; | |
} | |
#test-report .inner-rule-description tr | |
{ | |
background-color: transparent; | |
border: 0px; | |
} | |
#test-report .inner-rule-description td | |
{ | |
background-color: transparent; | |
border-bottom: 1px solid #545409; | |
} | |
#btn { | |
cursor: pointer; | |
cursor: hand; | |
color: deepskyblue; | |
text-decoration: underline; | |
font-style: italic; | |
} | |
</style> | |
<div class="header"> | |
<div class="headertext"> | |
<div style="float:left" class="summaryline-Item"> | |
<b>your project</b> Test Execution Results | |
<br/> | |
Total tests: <xsl:value-of select="count(//result)"/> | |
</div> | |
<div style="float:right" class="summaryline-Item"> | |
<small> | |
<i> | |
Execution Date: | |
<xsl:variable name="currenttime" select="current-dateTime()"/> | |
<xsl:value-of select="format-dateTime($currenttime, '[M01]/[D01]/[Y0001] at [H01]:[m01]:[s01]')" /> | |
</i> | |
</small> | |
</div> | |
</div> | |
</div> | |
<div class="wrapper"> | |
<div class="legend"> | |
Summary (By status): | |
</div> | |
<div class="results-table"> | |
<table cellpadding="2" cellspacing="0" width="100%" class="inner-results"> | |
<thead> | |
<tr class="inner-header"> | |
<th scope='col'>Status</th> | |
<th scope='col'>Count</th> | |
</tr> | |
</thead> | |
<tbody> | |
<xsl:for-each-group select="/body/result" group-by="testCaseStatus"> | |
<tr> | |
<td class="summaryline-Item "> | |
<b> | |
<xsl:value-of select="current-grouping-key()"/> | |
</b> | |
</td> | |
<td class="summaryline-Item center"> | |
<b> | |
<xsl:value-of select="count(current-group())"/> | |
</b> | |
</td> | |
</tr> | |
</xsl:for-each-group> | |
</tbody> | |
</table> | |
</div> | |
<div class="legend"> | |
Test Execution report: | |
</div> | |
<!--</div> | |
<div class="wrapper">--> | |
<div class="results-table"> | |
<table cellpadding="2" cellspacing="0" width="100%" class="inner-results"> | |
<tr class="inner-header"> | |
<!--<th scope='col'>Execution Date</th>--> | |
<th scope='col'>Module</th> | |
<th scope='col'>UseCase-ID</th> | |
<th scope='col'>Test Case Name</th> | |
<th scope='col'>Priority</th> | |
<th scope='col'>Status</th> | |
<th scope='col'>Duration (in secs.)</th> | |
<th scope='col'>Failure Message</th> | |
</tr> | |
<xsl:for-each select="body/result"> | |
<tr> | |
<!--<td class="summaryline-Item"> | |
<xsl:value-of select="executionDate"/> | |
</td>--> | |
<td class="summaryline-Item"> | |
<xsl:value-of select="moduleName"/> | |
</td> | |
<td class="summaryline-Item"> | |
<xsl:value-of select="useCaseID"/> | |
</td> | |
<td class="summaryline-Item"> | |
<xsl:value-of select="testCaseName"/> | |
</td> | |
<td class="summaryline-Item"> | |
<xsl:value-of select="testCasePriority"/> | |
</td> | |
<td class="summaryline-Item"> | |
<xsl:variable name="status" select="testCaseStatus"/> | |
<xsl:choose> | |
<xsl:when test="$status = 'Passed'"> | |
<span style="color:green"> | |
<xsl:value-of select="$status"/> | |
</span> | |
</xsl:when> | |
<xsl:otherwise> | |
<span style="color:red"> | |
<xsl:value-of select="$status"/> | |
</span> | |
</xsl:otherwise> | |
</xsl:choose> | |
</td> | |
<td class="summaryline-Item"> | |
<xsl:value-of select="testCaseDuration"/> | |
</td> | |
<td class="summaryline-Item"> | |
<xsl:variable name="errMessage" select="failureMessage"/> | |
<xsl:if test="$errMessage != ''"> | |
<xsl:variable name="message.id" select="generate-id()" /> | |
<span id="btn" onclick="toggle({$message.id}, this)">Show</span> | |
<div id="{$message.id}" style="display:none;color:red"> | |
<xsl:value-of select="$errMessage"/> | |
</div> | |
</xsl:if> | |
</td> | |
</tr> | |
</xsl:for-each> | |
</table> | |
</div> | |
</div> | |
</div> | |
</xsl:template> | |
</xsl:stylesheet> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment