Prototype of new test framework. Example test: CBTester.mxml Example test-swf: main.mxml To compile the sample: mxmlc -includes=CBTester main.mxml To run: SAFlashPlayer.exe main.swf Multiple scripts can be applied to a single Test swf, as in mxmlc -includes=CBTester main.mxml -includes=CBTester2 Currently, output goes only to trace. What's in a test file? There are some mandatory items: notice the top of CBTester.mxml These need not vary. The init function is called by the swf under test. You can add things here if you like, but do so carefully. Note that the application isn't complete by the time this is called. The [Mixin] is required by the compiler to include this class as a Mixin. The UnitTester tag must name what swf it is associated with, using the testSWF tag. in CBTester: testSWF="main.mxml" TestCases must have a testID attribute: for example, The testID should be unique. Description of Available Tags - no attributes. children are of type TestCase attributes: testID - a unique identifier for the TestCase child elements: - no attributes - no attributes - no attributes setup, body, and cleanup may have the following elements: AssertPixelValue attributes: target - the object that has the property to verify x - the X coordinate, relative to the target. y - the Y coordinate, relative to the target. value - the expected value (eg, 0XFFFFFF) valueExpression - a code expression, generally setting value= waitEvent - (optional) - the event to wait for. The test will not advance until this event is received, or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event timeout - in milliseconds. default is 3000 milliseconds. AssertPropertyValue attributes: target - the object that has the property to verify propertyName - the property to verify value - the expected value valueExpression - a code expression, generally setting value= waitEvent - (optional) - the event to wait for. The test will not advance until this event is received, or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event timeout - in milliseconds. default is 3000 milliseconds. AssertMethodValue attributes: target - the object that has the property to verify propertyName - the property to verify value - the expected value valueExpression - a code expression, generally setting value= waitEvent - (optional) - the event to wait for. The test will not advance until this event is received, or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event timeout - in milliseconds. default is 3000 milliseconds. AssertStyleValue attributes: target - the object on which to assert the style styleName - the name of the style to verify value - the expected value valueExpression - a code expression, generally setting value= waitEvent - (optional) - the event to wait for. The test will not advance until this event is received or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event timeout - in milliseconds. default is 3000 milliseconds. CompareBitmap (see below for more description) attributes: target - the object on which to assert the style url - the name of the file to save/read waitEvent - do not use! waitTarget - do not use! timeout - in milliseconds. default is 3000 milliseconds. DispatchKeyEvent key - the key to press char - the character to enter waitEvent - (optional) - the event to wait for. The test will not advance until this event is received, or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event timeout - in milliseconds. default is 3000 milliseconds. DispatchMouseEvent target - the object on which to target the event. type - the type of MouseEvent to dispatch. For instance, "mouseUp" localX - the X coordinate, relative to the target. localY - the Y coordinate, relative to the target. waitEvent - (optional) - the event to wait for. The test will not advance until this event is received, or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event timeout - in milliseconds. default is 3000 milliseconds. Pause timeout - how long to wait. (Does not cause an error) RunCode attributes: code - the code to run. This might be a method call or the actual code. waitEvent - (optional) - the event to wait for. The test will not advance until this event is received, or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event timeout - in milliseconds. default is 3000 milliseconds. SetProperty attributes: target - the object on which to set the style propertyName - the name of the style to set value - the value to set the property to waitEvent - (optional) - the event to wait for. The test will not advance until this event is received, or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event timeout - in milliseconds. default is 3000 milliseconds. example: :w SetStyle attributes: target - the object whose style you will set styleName - the style you want to set value - the value to set the property to waitEvent - (optional) - the event to wait for. The test will not advance until this event is received, or a timeout occurs. waitTarget - the object that will dispatch the waitEvent event Bitmap Comparison: To use bitmap verification, use the CompareBitmap tag: for instance: This associates a bitmap of cb to save in a file names myTest4.png. It is safest to preceed the bitmap call with a call that synchronizes (using waitFor and waitTarget). Do not use waitFor and WaitTarget on the bitmap call itself! To write new bitmaps, it is necessary to mixin the CreateBitmapReferences class. mxmlc -includes=CBTester -includes=CreateBitmapReferences main.mxml (and, because of the current bug, it is necessary to have a reference to CreateBitmapReferences in main.mxml). Because writing to the local disk is a security violation, a server is required. The server is available in ~depot/flex/qa/skunkworks/baselinewriter/baselinewriter.zip. This is meant to be run by jrun. To install, unzip it under servers/default in a jrun installation. The root url that mustella writes bitmaps to is defined in CreateBitmapReferences.as; very likely you will have to alter the server port, local directory location, and the base url to make this work. Let me know of any difficulties setting up the server: bolaughl@adobe.com issues: mixin currently requires a reference to the mixin file(s). (bug) USEFUL TOOLS EventSniffer - include an EventSniffer tag in your test swf. This sniffs all events and displays them. Start, stop, mark and clear controls. PixelSniffer - include a PixelSniffer tag in your test swf. This sniffs all mouse locations and pixel values under the mouse. Start, stop, mark and clear controls. ca going