gecko-dev/testing/mochitest
2007-01-18 19:30:38 +00:00
..
MochiKit Bug 359999. Add an enable-mochitest option. r=bsmedberg 2007-01-17 20:38:57 +00:00
static Bug 359999. Add an enable-mochitest option. r=bsmedberg 2007-01-17 20:38:57 +00:00
tests If an exception is thrown, make sure finish() still gets called as needed. r=sayrer 2007-01-18 19:30:38 +00:00
gen_template.pl make gen_template.pl work from anywhere with FindBin 2006-11-08 19:19:19 +00:00
Makefile.in Bug 359999. Add an enable-mochitest option. r=bsmedberg 2007-01-17 20:38:57 +00:00
README.txt Add XUL and XHTML templates, add handlers for gen_template.pl 2006-11-07 00:56:50 +00:00
runtests.pl Bug 362232. Set XPCOM_DEBUG_BREAK so things run better on Windows. Patch by Wladimir Palant <trev@gtchat.de>. r=sayrer 2006-11-29 16:23:23 +00:00
server.py Add xul mime type to server.py 2006-10-28 21:46:33 +00:00

 ----------------
 mochitest README
 ----------------

Steps to get started:

 1.) Right now, you will need to edit some constants in runtests.pl. Windows
     is not yet supported.

 2.) Start the python server in a separate console:
     
      %> python server.py

     It runs at http://localhost:8888/. Control-C will kill it. We are looking
     at other server options, because we don't want to require python.

 3.) New test cases can be added to the tests/ directory. We are working on
     easy test navigation and automated test addition.

 4.) gen_template.pl will generate test templates for HTML, XUL, and XHTML.
     Read the comment at the top of the file for usage instructions.

 5.) Write a test.


Checkin rules:

 1.) Any module owner/peer/member should feel free to check in a test case.

 2.) Tests should always be passing, and failing tests will make the tree
     turn orange (very soon). If you have tests that you know are going to
     fail, use the todo() function.

 3.) Modifications to Makefiles, Perl, or JS code need a bugzilla bug with 
     davel and sayrer cc'd.

Example test:

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=345656
-->
<head>
  <title>Test for Bug 345656</title>
  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>        
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none">
  
</div>
<pre id="test">
<script class="testbody" type="text/javascript">

/** Test for Bug 345656 **/
//
//add information to show on the test page
//
$("display").innerHTML = "doing stuff...";

//
// The '$' is function is shorthand for getElementById. This is the same thing:
//
document.getElementById("display").innerHTML = "doing stuff...";

//
// you can add content that you don't want to clutter 
// the display to the content div.
//
// You can write directly, or you can use MochiKit functions
// to do it in JS like this:
//
appendChildNodes($("content"),
                 DIV({class: "qux"},
                     SPAN({id: "span42"}, "content"))
                 );

//
// the ok() function is like assert
//
ok(true, "checking to see if true is true);

//
// this will fail
//
ok(1==2, "1 equals 2?");


//
// this will be marked as a todo.
// When we fix 1 so it equals 2, we'll need to change this 
// function to ok() or is().
//
todo(1==2, "1 equals 2?");

//
// is() takes two args
//
myVar = "foo";
is(myVar, "foo", "checking to see if myVar is 'foo'");

//
// Tests can run in event handlers.
// Call this to tell SimpleTest to wait for SimpleTest.finish() 
//
SimpleTest.waitForExplicitFinish();

//
// event handler:
//
function event_fired(ev) {
  is(ev.newValue, "width: auto;", "DOMAttrModified event reports correct newValue");
  SimpleTest.finish(); // trigger the end of our test sequence
}

//
// Hook up the event. Mochikit.Signal has many conveniences for this, if you want.
//
$("content").addEventListener("DOMAttrModified", event_fired, false);

//
// Fire the event.
//
$("content").style.width = "auto";

</script>
</pre>
</body>
</html>