Index: test/harness/runone.sh
===================================================================
--- test/harness/runone.sh	(revision 2120)
+++ test/harness/runone.sh	(working copy)
@@ -7,6 +7,12 @@
 
 debugFile=`basename $1 .keys`
 
+# Number of seconds to wait for orca to start
+ORCA_WAIT_TIME=10
+
+# Number of seconds to wait for test application to start
+APP_WAIT_TIME=20
+
 # Set up our local user settings file for the output format we want.
 #
 # If a <testfilename>.settings file exists, should use that instead of 
@@ -33,7 +39,7 @@
 # Run orca and let it settle in.
 #
 orca &
-sleep 5
+sleep $ORCA_WAIT_TIME
 
 # Run the app (or gnome-terminal if no app was given) and let it settle in.
 #
@@ -45,7 +51,7 @@
 fi
 $APP_NAME &
 APP_PID=$!
-sleep 5
+sleep $APP_WAIT_TIME
 
 # Play the keystrokes.
 #
Index: test/harness/runall.sh
===================================================================
--- test/harness/runall.sh	(revision 2120)
+++ test/harness/runall.sh	(working copy)
@@ -13,6 +13,9 @@
 keystrokesDir=$harnessDir/../keystrokes
 resultsDir=$harnessDir/../results
 
+# number of seconds to wait for application to finish shutting down
+SHUT_DOWN_WAIT_TIME=5
+
 process_cl () {
     while [ $# != 0 ]; do
         case "$1" in
@@ -127,7 +130,10 @@
             $harnessDir/runone.sh $testFile
           fi
         fi
-        sleep 5
+
+	# wait for application to finish shutting down
+        sleep $SHUT_DOWN_WAIT_TIME
+
         newResultsFile=`basename $testFile .keys`.orca
         mkdir -p $currentdir/$outputdir
         cp $newResultsFile $currentdir/$outputdir
Index: src/tools/play_keystrokes.py
===================================================================
--- src/tools/play_keystrokes.py	(revision 2120)
+++ src/tools/play_keystrokes.py	(working copy)
@@ -32,6 +32,9 @@
 #
 MAX_SLEEP = 5.0
 
+# Minimum time to sleep between arrow key navigation
+MIN_SLEEP = 3.0
+
 # Factor to speed up the playback.  This will compress time by the
 # given amount.  For example, 2.0 will play the events back twice
 # as fast.
@@ -66,6 +69,14 @@
                 
             line = raw_input() # modifiers
             line = raw_input() # event_string
+
+            arrowKeyPressed = False
+            keyString = line[line.index("=") + 1 :]
+            if type == 0 and \
+                   (keyString == "(Down)" or keyString == "(Up)" or \
+                    keyString == "(Right)" or keyString == "(Left)"):
+                arrowKeyPressed = True
+
             line = raw_input() # is_text
             
             line = raw_input()
@@ -75,6 +86,11 @@
                 lastTime = event_time
 
             delta = min(MAX_SLEEP, (event_time - lastTime) / SPEED_UP)
+            if arrowKeyPressed:
+                # Make sure there is sufficient delay between
+                # arrow key pressed.
+                delta = max(MIN_SLEEP, delta)
+
             if delta > 0:
                 time.sleep(delta)
             lastTime = event_time
