eValid -- Automated Web Quality Solution
Browser-Based, Client-Side, Functional Testing & Validation,
Load & Performance Tuning, Page Timing, Website Analysis,
and Rich Internet Application Monitoring.
eValid -- Flash Applications Record/Play Cookbook
This page is a cookbook for recording Flash applications with eValid.
It describes the common problems with Flash applications and
it describes a protocol for recording scripts
that guarantees producing scripts that play back very reliably.
Flash objects are generally opaque to eValid,
so normal recording methods are not always effective.
Perhaps more important -- and more complicating --
Flash objects can take actions
within themselves that require
varying amounts of time to complete.
When they do this they don't provide any completion signals
for eValid to use to synchronize playback.
In most cases you will need to record absolute clicks
(F11 toggles this mode on and off)
and you will need to synchronize on screen images
(Ctrl-Q to set up this dialog).
General Rules & Protocol
Here are the basic rules
that will insure reliable recording and playback of Flash objects.
Keep these in mind throughout the recording process.
- Basic Recording Setup.
Clicks need to use F11.
Sync's use CTRL-Q (Validate & Synchronize on Screen Rectangle) with
- Recommended Reliable Recording Protocol.
Make the recording as a sequence of Synchronization + Action pairs.
The synchronization part will always make sure that the next action
taken will be meaningful.
It may be that not every synchronization is needed and they can always
be edited out (commented out) later if necessary.
But, "better safe than sorry."
- Startup Synchronization.
In most cases eValid achieves initial synchronization information
when the Flash application first loads.
So you don't have to worry about that part.
It's the timings that happen after the Flash object shows
up that are the problem.
- Automatic Timeout Pages.
Typically when you see Skip Intro the page will timeout
and navigate to a new page.
Don't record into this introduction page.
Instead, let it time out and then synchronize on whatever the
Flash intro activates after the timeout.
If you can't wait, this click has to be recorded according
to the protocol.
- eValid Browser Sizing.
Flash objects generally do not resize so it is good practice to
start with eValid sized to completely contain the entire
Don't use full screen mode.
Record a CTRL-Q to tell eValid on playback exactly
where to put the newly sized window. You should see
a WindowPos ... command in the script.
Attaining focus on an object in a flash page often requires
a double click
-- or even a triple-click or a double-double-click --
on an object for it to be selected for input on playback.
This can be done by double clicking on the application
or by copying and
pasting the recorded click command in the script file the
required number of times.
Specific Rules & Advice
Here are some specific rules and advice about creating reliable playback recordings of Flash objects
in terms of specific kinds of activities or visual elements on the Flash applications.
- Absolute Left|Right Clicks.
You'll probably have to use this kind of recorded action
with Flash objects.
While we don't particularly like the fact that absolute x,y coordinate
based actions are needed,
we know of no way around this when the Flash
object does not respond with a navigation
(which won't always require the absolute click).
- Absolute Timed Left|Right Clicks.
You may need to use multiple clicks, timed carefully,
to get certain effects
on a Flash object.
The Delay msec playback command may be used
instead of Wait msec
to assure that critical intra-click times are not altered
by the wait time multiplier.
- xyLClicks With NAV Parameter.
You have to be careful to make
sure you've synchronized so that the click you've recorded
is meaningful during playback.
A common problem is that the click is delivered
to the Flash application too early, before it is ready,
or too late, after it has changed.
The key to success is synchronization before action.
- Text Entry in Flash Applications.
This requires use of eValid's Application Mode to
record text entry activity with the KeyText command.
Also, remember, you may need to record a double-click
-- or even a triple-click or a double-double-click --
to assure that a text entry field has the correct
- Absolute Mouseovers.
These should be enabled only when absolutely needed.
The problem is to get the timings right.
- Scrolling Sliders.
These will work fine if the entire flash application
is viewable in the page and the xyLDrag command is selected.
If the window in which the application is loaded cannot
be fully displayed, then this could cause problems during playback.
Remember, the slider has to be in focus before recording
a drag, so this will show up as an extra click in the script.
- Waits & Delays.
Waits & delays in the script should have the limits for them
set to a higher value than normal.
This is because playback of scripts with mostly absolute
commands have minimal synchronization -- unless you put the
synchronizations in between each action.
- Using Drags To Select.
Selecting an item or scrolling through the application
by dragging should be done in a medium, very controlled pace
because dragging too fast can cause the playback to release the
dragged item at the wrong place (location).
- The Acid Playback Synchronization Test.
To assure you really have achieved fully synchronized playback
one method is to set the eValid wait time multiplier to
zero. That is, no waits at all. This is the most extreme
case and with this setting there'll be no wait times.
If the script can de-synchronize on play back this will reveal it.
- Use Clicks, Not ENTER/RETURNs.
Our experience is that working with Flash objects seems
to go better if you avoid ENTER/RETURN-dependent actions
in favor of actions implemented with clicks.
- Reuse Your Startup Script.
If you have a working startup script
-- one that successfully launches your Flash and
brings it to some stable state --
consider reusing it.
Or use eValid: Record > Insert Recording to append to it.