test/test-automation/style.xsl
author Markus Kauppila <markus.kauppila@gmail.com>
Sun, 03 Jul 2011 19:21:35 +0300
changeset 5739 be70f1dfd7aa
parent 5727 390fdae0a318
child 5748 91a7152856f3
permissions -rw-r--r--
Fixed white space issue in XSL stylesheet.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
	
<html>
<head>
<title>Test report</title>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"/>

<script type="text/javascript">

var hideTests = '[Hide tests]';
var showTests = '[Show tests]';

var hideAsserts = '[Hide Assert Summary]';
var showAsserts = '[Show Assert Summary]';

var hideAllTests = '[Hide All Tests]';
var showAllTests = '[Show All Tests]';

var hideEverything = '[Hide Everything]';
var showEverything = '[Show Everything]';

var animationSpeed = 'fast';

$(document).ready(function() {
	$("span.show-tests").click(function() {
		var content = $(this).html();
		var id = $(this).attr('uid');
		var searchString = "div.tests[uid="+id+"]";
	
		if(content == hideTests) {
			$(searchString).hide(animationSpeed);
			$(this).text(showTests);
		} else {
			$(searchString).show(animationSpeed);
			$(this).text(hideTests);
		}
	});

	$("span.show-asserts").click(function() {
		var content = $(this).html();
		var id = $(this).attr('uid');
		var searchString = "div.asserts[uid="+id+"]";
		
		if(content == hideAsserts) {
			$(searchString).hide(animationSpeed);
			$(this).text(showAsserts);
		} else {
			$(searchString).show(animationSpeed);
			$(this).text(hideAsserts);
		}
	});
	
	$("span.show-all-tests").click(function() {
		var content = $(this).html();
		var searchString = "div.tests";
		
		if(content == hideAllTests) {
			$(searchString).hide(animationSpeed);
			$(this).text(showAllTests);
			
			/* handle the individual '[show tests]' switcher */
			$("span.show-tests[uid]").text(showTests);
		} else {
			$(searchString).show(animationSpeed);
			$(this).text(hideAllTests);
			
			/* handle the individual '[show tests]' switcher */
			$("span.show-tests[uid]").text(hideTests);
		}
	});
	
	$("span.show-everything").click(function() {
		var content = $(this).html();
		var searchString = "div.tests";
		
		if(content == hideEverything) {
			$("div.tests").hide(animationSpeed);
			$("div.asserts").hide(animationSpeed);
			$(this).text(showEverything);
			
			/* handle the individual switchers */
			$("span.show-tests[uid]").text(showTests);
			$("span.show-asserts[uid]").text(showAsserts);
		} else {
			$("div.tests").show(animationSpeed);
			$("div.asserts").show(animationSpeed);
			$(this).text(hideEverything);
			
			/* handle the individual switchers */
			$("span.show-tests[uid]").text(hideTests);
			$("span.show-asserts[uid]").text(hideAsserts);
		}
	});

	/* Initially everything is hidden */
	$("div.tests").hide();
	$("div.asserts").hide();
	
	/* Color the tests based on the result */
	$("div.test[result='passed']").addClass('passed');
	$("div.test[result='failed']").addClass('failed');
	
	/* Color the asserts based on the result */
	$("div.assert[result='pass']").addClass('passed');
	$("div.assert[result='failure']").addClass('failed');
});

</script>
<style>

div, h1 {
  padding: 3px 10px 2px 10px;
  margin: 5px 0px 5px 0px;
}

.document {
  font-family: Arial;
  font-size: 11pt;
  background-color: #EDEDED;
}
	
.description {
  font-style: italic;
}	
	
.bigtitle {
  font-size: 14pt;
  font-weight: bold;
}
	
.title {
  font-weight: bold;
}
	
.switch {
  font-style: italic;
  color: rgb(10, 10, 200); /*#024A68;*/
  font-size: 10pt;
  cursor: pointer;
}	
	
.passed {
 background-color: #64AA2B;
}

.failed {
 background-color: #FF6E40;
}

</style>

</head>
<body class="document">
  <h1>Test Report</h1>
  <div>
    <span class="title">Start time: </span><xsl:value-of select="testlog/startTime"/><br/>
    <!-- and ended at <xsl:value-of select="testlog/endTime"/>.<br/>-->
    <span class="title">Total runtime: </span><xsl:value-of select="testlog/totalRuntime"/> seconds.<br/>
    <span class="title">Harness parameters: </span>
	<span xml:space="preserve">
      <xsl:for-each select="testlog/parameters/parameter">
        <xsl:value-of select="."/> 	 
      </xsl:for-each>
    </span>
	<br/>
    <span class="title">Statistics:</span><br/>
    <div class="statistics">
      <span>Executed </span> <xsl:value-of select="testlog/numSuites"/> test suites. <br/>
      <span>Tests in total: </span> <xsl:value-of select="testlog/numTests"/> (passed: <xsl:value-of select="testlog/numPassedTests"/>, failed: <xsl:value-of select="testlog/numFailedTests"/>)
    </div>
  </div>

  <div>
	<br/>
	<span class="bigtitle">Test Results</span><br/>
    <span class="switch show-all-tests">[Show All Tests] </span> | 
    <span class="switch show-everything">[Show Everything]</span>
  </div>
	<br/>
	
  <xsl:for-each select="testlog/suite">
    <div id="suite">
    Suite: <span class="title"> <xsl:value-of select="name"/></span> (<xsl:value-of select="startTime"/>)
	<div class="suiteInfo">
		Tests: passed <xsl:value-of select="testsPassed"/>, failed <xsl:value-of select="testsFailed"/>, skipped <xsl:value-of select="testsSkipped"/>.<br/>
		Total runtime: <xsl:value-of select="totalRuntime"/> seconds. <br/>
		<span class="show-tests switch" uid="{generate-id(test)}">[Show tests]</span>
        <div class="tests" uid="{generate-id(test)}">
	      <xsl:for-each select="test">
			<div class="test">
			  <xsl:attribute name="result">
			    <xsl:value-of select="result"/>
	          </xsl:attribute>
		      
		      Name:  <xsl:value-of select="name"/> (<xsl:value-of select="startTime"/>  - <xsl:value-of select="endTime"/>  ) <br/>
		      Description: <span class="description"> <xsl:value-of select="description"/> </span><br/> 
		
	          Total runtime: <xsl:value-of select="totalRuntime"/> seconds  <br/>
		      Result: <xsl:value-of select="result"/>  <br/>
		      
		      <span class="switch show-asserts" uid="{generate-id(assertSummary)}">[Show Assert Summary]</span><br/>
			  <div class="asserts" uid="{generate-id(assertSummary)}">
		        <xsl:for-each select="assert"> 
			      <div class="assert">
  			        <xsl:attribute name="result">
				      <xsl:value-of select="result"/>
				    </xsl:attribute>
		            Assert name: <xsl:value-of select="name"/> <br/>
		            Result: <xsl:value-of select="result"/> <br/>
		            Message <xsl:value-of select="message"/> <br/>
		            Time <xsl:value-of select="time"/> <br/>
		          </div>
		        </xsl:for-each>
		        AssertSummary:
		        Assert count: <xsl:value-of select="assertSummary/assertCount"/> <br/>
		        Asserts Passed <xsl:value-of select="assertSummary/assertsPassed"/> <br/>
		        Asserts Failed <xsl:value-of select="assertSummary/assertsFailed"/> <br/>
		      </div>
    		</div>
		  </xsl:for-each>
	    </div>
	</div>
  </div>
  </xsl:for-each>
  <br/>
</body>
</html>

</xsl:template>
</xsl:stylesheet>