<?php
    $title = "Regression Testing";
    include("../header.inc");
?>
<h2>Regression Testing</h2>

<h3>The WebKit Tests</h3>

<p>Before patches can land in any of the frameworks in the repository, the layout regression tests must be run. To run these tests, execute the <tt>run-webkit-tests</tt> script.</p>
<p class="code">WebKitTools/Scripts/run-webkit-tests</p>
<p>It's handy to put the <tt>WebKitTools/Scripts</tt> directory in your shell path so you can type commands like <tt>run-webkit-tests</tt> without specifying the path to the script.</p>

<p>The script will dump the render trees for all of the pages and diff the results against the expected correct results.  If no
differences are found, then the patch has passed the tests.  If any tests fail, then the patch cannot be committed until the
discrepancies in the tests are resolved.</p>

<p>Regression tests must be run on Leopard, since the expected results checked in were generated on Leopard.</p>


<h3>The JavaScriptCore Tests</h3>

<p>If you are making changes to JavaScriptCore, there is an additional test suite you must run before landing changes.
This is the Mozilla JavaScript test suite.</p>

<h3>What's covered by the JavaScript tests?</h3>

 <p>The JavaScript tests cover the functionality of the core JavaScript engine.
 This includes the following JavaScript objects:

      <table>
        <tr>
          <td valign="top">
            <ul>
              <li>Arrays</li>
              <li>Booleans</li>
              <li>Dates</li>
              <li>Functions</li>
            </ul>
          </td>
          <td valign="top">
            <ul>
              <li>Global Object</li>
              <li>Math</li>
              <li>Numbers</li>
              <li>Objects</li>
            </ul>
          </td>
          <td valign="top">
            <ul>
              <li>Regular Expressions</li>
              <li>Strings</li>
            </ul>
          </td>
        </tr>
      </table>

      In addition, the JavaScript tests cover parsing, lexical conventions,
      expressions, statements, type conversion, and exception handling.  


<h3>How to run the tests</h3>

<p>Execute the "run-javascriptcore-tests" script:</p>
<p class="code">WebKitTools/Scripts/run-javascriptcore-tests</p>
<p>The script will run all the tests and summarize how the results differ from what is currently expected.</p>

<h3>What just happened</h3>
<p>
After all the test runs have finished the results of tests are saved to <tt>actual.html</tt>. 
The script the compares these results from your local tree against what is expected to pass/fail from the tip of tree.
If there are any regressions caused by your changes you'll be made aware of them.
If you fixed a bug that caused an existing failure, you'll also be made aware of what specific test your fix affected.
</p>

<h3>What to do next</h3>

<p>So you fixed a bug that fixed a test.  This means you've now set a new baseline for the tree as a result.</p>
<p class="code">cp actual.html expected.html</p>
<p>When you land your changes, the baseline (expected.html) will be updated in the tree.</p>

<h3>What happens if I caused a regression?</h3>

<p>It's not the end of the world.  Go back and fix your bug and re-run <tt>run-javascriptcore-tests</tt>  as many times as necessary.</p>

<?php
    include("../footer.inc");
?>
