<%--
Copyright 2004 The Apache Software Foundation
Licensed  under the  Apache License,  Version 2.0  (the "License");
you may not use  this file  except in  compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed  under the  License is distributed on an "AS IS" BASIS,
WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
implied.

See the License for the specific language governing permissions and
limitations under the License.
--%>
<TABLE style="border-colapse: false;padding: 4px 4px;border-spacing: 3px 4px;">
<TR><TH colspan="2">Test Portlet Help Page</TH></TR>
<TR><TD colspan="2">Color Code Key</TH></TR>
<TR><TD width="20" style="background-color:green;">&nbsp;</TD>
    <TD style="font-size: 12px">Test has passed!</TH></TR>
<TR><TD width="20" style="background-color:blue;">&nbsp;</TD>
    <TD style="font-size: 12px">Manual Judgment Required!</TH></TR>
<TR><TD width="20" style="background-color:yellow;">&nbsp;</TD>
    <TD style="font-size: 12px">Warning! Could not determine pass or fail due to an fixable condition.</TH></TR>
<TR><TD width="20" style="background-color:red;">&nbsp;</TD>
    <TD style="font-size: 12px">Test has failed!</TH></TR>
</TABLE>