<!DOCTYPE html>
<html lang=en>
<meta charset=UTF-8>
<title>Web tests</title>
<link rel='stylesheet' href='css/bootstrap.min.css'>
<link rel='stylesheet' href='css/bootstrap-theme.min.css'>
<link rel=stylesheet href=runner.css>
<script src=runner.js></script>


<header class="navbar navbar-inverse navbar-fixed-top">
  <div class="container">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">
        <img src='logo.svg' width='50' height='50' alt='Logo for the WPT Runner'>
        Web Platform Tests Runner
      </a>
    </div>
  </div>
</header>

<div class="container">
  <div id="testControl" class="panel panel-default">
    <div class="panel-body">
      <form id='options' class='horizontal-form' onsubmit='return false;'>

        <div class="form-group">
          <label class="col-sm-3 control-label">Test types to include</label>
          <div class="col-sm-9">
            <label>
              <input type=checkbox checked value="testharness" id='th' class='test-type'>
              JavaScript tests
            </label>
            <label>
              <input type=checkbox checked value="reftest" id='ref' class='test-type'>
              Reftests
            </label>
            <label>
              <input type=checkbox checked value="manual" id='man' class='test-type'>
              Manual tests
            </label>
          </div>
        </div>

        <div class="form-group">
          <label for="path" class="col-sm-3 control-label">Run tests under path</label>
          <div class="col-sm-9">
            <input value="/" id='path' class='path form-control' disabled>
            <label>
              <input type=checkbox id='use_regex'>
              Use regular expression
            </label>
          </div>
        </div>

        <div class="form-group">
          <label for="timeout_multiplier" class="col-sm-3 control-label">Timeout multiplier</label>
          <div class="col-sm-9">
            <input type=number value="1" id='timeout_multiplier' class='timeout_multiplier form-control'>
          </div>
        </div>

        <div class="form-group">
          <label class="col-sm-3 control-label">Debug options</label>
          <div class="col-sm-9">
            <label>
              <input type=checkbox id='render' value='render' class='render'>
              Show output
            </label>
            <label>
              <input type=checkbox id='dumpit'>
              Dump JSON
            </label>
          </div>
        </div>

        <div class="form-group">
          <label class="col-sm-3 control-label">Count of matching tests</label>
          <div class="col-sm-9" id="testcount">
          </div>
        </div>

        <div class="form-group">
          <div class="col-sm-offset-3 col-sm-9">
            <button type="submit" class="btn btn-success toggleStart" disabled>Start</button>
            <button type='submit' class="btn btn-info togglePause" disabled>Pause</button>
          </div>
        </div>
      </form>
    </div>
  </div>

  <div class="instructions">
    <p>
      To run a set of
      <a href="https://github.com/w3c/web-platform-tests/blob/master/README.md">web-platform-tests</a>
      tests, specify a path value in the <b>Run tests under path</b> field above. Example paths:
    </p>
    <ul>
      <li><code>/</code> - runs all of the tests from the root down</li>
      <li><code>/websockets</code> - runs all of the
          <a href="http://w3c-test.org/websockets/">websockets</a> tests</li>
      <li><code>/websockets/constructor</code> - runs all of the
          <a href="http://w3c-test.org/websockets/constructor/">websockets/constructor</a> tests</li>
      <li><code>/html/syntax/parsing</code> - runs all of the
          <a href="http://w3c-test.org/html/syntax/parsing/">html/syntax/parsing</a> tests</li>
    </ul>
    <p>
      Multiple test paths can be specified by separating them with comma or whitespace. For example,
      <code>/js, /html</code> will run the <a href="http://w3c-test.org/js/">js</a> <em>and</em> <a href="http://w3c-test.org/html/">html</a>
      tests.
    </p>
    <p>
      <a href="http://www.w3schools.com/jsref/jsref_obj_regexp.asp" target="_blank">Javascript regular expressions</a> are also supported for filtering. When the option is checked,
      only a test path matching the regex pattern will run. For example, you can specify <code>^/js/|^/html/</code>
      to run the <a href="http://w3c-test.org/js/">js</a> <em>and</em> <a href="http://w3c-test.org/html/">html</a>
      tests.
    </p>
    <p>
      If the test runner is run online, the set of tests available to run can be found in the
      <a href="http://w3c-test.org/">w3c-test.org</a> test repository.
    </p>
    <p>
      Tests will run in a new window. For reftests and manual tests it’s best
      to put that window side-by-side with this one.
    </p>
  </div>

  <div id="output">
    <div class="summary clearfix">
      <h4>Progress</h4>
      <div class="progress">
        <div class="progress-bar" role="progressbar"
             aria-valuenow="0" aria-valuemin="0" aria-valuemax="0" style="width: 0">
          0%
        </div>
      </div>
      <div id="current_test">
        <label>Current test:</label><a></a>
      </div>
      <table class='table'>
        <thead>
          <tr>
            <th></th>
            <th>Passed</th>
            <th>Failed</th>
            <th>Timeouts</th>
            <th>Errors</th>
            <th>Not Run</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td></td>
            <td class='PASS'>0</td>
            <td class='FAIL'>0</td>
            <td class='TIMEOUT'>0</td>
            <td class='ERROR'>0</td>
            <td class='NOTRUN'>0</td>
          </tr>
           <tr>
            <td>
              <label>
                Display:
              </label>
              </td>
            <td><input type=checkbox class="result-display-filter" value="PASS" checked></td>
            <td><input type=checkbox class="result-display-filter" value="FAIL" checked></td>
            <td><input type=checkbox class="result-display-filter" value="TIMEOUT" checked></td>
            <td><input type=checkbox class="result-display-filter" value="ERROR" checked></td>
            <td><input type=checkbox class="result-display-filter" value="NOTRUN" checked></td>
          </tr>
        </tbody>
      </table>
      <a class="jsonResults btn btn-primary pull-right">Download JSON results</a>
    </div>

    <div class="results">
      <div id="manualUI">
        <div class='panel panel-primary'>
          <div class='panel-heading'>
            <h4 class='panel-title'>Manual Testing</h4>
          </div>
          <div class="panel-body reftestUI">
            <p>
              The current test requires manual result marking.
              Test and ref should compare <strong class="refType text-primary"></strong>
            </p>
            <p>
              <button class="btn btn-info test">Show Test</button>
              <button class="btn btn-info ref">Show Reference</button>
              <span class="reftestWarn"></span>
            </p>
          </div>
          <div class="panel-footer">
            The test has:
            <button class="btn btn-success pass">Passed</button>
            <button class="btn btn-info skip">Not Run</button>
            <button class="btn btn-danger fail">Failed</button>
          </div>
        </div>
      </div>

      <hr>
      <h4>Details</h4>
      <table class='table'>
        <thead>
          <tr>
            <th>Test
            <th>Status
            <th>Message
            <th>Subtest Pass Rate
          </tr>
        </thead>
        <tbody></tbody>
      </table>
    </div>
  </div>

</div>
