<!--
/*
 * $Id$
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Definition Tag Test</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">Definition Tag Test</td></tr>
</thead><tbody>
<tr>
	<td>open</td>
	<td>/tiles-test/index.jsp</td>
	<td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Test Definition Tag</td>
    <td></td>
    </tr>
<tr>
    <td>assertTextPresent</td>
    <td>This is the title</td>
    <td></td>
</tr>
<tr>
    <td>assertTextPresent</td>
    <td>This is the header</td>
    <td></td>
</tr>
<tr>
    <td>assertTextPresent</td>
    <td>This is a body</td>
    <td></td>
</tr>
</tbody></table>
</body>
</html>
