2006-02-10 Joost de Valk <jdevalk@opendarwin.org>
[WebKit-https.git] / WebKitSite / quality / testing.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
2 <html>
3 <head>
4   <meta content="text/html; charset=ISO-8859-1"
5  http-equiv="content-type">
6   <title>Regression Testing</title>
7   <link rel=stylesheet href="../webkitdev.css">
8 </head>
9 <body>
10 <!--begin sidebar -->
11 <iframe id="sidebar" src="../sidebar.html"></iframe>
12 <!--end sidebar -->
13
14 <h1 id="banner">Regression Testing</h1>
15
16 <div id="content">
17
18 <h2>The WebKit Tests</h2>
19
20 <p>Before patches can land in any of the frameworks in the repository, the layout regression tests must be run. To run these tests, do the following:</p>
21
22 <ol>
23 <li><p>Download the <a href="Ahem.ttf">Ahem font</a>.</p>
24 <p>This special simple font is used to construct certain types of predictable tests. <a href="http://www.hixie.ch/resources/fonts/">A page on Ian Hickson's site</a> has a more detailed explanation.</p></li>
25 <li><p>Open the downloaded file in the Font Book application and click on the Install Font button to install it.</p></li>
26 <li><p>Execute the <tt>run-webkit-tests</tt> script.</p>
27 <p class="code">WebKitTools/Scripts/run-webkit-tests</p>
28 <p>It's handy to put the <tt>WebKitTools/Scripts</tt> directory in your shell path so you can type commands like <tt>build-webkit</tt> without specifying the path to the script.</p>
29 </li>
30 </ol>
31
32 <p>The script will dump the render trees for all of the pages and diff the results against the expected correct results.  If no
33 differences are found, then the patch has passed the tests.  If any tests fail, then the patch cannot be committed until the
34 discrepancies in the tests are resolved.</p>
35
36 <p>Regression tests must be run on Tiger, since the expected results checked in were generated on Tiger.</p>
37
38
39 <h2>The JavaScriptCore Tests</h2>
40
41 <p>If you are making changes to JavaScriptCore, there is an additional test suite you must run before landing changes.
42 This is the Mozilla JavaScript test suite.</p>
43
44 <h3>What's covered by the JavaScript tests?</h3>
45
46  <p>The JavaScript tests cover the functionality of the core JavaScript engine.
47  This includes the following JavaScript objects:
48
49       <table>
50         <tr>
51           <td valign="top">
52             <ul>
53               <li>Arrays</li>
54               <li>Booleans</li>
55               <li>Dates</li>
56               <li>Functions</li>
57             </ul>
58           </td>
59           <td valign="top">
60             <ul>
61               <li>Global Object</li>
62               <li>Math</li>
63               <li>Numbers</li>
64               <li>Objects</li>
65             </ul>
66           </td>
67           <td valign="top">
68             <ul>
69               <li>Regular Expressions</li>
70               <li>Strings</li>
71             </ul>
72           </td>
73         </tr>
74       </table>
75
76       In addition, the JavaScript tests cover parsing, lexical conventions,
77       expressions, statements, type conversion, and exception handling.  
78     </p>
79
80
81 <h3>How to run the tests</h3>
82
83 <p>From JavaScriptCore/tests/mozilla, run the following command:</p>
84 <p class="code">./run-mozilla-tests</p>
85 <p>The script will run all the tests and summarize how the results differ from what is currently expected.</p>
86
87 <h3>What just happened</h3>
88 <p>
89 After all the test runs have finished the results of tests are saved to <tt>actual.html</tt>. 
90 The script the compares these results from your local tree against what is expected to pass/fail from the tip of tree.
91 If there are any regressions caused by your changes you'll be made aware of them.
92 If you fixed a bug that caused an existing failure, you'll also be made aware of what specific test your fix affected.
93 </p>
94
95 <h3>What to do next</h3>
96
97 <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>
98 <p class="code">cp actual.html expected.html</p>
99 <p>When you land your changes, the baseline (expected.html) will be updated in the tree.</p>
100
101 <h3>What happens if I caused a regression?</h3>
102
103 <p>It's not the end of the world.  Go back and fix your bug and re-run <tt>run-mozilla-tests</tt>  as many times as necessary.</p>
104
105 </div>
106
107 </body>
108 </html>