Sample From the Customer

The customer was looking for a report that looks something like:

We were able to use the SpiraTeam Custom Reporting to create a modified Standard Report (based on the Test Run Detailed Report) to create a report that uses the standard XML data coming from SpiraTeam, with a custom XSLT template to change how it was displayed.

Customizing the SpiraTeam Report

If you run the standard Test Run Detailed Report in PDF format, you would see something like:

So what we did is clone the report, and create a new one called "Test Run Simplified Report":

Then we clicked on the Customize button for the Test Run Details standard section:

We then changed the Template to the following:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:template match="/TestRunData">
    <xsl:for-each select="TestRun/TestRunSteps/TestRunStep">
      <table class="HiddenTable">
        <tr>
          <th>Test Run #:</th>
          <td>
            TR<xsl:value-of select="../../TestRunId"/>
          </td>
		  <th>Test Case #:</th>
          <td>
            TC<xsl:value-of select="../../TestCaseId"/>
          </td>
        </tr>
        <tr>
          <th>Release #:</th>
          <td>
            <xsl:value-of select="../../ReleaseVersionNumber"/>
          </td>
          <th>Status:</th>
          <td>
            <xsl:value-of select="ExecutionStatusName"/>
          </td>
        </tr>
        <tr>
          <th>Tester:</th>
          <td>
            <xsl:value-of select="../../TesterName"/>
          </td>
          <th>Execution Date:</th>
          <td class="Date">
            <xsl:call-template name="format-date">
              <xsl:with-param name="datetime" select="../../StartDate" />
            </xsl:call-template>
          </td>
        </tr>
        <tr>
          <th>Test Set:</th>
          <td>
            <xsl:value-of select="../../TestSetName"/>
          </td>
          <th>Test Step #:</th>
          <td>
            <xsl:value-of select="Position"/>
          </td>
        </tr>
		<tr>
			<td colspan="4">
                <xsl:value-of select="Description" disable-output-escaping="yes"/>
				<br />
                <xsl:value-of select="ExpectedResult" disable-output-escaping="yes"/>			
			</td>
		</tr>
		<tr>
			<th>Actual Result:</th>
			<td colspan="3">
				<xsl:value-of select="ActualResult" disable-output-escaping="yes"/>
			</td>
		</tr>
      </table>
	  <div>
		...
		<br />
	  </div>
    </xsl:for-each>
  </xsl:template>
  <xsl:template name="format-date">
    <xsl:param name="datetime"/>
    <xsl:variable name="date" select="substring-before($datetime, 'T')" />
    <xsl:variable name="year" select="substring-before($date, '-')" />
    <xsl:variable name="month" select="substring-before(substring-after($date, '-'), '-')" />
    <xsl:variable name="day" select="substring-after(substring-after($date, '-'), '-')" />
    <xsl:variable name="time" select="substring-before(substring-after($datetime, 'T'), '.')" />
    <xsl:variable name="monthname">
      <xsl:choose>
        <xsl:when test="$month='01'">
          <xsl:value-of select="'Jan'"/>
        </xsl:when>
        <xsl:when test="$month='02'">
          <xsl:value-of select="'Feb'"/>
        </xsl:when>
        <xsl:when test="$month='03'">
          <xsl:value-of select="'Mar'"/>
        </xsl:when>
        <xsl:when test="$month='04'">
          <xsl:value-of select="'Apr'"/>
        </xsl:when>
        <xsl:when test="$month='05'">
          <xsl:value-of select="'May'"/>
        </xsl:when>
        <xsl:when test="$month='06'">
          <xsl:value-of select="'Jun'"/>
        </xsl:when>
        <xsl:when test="$month='07'">
          <xsl:value-of select="'Jul'"/>
        </xsl:when>
        <xsl:when test="$month='08'">
          <xsl:value-of select="'Aug'"/>
        </xsl:when>
        <xsl:when test="$month='09'">
          <xsl:value-of select="'Sep'"/>
        </xsl:when>
        <xsl:when test="$month='10'">
          <xsl:value-of select="'Oct'"/>
        </xsl:when>
        <xsl:when test="$month='11'">
          <xsl:value-of select="'Nov'"/>
        </xsl:when>
        <xsl:when test="$month='12'">
          <xsl:value-of select="'Dec'"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="''" />
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:value-of select="concat($day, '-' ,$monthname, '-', $year , ' ', $time)" />
  </xsl:template>
</xsl:stylesheet>

When you run this new version of the report, you get something that looks like:

which has the nice effect of allowing much larger images than the standard report: