<?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 Tiger, since the expected results checked in were generated on Tiger.</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");
?>
