<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
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 xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>CloudStack UI Tests</title>
    <link rel="stylesheet" href="../lib/qunit/qunit.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="../css/cloudStack3.css" type="text/css" media="screen" />
  </head>
  <body>
    <h1 id="qunit-header">CloudStack UI Tests</h1>
    <h2 id="qunit-banner"></h2>
    <div id="qunit-testrunner-toolbar"></div>
    <h2 id="qunit-userAgent"></h2>
    <ol id="qunit-tests"></ol>
    <div id="qunit-fixture">test markup, will be hidden</div>
    
    <!-- jQuery -->
    <script src="../lib/jquery.js" type="text/javascript"></script>
    <script src="../lib/jquery.easing.js" type="text/javascript"></script>
    <script src="../lib/jquery.validate.js" type="text/javascript"></script>
    <script src="../lib/jquery-ui/js/jquery-ui.js" type="text/javascript"></script>

    <!-- Flot -->
    <script src="../lib/excanvas.js"></script>
    <script src="../lib/flot/jquery.flot.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.colorhelpers.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.crosshair.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.fillbetween.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.image.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.navigate.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.pie.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.resize.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.selection.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.stack.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.symbol.js" type="text/javascript"></script>
    <script src="../lib/flot/jquery.flot.threshold.js" type="text/javascript"></script>

    <!-- UI -->
    <script src="../scripts/ui/core.js" type="text/javascript"></script>
    <script src="../scripts/ui/utils.js" type="text/javascript"></script>
    <script src="../scripts/ui/events.js" type="text/javascript"></script>
    <script src="../scripts/ui/dialog.js" type="text/javascript"></script>

    <!-- UI - Widgets -->
    <script src="../scripts/ui/widgets/multiEdit.js" type="text/javascript"></script>
    <script src="../scripts/ui/widgets/overlay.js" type="text/javascript"></script>
    <script src="../scripts/ui/widgets/dataTable.js" type="text/javascript"></script>
    <script src="../scripts/ui/widgets/cloudBrowser.js" type="text/javascript"></script>
    <script src="../scripts/ui/widgets/listView.js" type="text/javascript"></script>
    <script src="../scripts/ui/widgets/detailView.js" type="text/javascript"></script>
    <script src="../scripts/ui/widgets/treeView.js" type="text/javascript"></script>
    <script src="../scripts/ui/widgets/notifications.js" type="text/javascript"></script>

    <!-- Common libraries -->
    <script src="../lib/date.js" type="text/javascript"></script>
    <script src="../lib/jquery.cookies.js" type="text/javascript"></script>
    <script src="../lib/jquery.timers.js" type="text/javascript"></script>
    <script src="../lib/jquery.md5.js" type="text/javascript" ></script>

    <!-- CloudStack -->
    <script src="../scripts/ui-custom/login.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/projects.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/zoneChart.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/dashboard.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/installWizard.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/instanceWizard.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/ipRules.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/enableStaticNAT.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/securityRules.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/recurringSnapshots.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/physicalResources.js" type="text/javascript"></script>
    <script src="../scripts/ui-custom/zoneWizard.js" type="text/javascript"></script>

    <!-- qunit -->
    <script src="../lib/qunit/qunit.js" type="text/javascript"></script>

    <!-- Tests -->
    <script src="test.core.js" type="text/javascript"></script>
    <script src="test.cloudBrowser.js" type="text/javascript"></script>
    <script src="test.notifications.js" type="text/javascript"></script>
    <script src="test.listView.js" type="text/javascript"></script>
    <script src="test.detailView.js" type="text/javascript"></script>
    <script src="test.multiEdit.js" type="text/javascript"></script>
  </body>
</html> 
