| <?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 pass. To run these tests, execute the |
| <code>run-webkit-tests</code> <a href="/coding/scripts.html">script</a>.</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 style="vertical-align: top"> |
| <ul> |
| <li>Arrays</li> |
| <li>Booleans</li> |
| <li>Dates</li> |
| <li>Functions</li> |
| </ul> |
| </td> |
| <td style="vertical-align: top"> |
| <ul> |
| <li>Global Object</li> |
| <li>Math</li> |
| <li>Numbers</li> |
| <li>Objects</li> |
| </ul> |
| </td> |
| <td style="vertical-align: 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 <code>run-javascriptcore-tests</code> <a href="/coding/scripts.html">script</a>. |
| 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 <code>actual.html</code>. |
| 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 rerun |
| <code>run-javascriptcore-tests</code> as many times as necessary.</p> |
| |
| <?php |
| include("../footer.inc"); |
| ?> |