orca r3472 - in trunk: . test/keystrokes/firefox



Author: joanied
Date: Fri Jan 18 08:36:28 2008
New Revision: 3472
URL: http://svn.gnome.org/viewvc/orca?rev=3472&view=rev

Log:
* test/keystrokes/firefox/html_role_combo_box.py:
  test/keystrokes/firefox/html_role_lists.py:
  test/keystrokes/firefox/line_nav_enter_bug.py:
  test/keystrokes/firefox/line_nav_nested_tables.py:
  test/keystrokes/firefox/line_nav_wiki.py:
  test/keystrokes/firefox/xul_role_accel_label.py:
  test/keystrokes/firefox/xul_role_alert.py:
  test/keystrokes/firefox/xul_role_check_menu_item.py:
  test/keystrokes/firefox/xul_role_entry.py:
  test/keystrokes/firefox/xul_role_list_item.py:
  test/keystrokes/firefox/xul_role_menu_bar.py:
  test/keystrokes/firefox/xul_role_push_button.py:
  test/keystrokes/firefox/xul_role_radio_button.py:
  test/keystrokes/firefox/xul_role_radio_menu_item.py:
  test/keystrokes/firefox/xul_where_am_i_status_bar.py:
  test/keystrokes/firefox/xul_where_am_i_dialog.py:
  Updating the XUL tests to use assertions, making some of the 
  navigation tests more thorough.


Modified:
   trunk/ChangeLog
   trunk/test/keystrokes/firefox/html_role_combo_box.py
   trunk/test/keystrokes/firefox/html_role_lists.py
   trunk/test/keystrokes/firefox/line_nav_enter_bug.py
   trunk/test/keystrokes/firefox/line_nav_nested_tables.py
   trunk/test/keystrokes/firefox/line_nav_wiki.py
   trunk/test/keystrokes/firefox/xul_role_accel_label.py
   trunk/test/keystrokes/firefox/xul_role_alert.py
   trunk/test/keystrokes/firefox/xul_role_check_menu_item.py
   trunk/test/keystrokes/firefox/xul_role_entry.py
   trunk/test/keystrokes/firefox/xul_role_list_item.py
   trunk/test/keystrokes/firefox/xul_role_menu_bar.py
   trunk/test/keystrokes/firefox/xul_role_push_button.py
   trunk/test/keystrokes/firefox/xul_role_radio_button.py
   trunk/test/keystrokes/firefox/xul_role_radio_menu_item.py
   trunk/test/keystrokes/firefox/xul_where_am_i_dialog.py
   trunk/test/keystrokes/firefox/xul_where_am_i_status_bar.py

Modified: trunk/test/keystrokes/firefox/html_role_combo_box.py
==============================================================================
--- trunk/test/keystrokes/firefox/html_role_combo_box.py	(original)
+++ trunk/test/keystrokes/firefox/html_role_combo_box.py	Fri Jan 18 08:36:28 2008
@@ -96,8 +96,8 @@
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Change selection Down: WONTFIX",
-    ["BRAILLE LINE:  'WONTFIX'",
-     "     VISIBLE:  'WONTFIX', cursor=1",
+    ["BRAILLE LINE:  'WONTFIX Combo'",
+     "     VISIBLE:  'WONTFIX Combo', cursor=0",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'WONTFIX'"]))
 
@@ -108,8 +108,8 @@
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Change selection Down: NOTABUG", 
-    ["BRAILLE LINE:  'NOTABUG'",
-     "     VISIBLE:  'NOTABUG', cursor=1",
+    ["BRAILLE LINE:  'NOTABUG Combo'",
+     "     VISIBLE:  'NOTABUG Combo', cursor=0",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'NOTABUG'"]))
 
@@ -120,8 +120,8 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Change selection Up: WONTFIX",
-    ["BRAILLE LINE:  'WONTFIX'",
-     "     VISIBLE:  'WONTFIX', cursor=1",
+    ["BRAILLE LINE:  'WONTFIX Combo'",
+     "     VISIBLE:  'WONTFIX Combo', cursor=0",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'WONTFIX'"]))
 
@@ -132,8 +132,8 @@
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "Change selection Up: FIXED", 
-    ["BRAILLE LINE:  'FIXED'",
-     "     VISIBLE:  'FIXED', cursor=1",
+    ["BRAILLE LINE:  'FIXED Combo'",
+     "     VISIBLE:  'FIXED Combo', cursor=0",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'FIXED'"]))
 
@@ -144,11 +144,10 @@
 sequence.append(KeyComboAction("<Alt>Down"))
 sequence.append(utils.AssertPresentationAction(
     "Alt Down to Expand",
-    ["BUG? - It would be nice to handle this better, like indicate expansion",
-     "BRAILLE LINE:  'FIXED Combo'",
+    ["BRAILLE LINE:  'FIXED Combo'",
      "     VISIBLE:  'FIXED Combo', cursor=1",
-     "BRAILLE LINE:  'Menu'",
-     "     VISIBLE:  'Menu', cursor=0",
+     "BRAILLE LINE:  'FIXED'",
+     "     VISIBLE:  'FIXED', cursor=1",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'FIXED combo box'",
      "SPEECH OUTPUT: ''",
@@ -188,8 +187,8 @@
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "Tab",
-    ["BRAILLE LINE:  '2.16 Combo'",
-     "     VISIBLE:  '2.16 Combo', cursor=1",
+    ["BRAILLE LINE:  'Version 2.16 Combo'",
+     "     VISIBLE:  'Version 2.16 Combo', cursor=9",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Version 2.16 combo box'"]))
 
@@ -202,7 +201,7 @@
 sequence.append(utils.AssertPresentationAction(
     "Left out of combo box", 
     ["BRAILLE LINE:  'Version 2.16 Combo'",
-     "     VISIBLE:  'Version 2.16 Combo', cursor=7",
+     "     VISIBLE:  'Version 2.16 Combo', cursor=0",
      "SPEECH OUTPUT: 'n'"]))
 
 ########################################################################
@@ -226,7 +225,7 @@
 sequence.append(utils.AssertPresentationAction(
     "Line Down", 
     ["BRAILLE LINE:  'Speech Combo'",
-     "     VISIBLE:  'Speech Combo', cursor=1",
+     "     VISIBLE:  'Speech Combo', cursor=0",
      "SPEECH OUTPUT: 'Speech combo box'"]))
 
 ########################################################################
@@ -237,9 +236,12 @@
 sequence.append(KeyComboAction("<Alt>Down"))
 sequence.append(utils.AssertPresentationAction(
     "Alt Down to Expand", 
-    ["BUG? - It would be nice to handle this better, like indicate expansion",
-     "BRAILLE LINE:  'Menu'",
-     "     VISIBLE:  'Menu', cursor=0",
+    ["BRAILLE LINE:  'Speech Combo'",
+     "     VISIBLE:  'Speech Combo', cursor=1",
+     "BRAILLE LINE:  'Speech'",
+     "     VISIBLE:  'Speech', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Speech combo box'"
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Speech'"]))
 
@@ -265,11 +267,8 @@
     ["BUG? - It would be nice to handle this better", 
      "BRAILLE LINE:  'Braille Combo'",
      "     VISIBLE:  'Braille Combo', cursor=1",
-     "SPEECH OUTPUT: ''",
-     "SPEECH OUTPUT: 'combo box'",
-     "SPEECH OUTPUT: ''",
-     "SPEECH OUTPUT: ''",
-     "SPEECH OUTPUT: ''"]))
+     "SPEECH OUTPUT: 'Minefield application Combo Box Regression Test - Minefield frame Combo Box Regression Test panel'",
+     "SPEECH OUTPUT: 'Component Braille combo box'"]))
 
 ########################################################################
 # Do a basic "Where Am I" via KP_Enter. 
@@ -295,8 +294,8 @@
 sequence.append(KeyComboAction("<Shift>ISO_Left_Tab"))
 sequence.append(utils.AssertPresentationAction(
     "Shift Tab to Version", 
-    ["BRAILLE LINE:  '2.16 Combo'",
-     "     VISIBLE:  '2.16 Combo', cursor=1",
+    ["BRAILLE LINE:  'Version 2.16 Combo'",
+     "     VISIBLE:  'Version 2.16 Combo', cursor=9",
      "SPEECH OUTPUT: ''",
      "SPEECH OUTPUT: 'Version 2.16 combo box'"]))
 

Modified: trunk/test/keystrokes/firefox/html_role_lists.py
==============================================================================
--- trunk/test/keystrokes/firefox/html_role_lists.py	(original)
+++ trunk/test/keystrokes/firefox/html_role_lists.py	Fri Jan 18 08:36:28 2008
@@ -72,14 +72,6 @@
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down", 
-    ["BRAILLE LINE:  'sense of priority, even if it is artificial'",
-     "     VISIBLE:  'sense of priority, even if it is', cursor=1",
-     "SPEECH OUTPUT: 'sense of priority, even if it is artificial'"]))
-
-sequence.append(utils.StartRecordingAction())
-sequence.append(KeyComboAction("Down"))
-sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
     ["BRAILLE LINE:  '0. look really cool when we carry them around on yellow Post-Itstm.'",
      "     VISIBLE:  '0. look really cool when we carr', cursor=1",
      "SPEECH OUTPUT: '0. look really cool when we carry them around on yellow Post-Itstm.'"]))

Modified: trunk/test/keystrokes/firefox/line_nav_enter_bug.py
==============================================================================
--- trunk/test/keystrokes/firefox/line_nav_enter_bug.py	(original)
+++ trunk/test/keystrokes/firefox/line_nav_enter_bug.py	Fri Jan 18 08:36:28 2008
@@ -36,10 +36,9 @@
 sequence.append(KeyComboAction("<Control>Home"))
 sequence.append(utils.AssertPresentationAction(
     "Top of file",
-    ["BRAILLE LINE:  'Enter Bug: orca â This page lets you enter a new bug into Bugzilla. h1'",
-     "     VISIBLE:  'Enter Bug: orca â This page le', cursor=1",
-     "SPEECH OUTPUT: 'Enter Bug: orca â This page lets you enter a new bug into Bugzilla. heading  '",
-     "SPEECH OUTPUT: 'level 1'"]))
+    ["BRAILLE LINE:  'Home Link Image Bugzilla'",
+     "     VISIBLE:  'Home Link Image Bugzilla', cursor=1",
+     "SPEECH OUTPUT: 'Home link image Bugzilla'"]))
 
 ########################################################################
 # Down Arrow.
@@ -48,210 +47,401 @@
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'Before reporting a bug, please read the bug writing guidelines Link , please look at the list of most frequently Link'",
-     "     VISIBLE:  'Before reporting a bug, please r', cursor=1",
+    ["BRAILLE LINE:  'New bug Link  Â Browse Link  Â Search Link  Â Reports Link  Â Account Link  Â Admin Link  Â Help Link Logged In joanmarie diggs gmail com | Log Out Link'",
+     "     VISIBLE:  'New bug Link  Â Browse Link  Â', cursor=1",
+     "SPEECH OUTPUT: 'New bug link  Â Browse link  Â Search link  Â Reports link  Â Account link  Â Admin link  Â Help link Logged In joanmarie diggs gmail com | Log Out link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'Enter Bug: orca â This page lets you enter a new bug into Bugzilla. h1'",
+     "     VISIBLE:  'Enter Bug: orca â This page le', cursor=1",
+     "SPEECH OUTPUT: 'Enter Bug: orca â This page lets you enter a new bug into Bugzilla. heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'Before reporting a bug, please read the bug writing guidelines Link , please look at the list of most frequently Link'",
+     "     VISIBLE:  'Before reporting a bug, please r', cursor=1",
      "SPEECH OUTPUT: 'Before reporting a bug, please read the bug writing guidelines link , please look at the list of most frequently link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'reported bugs Link , and please search Link  or browse Link  for the bug.'",
-     "     VISIBLE:  'reported bugs Link , and please ', cursor=1",
+    ["BRAILLE LINE:  'reported bugs Link , and please search Link  or browse Link  for the bug.'",
+     "     VISIBLE:  'reported bugs Link , and please ', cursor=1",
      "SPEECH OUTPUT: 'reported bugs link , and please search link  or browse link  for the bug.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'Reporter: joanmarie diggs gmail com Product: orca'",
-     "     VISIBLE:  'Reporter: joanmarie diggs gmail ', cursor=1",
+    ["BRAILLE LINE:  'Reporter: joanmarie diggs gmail com Product: orca'",
+     "     VISIBLE:  'Reporter: joanmarie diggs gmail ', cursor=1",
      "SPEECH OUTPUT: 'Reporter: joanmarie diggs gmail com Product: orca'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'Version: List Component Link : List'",
-     "     VISIBLE:  'Version: List Component Link : L', cursor=1",
+    ["BRAILLE LINE:  'Version: List Component Link : List'",
+     "     VISIBLE:  'Version: List Component Link : L', cursor=1",
      "SPEECH OUTPUT: 'Version: List with 9 items Component link : List with 5 items'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'Â'",
-     "     VISIBLE:  'Â', cursor=1",
+    ["BRAILLE LINE:  'Â'",
+     "     VISIBLE:  'Â', cursor=1",
      "SPEECH OUTPUT: 'Â'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'GNOME Link Unspecified Combo'",
-     "     VISIBLE:  'GNOME Link Unspecified Combo', cursor=1",
-     "SPEECH OUTPUT: 'GNOME link Unspecified combo box'"]))
+    ["BRAILLE LINE:  'GNOME Link'",
+     "     VISIBLE:  'GNOME Link', cursor=1",
+     "SPEECH OUTPUT: 'GNOME link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'version Link :'",
-     "     VISIBLE:  'version Link :', cursor=1",
+    ["BRAILLE LINE:  'version Link :'",
+     "     VISIBLE:  'version Link :', cursor=1",
      "SPEECH OUTPUT: 'version link :'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'Unspecified Combo'",
-     "     VISIBLE:  'Unspecified Combo', cursor=1",
+    ["BRAILLE LINE:  'Unspecified Combo'",
+     "     VISIBLE:  'Unspecified Combo', cursor=0",
      "SPEECH OUTPUT: 'Unspecified combo box'"]))
 
-########################################################################
-# Tab to move off of the combo box.  Then continue with Down Arrow.
-#
-sequence.append(utils.StartRecordingAction())
-sequence.append(KeyComboAction("Tab"))
-sequence.append(utils.AssertPresentationAction(
-    "Tab", 
-    ["BRAILLE LINE:  'OS Link : Linux Combo'",
-     "     VISIBLE:  'OS Link : Linux Combo', cursor=0",
-     "SPEECH OUTPUT: ''",
-     "SPEECH OUTPUT: 'OS link'"]))
-
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BUG? - Down Arrow should move us to the next line.",
-     "BRAILLE LINE:  'OS Link : Linux Combo'",
-     "     VISIBLE:  'OS Link : Linux Combo', cursor=0",
-     "SPEECH OUTPUT: ''",
-     "SPEECH OUTPUT: 'OS link'"]))
+    "Line Down",
+    ["BRAILLE LINE:  'OS Link : Linux Combo'",
+     "     VISIBLE:  'OS Link : Linux Combo', cursor=1",
+     "SPEECH OUTPUT: 'OS link : Linux combo box'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Severity Link : normal Combo'",
-     "     VISIBLE:  'Severity Link : normal Combo', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Severity Link : normal Combo'",
+     "     VISIBLE:  'Severity Link : normal Combo', cursor=1",
      "SPEECH OUTPUT: 'Severity link : normal combo box'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Â'",
-     "     VISIBLE:  'Â', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Â'",
+     "     VISIBLE:  'Â', cursor=1",
      "SPEECH OUTPUT: 'Â'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Summary:  $l'",
-     "     VISIBLE:  'Summary:  $l', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Summary:  $l'",
+     "     VISIBLE:  'Summary:  $l', cursor=1",
      "SPEECH OUTPUT: 'Summary: text '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BRAILLE LINE:  'Description:  $l'",
-     "     VISIBLE:  'Description:  $l', cursor=1",
+    ["BRAILLE LINE:  'Description:  $l  '",
+     "     VISIBLE:  'Description:  $l  ', cursor=1",
      "SPEECH OUTPUT: 'Description: text '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "Line Down",
-    ["BUG? - We seem to be landing in a space after the entry.",
-     "BRAILLE LINE:  ' '",
-     "     VISIBLE:  ' ', cursor=1",
-     "SPEECH OUTPUT: ' '"]))
-
-sequence.append(utils.StartRecordingAction())
-sequence.append(KeyComboAction("Down"))
-sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Â'",
-     "     VISIBLE:  'Â', cursor=1",
+    ["BRAILLE LINE:  'Â'",
+     "     VISIBLE:  'Â', cursor=1",
      "SPEECH OUTPUT: 'Â'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Optional Fields'",
-     "     VISIBLE:  'Optional Fields', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Optional Fields'",
+     "     VISIBLE:  'Optional Fields', cursor=1",
      "SPEECH OUTPUT: 'Optional Fields'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Cc:  $l'",
-     "     VISIBLE:  'Cc:  $l', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Cc:  $l'",
+     "     VISIBLE:  'Cc:  $l', cursor=1",
      "SPEECH OUTPUT: 'Cc: text '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Keywords Link :  $l'",
-     "     VISIBLE:  'Keywords Link :  $l', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Keywords Link :  $l'",
+     "     VISIBLE:  'Keywords Link :  $l', cursor=1",
      "SPEECH OUTPUT: 'Keywords link : text '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Depends on:  $l'",
-     "     VISIBLE:  'Depends on:  $l', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Depends on:  $l'",
+     "     VISIBLE:  'Depends on:  $l', cursor=1",
      "SPEECH OUTPUT: 'Depends on: text '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Blocks:  $l'",
-     "     VISIBLE:  'Blocks:  $l', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Blocks:  $l'",
+     "     VISIBLE:  'Blocks:  $l', cursor=1",
      "SPEECH OUTPUT: 'Blocks: text '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'Commit Button  ÂÂÂÂ Remember values as bookmarkable template Button'",
-     "     VISIBLE:  'Commit Button  ÂÂÂÂ Remember', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'Commit Button  ÂÂÂÂ Remember values as bookmarkable template Button'",
+     "     VISIBLE:  'Commit Button  ÂÂÂÂ Remember', cursor=1",
      "SPEECH OUTPUT: 'Commit button  ÂÂÂÂ Remember values as bookmarkable template button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'We've made a guess at your operating system. Please check it and, if we got it wrong, email'",
-     "     VISIBLE:  'We've made a guess at your opera', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'We've made a guess at your operating system. Please check it and, if we got it wrong, email'",
+     "     VISIBLE:  'We've made a guess at your opera', cursor=1",
      "SPEECH OUTPUT: 'We've made a guess at your operating system. Please check it and, if we got it wrong, email'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'bugmaster gnome org '",
-     "     VISIBLE:  'bugmaster gnome org ', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'bugmaster gnome org '",
+     "     VISIBLE:  'bugmaster gnome org ', cursor=1",
      "SPEECH OUTPUT: 'bugmaster gnome org '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
-    "Line Down", 
-    ["BRAILLE LINE:  'SavedÂSearches: AllÂOrca Link  | Firefox Link  | openÂorca Link  | OpenÂRFEs Link'",
-     "     VISIBLE:  'SavedÂSearches: AllÂOrca Link ', cursor=1",
+    "Line Down",
+    ["BRAILLE LINE:  'SavedÂSearches: AllÂOrca Link  | Firefox Link  | openÂorca Link  | OpenÂRFEs Link'",
+     "     VISIBLE:  'SavedÂSearches: AllÂOrca Link ', cursor=1",
      "SPEECH OUTPUT: 'SavedÂSearches: AllÂOrca link  | Firefox link  | openÂorca link  | OpenÂRFEs link'"]))
 
 ########################################################################
+# Up Arrow.
+#
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'bugmaster gnome org '",
+     "     VISIBLE:  'bugmaster gnome org ', cursor=1",
+     "SPEECH OUTPUT: 'bugmaster gnome org '"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'We've made a guess at your operating system. Please check it and, if we got it wrong, email'",
+     "     VISIBLE:  'We've made a guess at your opera', cursor=1",
+     "SPEECH OUTPUT: 'We've made a guess at your operating system. Please check it and, if we got it wrong, email'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Commit Button  ÂÂÂÂ Remember values as bookmarkable template Button'",
+     "     VISIBLE:  'Commit Button  ÂÂÂÂ Remember', cursor=1",
+     "SPEECH OUTPUT: 'Commit button  ÂÂÂÂ Remember values as bookmarkable template button'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Blocks:  $l'",
+     "     VISIBLE:  'Blocks:  $l', cursor=1",
+     "SPEECH OUTPUT: 'Blocks: text '"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Depends on:  $l'",
+     "     VISIBLE:  'Depends on:  $l', cursor=1",
+     "SPEECH OUTPUT: 'Depends on: text '"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Keywords Link :  $l'",
+     "     VISIBLE:  'Keywords Link :  $l', cursor=1",
+     "SPEECH OUTPUT: 'Keywords link : text '"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Cc:  $l'",
+     "     VISIBLE:  'Cc:  $l', cursor=1",
+     "SPEECH OUTPUT: 'Cc: text '"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Optional Fields'",
+     "     VISIBLE:  'Optional Fields', cursor=1",
+     "SPEECH OUTPUT: 'Optional Fields'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Â'",
+     "     VISIBLE:  'Â', cursor=1",
+     "SPEECH OUTPUT: 'Â'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Description:  $l  '",
+     "     VISIBLE:  'Description:  $l  ', cursor=1",
+     "SPEECH OUTPUT: 'Description: text '"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Summary:  $l'",
+     "     VISIBLE:  'Summary:  $l', cursor=1",
+     "SPEECH OUTPUT: 'Summary: text '"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Â'",
+     "     VISIBLE:  'Â', cursor=1",
+     "SPEECH OUTPUT: 'Â'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Severity Link : normal Combo'",
+     "     VISIBLE:  'Severity Link : normal Combo', cursor=1",
+     "SPEECH OUTPUT: 'Severity link : normal combo box'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'OS Link : Linux Combo'",
+     "     VISIBLE:  'OS Link : Linux Combo', cursor=1",
+     "SPEECH OUTPUT: 'OS link : Linux combo box'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Unspecified Combo'",
+     "     VISIBLE:  'Unspecified Combo', cursor=0",
+     "SPEECH OUTPUT: 'Unspecified combo box'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BUG? - We really should land on version since it's split across lines",
+     "BRAILLE LINE:  'GNOME Link'",
+     "     VISIBLE:  'GNOME Link', cursor=1",
+     "SPEECH OUTPUT: 'GNOME link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Â'",
+     "     VISIBLE:  'Â', cursor=1",
+     "SPEECH OUTPUT: 'Â'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Version: List Component Link : List'",
+     "     VISIBLE:  'Version: List Component Link : L', cursor=1",
+     "SPEECH OUTPUT: 'Version: List with 9 items Component link : List with 5 items'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Reporter: joanmarie diggs gmail com Product: orca'",
+     "     VISIBLE:  'Reporter: joanmarie diggs gmail ', cursor=1",
+     "SPEECH OUTPUT: 'Reporter: joanmarie diggs gmail com Product: orca'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'reported bugs Link , and please search Link  or browse Link  for the bug.'",
+     "     VISIBLE:  'reported bugs Link , and please ', cursor=1",
+     "SPEECH OUTPUT: 'reported bugs link , and please search link  or browse link  for the bug.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Before reporting a bug, please read the bug writing guidelines Link , please look at the list of most frequently Link'",
+     "     VISIBLE:  'Before reporting a bug, please r', cursor=1",
+     "SPEECH OUTPUT: 'Before reporting a bug, please read the bug writing guidelines link , please look at the list of most frequently link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Enter Bug: orca â This page lets you enter a new bug into Bugzilla. h1'",
+     "     VISIBLE:  'Enter Bug: orca â This page le', cursor=1",
+     "SPEECH OUTPUT: 'Enter Bug: orca â This page lets you enter a new bug into Bugzilla. heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'New bug Link  Â Browse Link  Â Search Link  Â Reports Link  Â Account Link  Â Admin Link  Â Help Link Logged In joanmarie diggs gmail com | Log Out Link'",
+     "     VISIBLE:  'New bug Link  Â Browse Link  Â', cursor=1",
+     "SPEECH OUTPUT: 'New bug link  Â Browse link  Â Search link  Â Reports link  Â Account link  Â Admin link  Â Help link Logged In joanmarie diggs gmail com | Log Out link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Home Link Image Bugzilla'",
+     "     VISIBLE:  'Home Link Image Bugzilla', cursor=1",
+     "SPEECH OUTPUT: 'Home link image Bugzilla'"]))
+
+########################################################################
 # Move to the location bar by pressing Control+L.  When it has focus
 # type "about:blank" and press Return to restore the browser to the
 # conditions at the test's start.

Modified: trunk/test/keystrokes/firefox/line_nav_nested_tables.py
==============================================================================
--- trunk/test/keystrokes/firefox/line_nav_nested_tables.py	(original)
+++ trunk/test/keystrokes/firefox/line_nav_nested_tables.py	Fri Jan 18 08:36:28 2008
@@ -36,12 +36,8 @@
 sequence.append(KeyComboAction("<Control>Home"))
 sequence.append(utils.AssertPresentationAction(
     "Top of file",
-    ["BRAILLE LINE:  'nested-tables Link Image'",
-     "     VISIBLE:  'nested-tables Link Image', cursor=1",
-     "BRAILLE LINE:  'nested-tables Link Image'",
-     "     VISIBLE:  'nested-tables Link Image', cursor=1",
-     "SPEECH OUTPUT: 'nested-tables link image'",
-     "SPEECH OUTPUT: ''",
+    ["BRAILLE LINE:  'nested-tables Link Image'",
+     "     VISIBLE:  'nested-tables Link Image', cursor=0",
      "SPEECH OUTPUT: 'nested-tables link image'"]))
 
 ########################################################################

Modified: trunk/test/keystrokes/firefox/line_nav_wiki.py
==============================================================================
--- trunk/test/keystrokes/firefox/line_nav_wiki.py	(original)
+++ trunk/test/keystrokes/firefox/line_nav_wiki.py	Fri Jan 18 08:36:28 2008
@@ -20,7 +20,7 @@
 sequence.append(WaitForWindowActivate("Minefield",None))
 
 ########################################################################
-# Load the local "simple form" test case.
+# Load the local "wiki" test case.
 #
 sequence.append(KeyComboAction("<Control>l"))
 sequence.append(WaitForFocus("Location", acc_role=pyatspi.ROLE_ENTRY))
@@ -41,7 +41,7 @@
 sequence.append(utils.AssertPresentationAction(
     "Top of file", 
     ["BRAILLE LINE:  'Home Link News Link Projects Link Art Link Support Link Development Link Community Link'",
-     "     VISIBLE:  'News Link Projects Link Art Link', cursor=1",
+     "     VISIBLE:  'Home Link News Link Projects Lin', cursor=1",
      "SPEECH OUTPUT: 'Home link News link Projects link Art link Support link Development link Community link'"]))
 
 ########################################################################
@@ -761,6 +761,859 @@
      "     VISIBLE:  'Orca (last edited 2007-12-07 22:', cursor=1",
      "SPEECH OUTPUT: 'Orca (last edited 2007-12-07 22:09:22 by WillieWalker link )'"]))
 
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'User h3'",
+     "     VISIBLE:  'User h3', cursor=1",
+     "SPEECH OUTPUT: 'User heading  '",
+     "SPEECH OUTPUT: 'level 3'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'Login Link'",
+     "     VISIBLE:  'Login Link', cursor=1",
+     "SPEECH OUTPUT: 'Login link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'Page h3'",
+     "     VISIBLE:  'Page h3', cursor=1",
+     "SPEECH OUTPUT: 'Page heading  '",
+     "SPEECH OUTPUT: 'level 3'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'Immutable Page'",
+     "     VISIBLE:  'Immutable Page', cursor=1",
+     "SPEECH OUTPUT: 'Immutable Page'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'Info Link'",
+     "     VISIBLE:  'Info Link', cursor=1",
+     "SPEECH OUTPUT: 'Info link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'Attachments Link'",
+     "     VISIBLE:  'Attachments Link', cursor=1",
+     "SPEECH OUTPUT: 'Attachments link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'More Actions: Combo'",
+     "     VISIBLE:  'More Actions: Combo', cursor=0",
+     "SPEECH OUTPUT: 'More Actions: combo box'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Down",
+    ["BRAILLE LINE:  'GNOME World Wide h3'",
+     "     VISIBLE:  'GNOME World Wide h3', cursor=1",
+     "SPEECH OUTPUT: 'GNOME World Wide heading  '",
+     "SPEECH OUTPUT: 'level 3'"]))
+
+########################################################################
+# Up Arrow to the Top.
+#
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'More Actions: Combo'",
+     "     VISIBLE:  'More Actions: Combo', cursor=0",
+     "SPEECH OUTPUT: 'More Actions: combo box'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Attachments Link'",
+     "     VISIBLE:  'Attachments Link', cursor=1",
+     "SPEECH OUTPUT: 'Attachments link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Info Link'",
+     "     VISIBLE:  'Info Link', cursor=1",
+     "SPEECH OUTPUT: 'Info link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Immutable Page'",
+     "     VISIBLE:  'Immutable Page', cursor=1",
+     "SPEECH OUTPUT: 'Immutable Page'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Page h3'",
+     "     VISIBLE:  'Page h3', cursor=1",
+     "SPEECH OUTPUT: 'Page heading  '",
+     "SPEECH OUTPUT: 'level 3'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Login Link'",
+     "     VISIBLE:  'Login Link', cursor=1",
+     "SPEECH OUTPUT: 'Login link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'User h3'",
+     "     VISIBLE:  'User h3', cursor=1",
+     "SPEECH OUTPUT: 'User heading  '",
+     "SPEECH OUTPUT: 'level 3'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Orca (last edited 2007-12-07 22:09:22 by WillieWalker Link )'",
+     "     VISIBLE:  'Orca (last edited 2007-12-07 22:', cursor=1",
+     "SPEECH OUTPUT: 'Orca (last edited 2007-12-07 22:09:22 by WillieWalker link )'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'CategoryAccessibility Link'",
+     "     VISIBLE:  'CategoryAccessibility Link', cursor=1",
+     "SPEECH OUTPUT: 'CategoryAccessibility link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Separator'",
+     "     VISIBLE:  'Separator', cursor=1",
+     "SPEECH OUTPUT: 'separator'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.'",
+     "     VISIBLE:  'warranty of MERCHANTABILITY or F', cursor=1",
+     "SPEECH OUTPUT: 'warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied'",
+     "     VISIBLE:  'in the hope that it will be usef', cursor=1",
+     "SPEECH OUTPUT: 'in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'The information on this page and the other Orca-related pages on this site are distributed'",
+     "     VISIBLE:  'The information on this page and', cursor=1",
+     "SPEECH OUTPUT: 'The information on this page and the other Orca-related pages on this site are distributed'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Separator'",
+     "     VISIBLE:  'Separator', cursor=1",
+     "SPEECH OUTPUT: 'separator'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'â Python Pocket Reference, Mark Lutz Link'",
+     "     VISIBLE:  'â Python Pocket Reference, Mar', cursor=1",
+     "SPEECH OUTPUT: 'â Python Pocket Reference, Mark Lutz link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'â Python in a Nutshell, Alex Martelli Link'",
+     "     VISIBLE:  'â Python in a Nutshell, Alex M', cursor=1",
+     "SPEECH OUTPUT: 'â Python in a Nutshell, Alex Martelli link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'â Dive Into Python, Mark Pilgrim Link'",
+     "     VISIBLE:  'â Dive Into Python, Mark Pilgr', cursor=1",
+     "SPEECH OUTPUT: 'â Dive Into Python, Mark Pilgrim link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'â Design documents: Orca Documentation Series Link'",
+     "     VISIBLE:  'â Design documents: Orca Docum', cursor=1",
+     "SPEECH OUTPUT: 'â Design documents: Orca Documentation Series link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'â Bug database: GNOME Bug Tracking System (Bugzilla) Link  ( current bug list Link )'",
+     "     VISIBLE:  'â Bug database: GNOME Bug Trac', cursor=1",
+     "SPEECH OUTPUT: 'â Bug database: GNOME Bug Tracking System (Bugzilla) link  ( current bug list link )'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'â Mailing list: orca-list gnome org Link  ( Archives Link )'",
+     "     VISIBLE:  'â Mailing list: orca-list gnom', cursor=1",
+     "SPEECH OUTPUT: 'â Mailing list: orca-list gnome org link  ( Archives link )'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'â Frequently Asked Questions: FAQ Link'",
+     "     VISIBLE:  'â Frequently Asked Questions: ', cursor=1",
+     "SPEECH OUTPUT: 'â Frequently Asked Questions: FAQ link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'More Information h1'",
+     "     VISIBLE:  'More Information h1', cursor=1",
+     "SPEECH OUTPUT: 'More Information heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'information.'",
+     "     VISIBLE:  'information.', cursor=1",
+     "SPEECH OUTPUT: 'information.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'There's a bunch you can do! Please refer to the How Can I Help page Link  for detailed'",
+     "     VISIBLE:  'There's a bunch you can do! Plea', cursor=1",
+     "SPEECH OUTPUT: 'There's a bunch you can do! Please refer to the How Can I Help page link  for detailed'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'How Can I Help? h1'",
+     "     VISIBLE:  'How Can I Help? h1', cursor=1",
+     "SPEECH OUTPUT: 'How Can I Help? heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Please also refer to the Accessible Applications page Link  for detailed information.'",
+     "     VISIBLE:  'Please also refer to the Accessi', cursor=1",
+     "SPEECH OUTPUT: 'Please also refer to the Accessible Applications page link  for detailed information.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'application.'",
+     "     VISIBLE:  'application.', cursor=1",
+     "SPEECH OUTPUT: 'application.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'See also the Application Specific Settings Link  page for how to configure settings specific to an'",
+     "     VISIBLE:  'See also the Application Specifi', cursor=1",
+     "SPEECH OUTPUT: 'See also the Application Specific Settings link  page for how to configure settings specific to an'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'tested.'",
+     "     VISIBLE:  'tested.', cursor=1",
+     "SPEECH OUTPUT: 'tested.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'repository within which users can share experiences regarding applications they have'",
+     "     VISIBLE:  'repository within which users ca', cursor=1",
+     "SPEECH OUTPUT: 'repository within which users can share experiences regarding applications they have'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'them. The list is not to be a conclusive list of all applications. Rather, the goal is to provide a'",
+     "     VISIBLE:  'them. The list is not to be a co', cursor=1",
+     "SPEECH OUTPUT: 'them. The list is not to be a conclusive list of all applications. Rather, the goal is to provide a'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'various applications that can be accessed with Orca as well as tips and tricks for using'",
+     "     VISIBLE:  'various applications that can be', cursor=1",
+     "SPEECH OUTPUT: 'various applications that can be accessed with Orca as well as tips and tricks for using'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'On the Accessible Applications page Link , you will find a growing list of information regarding'",
+     "     VISIBLE:  'On the Accessible Applications p', cursor=1",
+     "SPEECH OUTPUT: 'On the Accessible Applications page link , you will find a growing list of information regarding'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'access to more and more applications.'",
+     "     VISIBLE:  'access to more and more applicat', cursor=1",
+     "SPEECH OUTPUT: 'access to more and more applications.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'than others, however, and the Orca community continually works to provide compelling'",
+     "     VISIBLE:  'than others, however, and the Or', cursor=1",
+     "SPEECH OUTPUT: 'than others, however, and the Orca community continually works to provide compelling'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'applications, OpenOffice Link , Firefox, and the Java platform. Some applications work better'",
+     "     VISIBLE:  'applications, OpenOffice Link , ', cursor=1",
+     "SPEECH OUTPUT: 'applications, OpenOffice link , Firefox, and the Java platform. Some applications work better'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'technology service provider interface (AT-SPI). This includes the GNOME desktop and its'",
+     "     VISIBLE:  'technology service provider inte', cursor=1",
+     "SPEECH OUTPUT: 'technology service provider interface (AT-SPI). This includes the GNOME desktop and its'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Orca is designed to work with applications and toolkits that support the assistive'",
+     "     VISIBLE:  'Orca is designed to work with ap', cursor=1",
+     "SPEECH OUTPUT: 'Orca is designed to work with applications and toolkits that support the assistive'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Accessible Applications h1'",
+     "     VISIBLE:  'Accessible Applications h1', cursor=1",
+     "SPEECH OUTPUT: 'Accessible Applications heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Please also refer to the Configuration/Use page Link  for detailed information.'",
+     "     VISIBLE:  'Please also refer to the Configu', cursor=1",
+     "SPEECH OUTPUT: 'Please also refer to the Configuration/Use page link  for detailed information.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'includes a \"Key Bindings\" tab that allows you to get a complete list of Orca key bindings.'",
+     "     VISIBLE:  'includes a \"Key Bindings\" tab th', cursor=1",
+     "SPEECH OUTPUT: 'includes a \"Key Bindings\" tab that allows you to get a complete list of Orca key bindings.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'information on Orca-specific keyboard commands. The Orca Configuration GUI Link  also'",
+     "     VISIBLE:  'information on Orca-specific key', cursor=1",
+     "SPEECH OUTPUT: 'information on Orca-specific keyboard commands. The Orca Configuration GUI link  also'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'mode to examine a window. Refer to Orca Keyboard Commands Link (Laptop Layout) Link  for more'",
+     "     VISIBLE:  'mode to examine a window. Refer ', cursor=1",
+     "SPEECH OUTPUT: 'mode to examine a window. Refer to Orca Keyboard Commands link (Laptop Layout) link  for more'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'GUI Link  (accessed by pressing Insert+Space when Orca is running) and for using flat review'",
+     "     VISIBLE:  'GUI Link  (accessed by pressing ', cursor=1",
+     "SPEECH OUTPUT: 'GUI link  (accessed by pressing Insert+Space when Orca is running) and for using flat review'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'You may sometimes wish to control Orca itself, such as bringing up the Orca Configuration Link'",
+     "     VISIBLE:  'You may sometimes wish to contro', cursor=1",
+     "SPEECH OUTPUT: 'You may sometimes wish to control Orca itself, such as bringing up the Orca Configuration link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'desktop applications.'",
+     "     VISIBLE:  'desktop applications.', cursor=1",
+     "SPEECH OUTPUT: 'desktop applications.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'mechanisms of GNOME Link . These navigation mechanisms are consistent across most'",
+     "     VISIBLE:  'mechanisms of GNOME Link . These', cursor=1",
+     "SPEECH OUTPUT: 'mechanisms of GNOME link . These navigation mechanisms are consistent across most'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'designed to present information as you navigate the desktop using the built-in navigation Link'",
+     "     VISIBLE:  'designed to present information ', cursor=1",
+     "SPEECH OUTPUT: 'designed to present information as you navigate the desktop using the built-in navigation link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'logged in, waiting for a second or so, then typing orca and pressing return. Orca is'",
+     "     VISIBLE:  'logged in, waiting for a second ', cursor=1",
+     "SPEECH OUTPUT: 'logged in, waiting for a second or so, then typing orca and pressing return. Orca is'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'The command to run orca is orca. You can enter this command by pressing Alt+F2 when'",
+     "     VISIBLE:  'The command to run orca is orca.', cursor=1",
+     "SPEECH OUTPUT: 'The command to run orca is orca. You can enter this command by pressing Alt+F2 when'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Configuration/Use h1'",
+     "     VISIBLE:  'Configuration/Use h1', cursor=1",
+     "SPEECH OUTPUT: 'Configuration/Use heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'distributions as well as installing Orca directly from source.'",
+     "     VISIBLE:  'distributions as well as install', cursor=1",
+     "SPEECH OUTPUT: 'distributions as well as installing Orca directly from source.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Please also refer to the Download/Installation page Link  for detailed information on various'",
+     "     VISIBLE:  'Please also refer to the Downloa', cursor=1",
+     "SPEECH OUTPUT: 'Please also refer to the Download/Installation page link  for detailed information on various'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'and Ubuntu Link .'",
+     "     VISIBLE:  'and Ubuntu Link .', cursor=1",
+     "SPEECH OUTPUT: 'and Ubuntu link .'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'provided by default on a number of operating system distributions, including Open Solaris Link'",
+     "     VISIBLE:  'provided by default on a number ', cursor=1",
+     "SPEECH OUTPUT: 'provided by default on a number of operating system distributions, including Open Solaris link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'As of GNOME 2.16, Orca is a part of the GNOME platform. As a result, Orca is already'",
+     "     VISIBLE:  'As of GNOME 2.16, Orca is a part', cursor=1",
+     "SPEECH OUTPUT: 'As of GNOME 2.16, Orca is a part of the GNOME platform. As a result, Orca is already'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Download/Installation h1'",
+     "     VISIBLE:  'Download/Installation h1', cursor=1",
+     "SPEECH OUTPUT: 'Download/Installation heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'â Guide to installing the latest versions of Firefox and Orca Link'",
+     "     VISIBLE:  'â Guide to installing the late', cursor=1",
+     "SPEECH OUTPUT: 'â Guide to installing the latest versions of Firefox and Orca link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'â Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop Link'",
+     "     VISIBLE:  'â Review of Fedora 7 and the O', cursor=1",
+     "SPEECH OUTPUT: 'â Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'â Walk through of the installation of Ubuntu 7.4. Very helpful tutorial Link'",
+     "     VISIBLE:  'â Walk through of the installa', cursor=1",
+     "SPEECH OUTPUT: 'â Walk through of the installation of Ubuntu 7.4. Very helpful tutorial link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'and include the following:'",
+     "     VISIBLE:  'and include the following:', cursor=1",
+     "SPEECH OUTPUT: 'and include the following:'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '(THANKS!)!!! The audio guides can be found at http://www.digitaldarragh.com/linuxat.asp Link'",
+     "     VISIBLE:  '(THANKS!)!!! The audio guides ca', cursor=1",
+     "SPEECH OUTPUT: '(THANKS!)!!! The audio guides can be found at http://www.digitaldarragh.com/linuxat.asp link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Darragh à HÃiligh Link  has created several audio guides for Orca. This is a fantastic contribution'",
+     "     VISIBLE:  'Darragh à HÃiligh Link  has cr', cursor=1",
+     "SPEECH OUTPUT: 'Darragh à HÃiligh link  has created several audio guides for Orca. This is a fantastic contribution'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Audio Guides h1'",
+     "     VISIBLE:  'Audio Guides h1', cursor=1",
+     "SPEECH OUTPUT: 'Audio Guides heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'productive environment composed of users and developers.'",
+     "     VISIBLE:  'productive environment composed ', cursor=1",
+     "SPEECH OUTPUT: 'productive environment composed of users and developers.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Please join and participate on the Orca mailing list Link  ( archives Link ): it's a helpful, kind, and'",
+     "     VISIBLE:  'Please join and participate on t', cursor=1",
+     "SPEECH OUTPUT: 'Please join and participate on the Orca mailing list link  ( archives link ): it's a helpful, kind, and'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '(please see our notes on how we use Bugzilla Link ).'",
+     "     VISIBLE:  '(please see our notes on how we ', cursor=1",
+     "SPEECH OUTPUT: '(please see our notes on how we use Bugzilla link ).'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'requests, along with known problems in other components, is maintained in Bugzilla Link'",
+     "     VISIBLE:  'requests, along with known probl', cursor=1",
+     "SPEECH OUTPUT: 'requests, along with known problems in other components, is maintained in Bugzilla link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'The complete list of work to do, including bugs and feature'",
+     "     VISIBLE:  'The complete list of work to do,', cursor=1",
+     "SPEECH OUTPUT: 'The complete list of work to do, including bugs and feature'"]))
+
+# We should be landing on this link but we're not.
+#
+#sequence.append(utils.StartRecordingAction())
+#sequence.append(KeyComboAction("Up"))
+#sequence.append(utils.AssertPresentationAction(
+#    "Line Up", 
+#    ["BRAILLE LINE:  'from many community members Link .'",
+#     "     VISIBLE:  'from many community members Link', cursor=1",
+#     "SPEECH OUTPUT: 'from many community members link .'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BUG? - We're missing a link that's split across two lines", 
+     "BRAILLE LINE:  'Program Office of Sun Microsystems, Inc. Link  with contributions Link'",
+     "     VISIBLE:  'Program Office of Sun Microsyste', cursor=1",
+     "SPEECH OUTPUT: 'Program Office of Sun Microsystems, Inc. link  with contributions link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'The development of Orca has been led by the Accessibility Link'",
+     "     VISIBLE:  'The development of Orca has been', cursor=1",
+     "SPEECH OUTPUT: 'The development of Orca has been led by the Accessibility link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'toolkits that support the AT-SPI (e.g., the GNOME desktop).'",
+     "     VISIBLE:  'toolkits that support the AT-SPI', cursor=1",
+     "SPEECH OUTPUT: 'toolkits that support the AT-SPI (e.g., the GNOME desktop).'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'magnification, Orca helps provide access to applications and'",
+     "     VISIBLE:  'magnification, Orca helps provid', cursor=1",
+     "SPEECH OUTPUT: 'magnification, Orca helps provide access to applications and'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'various combinations of speech synthesis, braille, and'",
+     "     VISIBLE:  'various combinations of speech s', cursor=1",
+     "SPEECH OUTPUT: 'various combinations of speech synthesis, braille, and'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'assistive technology for people with visual impairments. Using'",
+     "     VISIBLE:  'assistive technology for people ', cursor=1",
+     "SPEECH OUTPUT: 'assistive technology for people with visual impairments. Using'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Orca is a free, open source, flexible, extensible, and powerful'",
+     "     VISIBLE:  'Orca is a free, open source, fle', cursor=1",
+     "SPEECH OUTPUT: 'Orca is a free, open source, flexible, extensible, and powerful'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'About h1'",
+     "     VISIBLE:  'About h1', cursor=1",
+     "SPEECH OUTPUT: 'About heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '8. More Information Link'",
+     "     VISIBLE:  '8. More Information Link', cursor=1",
+     "SPEECH OUTPUT: '8. More Information link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '7. How Can I Help? Link'",
+     "     VISIBLE:  '7. How Can I Help? Link', cursor=1",
+     "SPEECH OUTPUT: '7. How Can I Help? link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '6. Accessible Applications Link'",
+     "     VISIBLE:  '6. Accessible Applications Link', cursor=1",
+     "SPEECH OUTPUT: '6. Accessible Applications link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '5. Configuration/Use Link'",
+     "     VISIBLE:  '5. Configuration/Use Link', cursor=1",
+     "SPEECH OUTPUT: '5. Configuration/Use link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '4. Download/Installation Link'",
+     "     VISIBLE:  '4. Download/Installation Link', cursor=1",
+     "SPEECH OUTPUT: '4. Download/Installation link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '3. Audio Guides Link'",
+     "     VISIBLE:  '3. Audio Guides Link', cursor=1",
+     "SPEECH OUTPUT: '3. Audio Guides link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '2. About Link'",
+     "     VISIBLE:  '2. About Link', cursor=1",
+     "SPEECH OUTPUT: '2. About link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '1. Welcome to Orca! Link'",
+     "     VISIBLE:  '1. Welcome to Orca! Link', cursor=1",
+     "SPEECH OUTPUT: '1. Welcome to Orca! link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Contents'",
+     "     VISIBLE:  'Contents', cursor=1",
+     "SPEECH OUTPUT: 'Contents'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'HOT HOT HOT: Notes on access to Firefox 3.0 Link'",
+     "     VISIBLE:  'HOT HOT HOT: Notes on access to ', cursor=1",
+     "SPEECH OUTPUT: 'HOT HOT HOT: Notes on access to Firefox 3.0 link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Orca Logo Link Image'",
+     "     VISIBLE:  'Orca Logo Link Image', cursor=1",
+     "SPEECH OUTPUT: 'Orca Logo link image'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Welcome to Orca! h1'",
+     "     VISIBLE:  'Welcome to Orca! h1', cursor=1",
+     "SPEECH OUTPUT: 'Welcome to Orca! heading  '",
+     "SPEECH OUTPUT: 'level 1'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  '( Archives Link ) | FAQ Link  | DocIndex Link'",
+     "     VISIBLE:  '( Archives Link ) | FAQ Link  | ', cursor=1",
+     "SPEECH OUTPUT: '( Archives link ) | FAQ link  | DocIndex link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'Home Link  | Download/Installation Link  | Configuration/Use Link  | Accessible Applications Link  | Mailing List Link'",
+     "     VISIBLE:  'Home Link  | Download/Installati', cursor=1",
+     "SPEECH OUTPUT: 'Home link  | Download/Installation link  | Configuration/Use link  | Accessible Applications link  | Mailing List link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up", 
+    ["BRAILLE LINE:  'en EspaÃol Link'",
+     "     VISIBLE:  'en EspaÃol Link', cursor=1",
+     "SPEECH OUTPUT: 'en EspaÃol link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Home Link RecentChanges Link FindPage Link HelpContents Link Orca Link'",
+     "     VISIBLE:  'Home Link RecentChanges Link Fin', cursor=1",
+     "SPEECH OUTPUT: 'Home link RecentChanges link FindPage link HelpContents link Orca link'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'live.gnome.org h1 Search $l Titles Button Text Button'",
+     "     VISIBLE:  'live.gnome.org h1 Search $l Titl', cursor=1",
+     "SPEECH OUTPUT: 'live.gnome.org heading  '",
+     "SPEECH OUTPUT: 'level 1'",
+     "SPEECH OUTPUT: 'text Search Titles button grayed Text button grayed'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Line Up",
+    ["BRAILLE LINE:  'Home Link News Link Projects Link Art Link Support Link Development Link Community Link'",
+     "     VISIBLE:  'Home Link News Link Projects Lin', cursor=1",
+     "SPEECH OUTPUT: 'Home link News link Projects link Art link Support link Development link Community link'"]))
+
 ########################################################################
 # Move to the location bar by pressing Control+L.  When it has focus
 # type "about:blank" and press Return to restore the browser to the

Modified: trunk/test/keystrokes/firefox/xul_role_accel_label.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_accel_label.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_accel_label.py	Fri Jan 18 08:36:28 2008
@@ -1,9 +1,11 @@
+# -*- coding: utf-8 -*-
 #!/usr/bin/python
 
 """Test of menu accelerator label output of Firefox.
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -20,117 +22,101 @@
 ########################################################################
 # Open the "File" menu.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>f"))
+sequence.append(utils.AssertPresentationAction(
+    "File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar File Menu'",
+     "     VISIBLE:  'File Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar New Window(Control N)'",
+     "     VISIBLE:  'New Window(Control N)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'File menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'New Window Control N'"]))
+
+########################################################################
+# Now, continue on down the menu.
+#
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar New Tab(Control T)'",
+     "     VISIBLE:  'New Tab(Control T)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'New Tab Control T'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Open Location...(Control L)'",
+     "     VISIBLE:  'Open Location...(Control L)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Open Locationâ Control L'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Open File...(Control O)'",
+     "     VISIBLE:  'Open File...(Control O)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Open Fileâ Control O'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Close(Control W)'",
+     "     VISIBLE:  'Close(Control W)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Close Control W'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Save Page As...(Control S)'",
+     "     VISIBLE:  'Save Page As...(Control S)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Save Page Asâ Control S'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Send Link...'",
+     "     VISIBLE:  'Send Link...', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Send Linkâ'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Page Setup...'",
+     "     VISIBLE:  'Page Setup...', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Page Setupâ'"]))
 
 ########################################################################
-# When the "New Window" menu item gets focus, the following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar New Window(Control N)'
-#      VISIBLE:  'New Window(Control N)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'New Window Control N'
-#
-sequence.append(WaitForFocus("New Window", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-########################################################################
-# Now, continue on down the menu.
-#
-# When the "New Tab" menu item gets focus, the following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar New Tab(Control T)'
-#      VISIBLE:  'New Tab(Control T)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'New Tab Control T'
-#
-sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("New Tab", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-########################################################################
-# Now, continue on down the menu.
-#
-# When the "Open Location..." menu item gets focus, the following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Open Location...(Control L)'
-#      VISIBLE:  'Open Location...(Control L)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Open Location... Control L'
-#
-sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("Open Location...", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-########################################################################
-# Now, continue on down the menu.
-#
-# When the "Open File..." menu item gets focus, the following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Open File...(Control O)'
-#      VISIBLE:  'Open File...(Control O)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Open File... Control O'
-#
-sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("Open File...", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-########################################################################
-# Now, continue on down the menu.
-#
-# When the "Close" menu item gets focus, the following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Close(Control W)'
-#      VISIBLE:  'Close(Control W)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Close Control W'
-#
-sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("Close", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-########################################################################
-# Now, continue on down the menu.
-#
-# When the "Save Page As..." menu item gets focus, the following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Save Page As...(Control S)'
-#      VISIBLE:  'Save Page As...(Control S)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Save Page As... Control S'
-#
-sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("Save Page As...", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-########################################################################
-# Now, continue on down the menu.
-#
-# When the "Send Link..." menu item gets focus, the following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Send Link...'
-#      VISIBLE:  'Send Link...', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Send Link...'
-#
-sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("Send Link...", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-########################################################################
-# Do a basic "Where Am I" via KP_Enter.  The following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Send Link...'
-#      VISIBLE:  'Send Link...', cursor=1
-# SPEECH OUTPUT: 'File menu'
-# SPEECH OUTPUT: 'Send Link...'
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'item 7 of 13'
-# SPEECH OUTPUT: ''
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Page Setup...'",
+     "     VISIBLE:  'Page Setup...', cursor=1",
+     "SPEECH OUTPUT: 'tool bar'",
+     "SPEECH OUTPUT: 'File menu'",
+     "SPEECH OUTPUT: 'Page Setupâ'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'item 8 of 13'",
+     "SPEECH OUTPUT: ''"]))
 
 ########################################################################
 # Dismiss the menu by pressing Escape and wait for the location bar

Modified: trunk/test/keystrokes/firefox/xul_role_alert.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_alert.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_alert.py	Fri Jan 18 08:36:28 2008
@@ -4,6 +4,7 @@
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -20,19 +21,23 @@
 sequence.append(WaitForFocus("Location", acc_role=pyatspi.ROLE_ENTRY))
 
 sequence.append(TypeAction("javascript:alert('I am an alert')"))
-sequence.append(KeyComboAction("Return"))
 
-########################################################################
-# An alert will appear displaying the text "I am an alert" and the
-# "OK" push button.  [[[Bug? It seems we're only displaying the title
-# of the alert in braille; the contents are being spoken.  Is this
-# the desired behavior??]]]
-#
-# BRAILLE LINE:  'Minefield Application [JavaScript Application] Alert'
-#      VISIBLE:  '[JavaScript Application] Alert', cursor=1
-# SPEECH OUTPUT: '[JavaScript Application] I am an alert'
-#
-sequence.append(WaitForWindowActivate("[JavaScript Application]",None))
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Return"))
+sequence.append(utils.AssertPresentationAction(
+    "Press Return to make the alert appear",
+    ["BRAILLE LINE:  'about:blank HtmlPane'",
+     "     VISIBLE:  'about:blank HtmlPane', cursor=1",
+     "BRAILLE LINE:  'Minefield Application [JavaScript Application] Dialog'",
+     "     VISIBLE:  '[JavaScript Application] Dialog', cursor=1",
+     "BRAILLE LINE:  'Minefield Application [JavaScript Application] Dialog OK Button'",
+     "     VISIBLE:  'OK Button', cursor=1",
+     "SPEECH OUTPUT: 'about:blank panel'",
+     "SPEECH OUTPUT: 'about:blank html content'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: '[JavaScript Application] I am an alert'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'OK button'"]))
 
 ########################################################################
 # Focus will be on the OK button. [[[Bug: We don't get a focus event 
@@ -40,8 +45,18 @@
 # known issue.]]]  Press space bar on the OK button to dismiss the
 # alert and return to the Firefox main window.
 #
-sequence.append(TypeAction(" "))
-sequence.append(WaitForWindowActivate("Minefield",None))
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Return"))
+sequence.append(utils.AssertPresentationAction(
+    "Press Space on the OK button to dismiss the alert",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame'",
+     "     VISIBLE:  'Minefield Frame', cursor=1",
+     "BRAILLE LINE:  'about:blank HtmlPane'",
+     "     VISIBLE:  'about:blank HtmlPane', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Minefield frame'",
+     "SPEECH OUTPUT: 'about:blank panel'",
+     "SPEECH OUTPUT: 'about:blank html content'"]))
 
 ########################################################################
 # Move to the location bar by pressing Control+L.  When it has focus

Modified: trunk/test/keystrokes/firefox/xul_role_check_menu_item.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_check_menu_item.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_check_menu_item.py	Fri Jan 18 08:36:28 2008
@@ -4,6 +4,7 @@
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -15,40 +16,50 @@
 ########################################################################
 # Open the "View" menu.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>v"))
-sequence.append(WaitForFocus("Toolbars", acc_role=pyatspi.ROLE_MENU))
+sequence.append(utils.AssertPresentationAction(
+    "View menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar View Menu'",
+     "     VISIBLE:  'View Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Toolbars Menu'",
+     "     VISIBLE:  'Toolbars Menu', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'View menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Toolbars menu'"]))
 
 ########################################################################
 # When focus is on Toolbars, Up Arrow to the "Full Screen" check menu
 # item. The following should be presented in speech and braille:
 #
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar < > Full Screen CheckItem(F11)'
-#      VISIBLE:  '< > Full Screen CheckItem(F11)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Full Screen check item not checked F11'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
-sequence.append(WaitForFocus("Full Screen", acc_role=pyatspi.ROLE_CHECK_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Up Arrow in View menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar < > Full Screen CheckItem(F11)'",
+     "     VISIBLE:  '< > Full Screen CheckItem(F11)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Full Screen check item not checked F11'"]))
 
 ########################################################################
-# Do a basic "Where Am I" via KP_Enter.  The following should be
-# presented in speech and braille:
-#
-# [[[BUG: Due to https://bugzilla.mozilla.org/show_bug.cgi?id=396799,
-# We might not speak the item count.]]]
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar < > Full Screen CheckItem(F11)'
-#      VISIBLE:  '< > Full Screen CheckItem(F11)', cursor=1
-# SPEECH OUTPUT: 'View menu'
-# SPEECH OUTPUT: 'Full Screen'
-# SPEECH OUTPUT: 'check item'
-# SPEECH OUTPUT: 'not checked'
-# SPEECH OUTPUT: 'F11'
-# SPEECH OUTPUT: 'item 10 of 10'
-# SPEECH OUTPUT: ''
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar < > Full Screen CheckItem(F11)'",
+     "     VISIBLE:  '< > Full Screen CheckItem(F11)', cursor=1",
+     "SPEECH OUTPUT: 'tool bar'",
+     "SPEECH OUTPUT: 'View menu'",
+     "SPEECH OUTPUT: 'Full Screen'",
+     "SPEECH OUTPUT: 'check item'",
+     "SPEECH OUTPUT: 'not checked'",
+     "SPEECH OUTPUT: 'F11'",
+     "SPEECH OUTPUT: 'item 10 of 10'",
+     "SPEECH OUTPUT: ''"]))
 
 ########################################################################
 # Dismiss the menu by pressing Escape and wait for the location bar

Modified: trunk/test/keystrokes/firefox/xul_role_entry.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_entry.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_entry.py	Fri Jan 18 08:36:28 2008
@@ -1,9 +1,11 @@
+# -*- coding: utf-8 -*-
 #!/usr/bin/python
 
 """Test of entry output using Firefox.
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -13,162 +15,272 @@
 sequence.append(WaitForWindowActivate("Minefield",None))
 
 ########################################################################
-# Open the "Bookmarks" menu, Down Arrow to Organize Bookmarks, then 
+# Open the "Bookmarks" menu, Down Arrow to Show All Bookmarks, then 
 # press Return.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>b"))
-sequence.append(WaitForFocus("Bookmarks", acc_role=pyatspi.ROLE_MENU))
+sequence.append(utils.AssertPresentationAction(
+    "Bookmarks menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Bookmarks Menu'",
+     "     VISIBLE:  'Bookmarks Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Bookmark This Page(Control D)'",
+     "     VISIBLE:  'Bookmark This Page(Control D)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Bookmarks menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Bookmark This Page Control D'"]))
 
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("Bookmark This Page...", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("Organize Bookmarks...", acc_role=pyatspi.ROLE_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in Bookmarks menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Show All Bookmarks...'",
+     "     VISIBLE:  'Show All Bookmarks...', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Show All Bookmarksâ'"]))
 
 sequence.append(KeyComboAction("Return"))
 
 ########################################################################
-# We wait for the focus to be in the Places Organizer window.
-#
-sequence.append(WaitForWindowActivate("Places Organizer",None))
-
-########################################################################
 # Press Shift+F10 to bring up a context menu then Down Arrow once to
 # get to "New Bookmark..." and press Return.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>F10"))
+sequence.append(utils.AssertPresentationAction(
+    "Shift F10 for context menu",
+    ["BRAILLE LINE:  'Minefield Application Library Frame Menu'",
+     "     VISIBLE:  'Menu', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'menu'"]))
 
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("New Bookmark...", acc_role=pyatspi.ROLE_MENU_ITEM))
-
-sequence.append(KeyComboAction("Return"))
-
-########################################################################
-# Note:  I'm getting inconsistent results in the playback.  For instance
-# sometimes we type the initial letter in the TypeAction string twice.
-# Sometimes the speech and braille for deleted text seems to be based
-# on starting at a different location.  Therefore, I'm adding delays
-# and pauses in key locations in the hopes of giving everything enough
-# time to "catch up."
-#
-sequence.append(PauseAction(1000))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in context menu",
+    ["BRAILLE LINE:  'Minefield Application Library Frame New Bookmark...'",
+     "     VISIBLE:  'New Bookmark...', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'New Bookmarkâ'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Return", 1000))
+sequence.append(utils.AssertPresentationAction(
+    "Return for a new bookmark",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog'",
+     "     VISIBLE:  'Add Bookmark Dialog', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Add Bookmark'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Name: text '"]))
 
 ########################################################################
 # Focus will be in the Name single-line entry.  Type "this is a test"
 #
-# After it is all written, the following appears in braille.  (Key
-# echo handles the speech.)
-#
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a test $l'
-#      VISIBLE:  'this is a test $l', cursor=14
-# 
-sequence.append(WaitForFocus("Name:", acc_role=pyatspi.ROLE_ENTRY))
+sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction("this is a test"))
+sequence.append(utils.AssertPresentationAction(
+    "Type 'this is a test'",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog t $l'",
+     "     VISIBLE:  't $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog th $l'",
+     "     VISIBLE:  'th $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog thi $l'",
+     "     VISIBLE:  'thi $l', cursor=3",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this $l'",
+     "     VISIBLE:  'this $l', cursor=4",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this  $l'",
+     "     VISIBLE:  'this  $l', cursor=5",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this i $l'",
+     "     VISIBLE:  'this i $l', cursor=6",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is $l'",
+     "     VISIBLE:  'this is $l', cursor=7",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is  $l'",
+     "     VISIBLE:  'this is  $l', cursor=8",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a $l'",
+     "     VISIBLE:  'this is a $l', cursor=9",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a  $l'",
+     "     VISIBLE:  'this is a  $l', cursor=10",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a t $l'",
+     "     VISIBLE:  'this is a t $l', cursor=11",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a te $l'",
+     "     VISIBLE:  'this is a te $l', cursor=12",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a tes $l'",
+     "     VISIBLE:  'this is a tes $l', cursor=13",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a test $l'",
+     "     VISIBLE:  'this is a test $l', cursor=14"]))
 
 ########################################################################
 # Backspace 5 times (thus removing "<space>test" from the right)
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a test $l'
-#      VISIBLE:  'this is a test $l', cursor=15
-# SPEECH OUTPUT: 't'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a tes $l'
-#      VISIBLE:  'this is a tes $l', cursor=14
-# SPEECH OUTPUT: 's'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a te $l'
-#      VISIBLE:  'this is a te $l', cursor=13
-# SPEECH OUTPUT: 'e'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a t $l'
-#      VISIBLE:  'this is a t $l', cursor=12
-# SPEECH OUTPUT: 't'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a  $l'
-#      VISIBLE:  'this is a  $l', cursor=11
-# SPEECH OUTPUT: ' '
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("BackSpace"))
+sequence.append(utils.AssertPresentationAction(
+    "Backspace",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a test $l'",
+     "     VISIBLE:  'this is a test $l', cursor=15",
+     "SPEECH OUTPUT: 't'",]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("BackSpace"))
+sequence.append(utils.AssertPresentationAction(
+    "Backspace",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a tes $l'",
+     "     VISIBLE:  'this is a tes $l', cursor=14",
+     "SPEECH OUTPUT: 's'"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("BackSpace"))
+sequence.append(utils.AssertPresentationAction(
+    "Backspace",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a te $l'",
+     "     VISIBLE:  'this is a te $l', cursor=13",
+     "SPEECH OUTPUT: 'e'"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("BackSpace"))
+sequence.append(utils.AssertPresentationAction(
+    "Backspace",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a t $l'",
+     "     VISIBLE:  'this is a t $l', cursor=12",
+     "SPEECH OUTPUT: 't'"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("BackSpace"))
+sequence.append(utils.AssertPresentationAction(
+    "Backspace",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a  $l'",
+     "     VISIBLE:  'this is a  $l', cursor=11",
+     "SPEECH OUTPUT: ' '"]))
 
 ########################################################################
 # Control Backspace 3 times thus removing "this is a" word by word from
 # the right.
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a $l'
-#      VISIBLE:  'this is a $l', cursor=9
-# SPEECH OUTPUT: 'a'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is  $l'
-#      VISIBLE:  'this is  $l', cursor=6
-# SPEECH OUTPUT: 'is '
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this  $l'
-#      VISIBLE:  'this  $l', cursor=1
-# SPEECH OUTPUT: 'this '
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>BackSpace"))
+sequence.append(utils.AssertPresentationAction(
+    "Control Backspace",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is a $l'",
+     "     VISIBLE:  'this is a $l', cursor=9",
+     "SPEECH OUTPUT: 'a'"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>BackSpace"))
+sequence.append(utils.AssertPresentationAction(
+    "Control Backspace",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this is  $l'",
+     "     VISIBLE:  'this is  $l', cursor=6",
+     "SPEECH OUTPUT: 'is '"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>BackSpace"))
+sequence.append(utils.AssertPresentationAction(
+    "Control Backspace",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this  $l'",
+     "     VISIBLE:  'this  $l', cursor=1",
+     "SPEECH OUTPUT: 'this '"]))
 
 ########################################################################
 # Type "so is this"
 #
-# After it is all written, the following appears in braille.  (Key
-# echo handles the speech.)
-#
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'
-#      VISIBLE:  'so is this $l', cursor=11
-#
-sequence.append(PauseAction(1000))
+sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction("so is this"))
+sequence.append(utils.AssertPresentationAction(
+    "Type 'so is this'",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog s $l'",
+     "     VISIBLE:  's $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so $l'",
+     "     VISIBLE:  'so $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so  $l'",
+     "     VISIBLE:  'so  $l', cursor=3",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so i $l'",
+     "     VISIBLE:  'so i $l', cursor=4",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is $l'",
+     "     VISIBLE:  'so is $l', cursor=5",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is  $l'",
+     "     VISIBLE:  'so is  $l', cursor=6",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is t $l'",
+     "     VISIBLE:  'so is t $l', cursor=7",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is th $l'",
+     "     VISIBLE:  'so is th $l', cursor=8",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is thi $l'",
+     "     VISIBLE:  'so is thi $l', cursor=9",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'",
+     "     VISIBLE:  'so is this $l', cursor=10"]))
 
 ########################################################################
 # Press Left Arrow 4 times to get to the beginning of "this"
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'
-#      VISIBLE:  'so is this $l', cursor=10
-# SPEECH OUTPUT: 's'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'
-#      VISIBLE:  'so is this $l', cursor=9
-# SPEECH OUTPUT: 'i'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'
-#      VISIBLE:  'so is this $l', cursor=8
-# SPEECH OUTPUT: 'h'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'
-#      VISIBLE:  'so is this $l', cursor=7
-# SPEECH OUTPUT: 't'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
+sequence.append(utils.AssertPresentationAction(
+    "Left",
+    ["BUG? - We're not speaking or brailling anything here!",
+     ""]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
+sequence.append(utils.AssertPresentationAction(
+    "Left",
+    ["BUG? - We're not speaking or brailling anything here!",
+     ""]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
+sequence.append(utils.AssertPresentationAction(
+    "Left",
+    ["BUG? - We're not speaking or brailling anything here!",
+     ""]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
+sequence.append(utils.AssertPresentationAction(
+    "Left",
+    ["BUG? - We're not speaking or brailling anything here!",
+     ""]))
 
 ########################################################################
 # Press Control Left Arrow twice to get to the beginning of the 
 # line.
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'
-#      VISIBLE:  'so is this $l', cursor=4
-# SPEECH OUTPUT: 'is '
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'
-#      VISIBLE:  'so is this $l', cursor=1
-# SPEECH OUTPUT: 'so '
-#
-sequence.append(KeyComboAction("<Control>Left"))
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
+sequence.append(utils.AssertPresentationAction(
+    "Control Left",
+    ["BUG? - We're not speaking or brailling anything here!",
+     ""]))
 
-########################################################################
-# Press Control Delete twice to get rid of "so is".  [[[Bug:  We are
-# speaking the new caret location -- we land on a space -- rather than
-# the word that was just deleted.]]] 
-#
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'
-#      VISIBLE:  'so is this $l', cursor=3
-# SPEECH OUTPUT: ' '
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  is this $l'
-#      VISIBLE:  ' is this $l', cursor=4
-# SPEECH OUTPUT: ' '
-#
-sequence.append(KeyComboAction("<Control>Delete", 500))
-sequence.append(KeyComboAction("<Control>Delete", 500))
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Left"))
+sequence.append(utils.AssertPresentationAction(
+    "Control Left",
+    ["BUG? - We're not speaking or brailling anything here!",
+     ""]))
+
+########################################################################
+# Press Control Delete twice to get rid of "so is".  [[[Bug:  ]]] 
+#
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Delete"))
+sequence.append(utils.AssertPresentationAction(
+    "Control Delete",
+    ["BUG? - We are speaking the new caret location -- we land on a space -- rather than the word that was just deleted.",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog so is this $l'",
+     "     VISIBLE:  'so is this $l', cursor=3",
+     "SPEECH OUTPUT: ' '"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Delete"))
+sequence.append(utils.AssertPresentationAction(
+    "Control Delete",
+    ["BUG? - We are speaking the new caret location -- we land on a space -- rather than the word that was just deleted.",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  is this $l'",
+     "     VISIBLE:  ' is this $l', cursor=4",
+     "SPEECH OUTPUT: ' '"]))
 
 ########################################################################
 # Press Delete 5 times to delete "<space>this".  [[[Note:  I don't get
@@ -178,119 +290,342 @@
 # launched first, I also get the expected output. Here it seems to be 
 # speaking the character that was just deleted.]]]
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  this $l'
-#      VISIBLE:  ' this $l', cursor=1
-# SPEECH OUTPUT: ' '
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this $l'
-#      VISIBLE:  'this $l', cursor=1
-# SPEECH OUTPUT: 't'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog his $l'
-#      VISIBLE:  'his $l', cursor=1
-# SPEECH OUTPUT: 'h'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog is $l'
-#      VISIBLE:  'is $l', cursor=1
-# SPEECH OUTPUT: 'i'
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog s $l'
-#      VISIBLE:  's $l', cursor=1
-# SPEECH OUTPUT: 's'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Delete", 500))
+sequence.append(utils.AssertPresentationAction(
+    "Delete",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  this $l'",
+     "     VISIBLE:  ' this $l', cursor=1",
+     "SPEECH OUTPUT: ' '"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Delete", 500))
+sequence.append(utils.AssertPresentationAction(
+    "Delete",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog this $l'",
+     "     VISIBLE:  'this $l', cursor=1",
+     "SPEECH OUTPUT: 't'"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Delete", 500))
+sequence.append(utils.AssertPresentationAction(
+    "Delete",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog his $l'",
+     "     VISIBLE:  'his $l', cursor=1",
+     "SPEECH OUTPUT: 'h'"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Delete", 500))
+sequence.append(utils.AssertPresentationAction(
+    "Delete",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog is $l'",
+     "     VISIBLE:  'is $l', cursor=1",
+     "SPEECH OUTPUT: 'i'"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Delete", 500))
+sequence.append(utils.AssertPresentationAction(
+    "Delete",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog s $l'",
+     "     VISIBLE:  's $l', cursor=1",
+     "SPEECH OUTPUT: 's'"]))
 
 ########################################################################
 # Press Tab to get to the Location entry.
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'
-#      VISIBLE:  ' $l', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Location: text '
-#
-sequence.append(KeyComboAction("Tab", 1000))
-sequence.append(WaitForFocus("Location:", acc_role=pyatspi.ROLE_ENTRY))
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Tab"))
+sequence.append(utils.AssertPresentationAction(
+    "Tab to Location",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Location: text '"]))
 
 ########################################################################
 # Press Tab to get to the Keyword entry.
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Keyword: text '
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
-sequence.append(WaitForFocus("Keyword:", acc_role=pyatspi.ROLE_ENTRY))
+sequence.append(utils.AssertPresentationAction(
+    "Tab to Keyword",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Keyword: text '"]))
 
 ########################################################################
 # Press Tab to get to the Description entry.
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Description: text '
-#
-
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
-sequence.append(WaitForFocus("Description:", acc_role=pyatspi.ROLE_ENTRY))
+sequence.append(utils.AssertPresentationAction(
+    "Tab to Description",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Description: text '"]))
 
 ########################################################################
 # Type "Here is the first line."  Press Return.  
 #
-# After it is all written, the following appears in braille.  (Key
-# echo handles the speech.)
-#
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first line $l'
-#      VISIBLE:  'Here is the first line $l', cursor=22
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction("Here is the first line."))
+sequence.append(utils.AssertPresentationAction(
+    "Type 'Here is the first line.'",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog H $l'",
+     "     VISIBLE:  'H $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog H $l'",
+     "     VISIBLE:  'H $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog H $l'",
+     "     VISIBLE:  'H $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog He $l'",
+     "     VISIBLE:  'He $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog He $l'",
+     "     VISIBLE:  'He $l', cursor=3",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Her $l'",
+     "     VISIBLE:  'Her $l', cursor=3",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Her $l'",
+     "     VISIBLE:  'Her $l', cursor=4",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here $l'",
+     "     VISIBLE:  'Here $l', cursor=4",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here $l'",
+     "     VISIBLE:  'Here $l', cursor=5",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here  $l'",
+     "     VISIBLE:  'Here  $l', cursor=5",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here  $l'",
+     "     VISIBLE:  'Here  $l', cursor=6",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here i $l'",
+     "     VISIBLE:  'Here i $l', cursor=6",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here i $l'",
+     "     VISIBLE:  'Here i $l', cursor=7",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is $l'",
+     "     VISIBLE:  'Here is $l', cursor=7",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is $l'",
+     "     VISIBLE:  'Here is $l', cursor=8",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is  $l'",
+     "     VISIBLE:  'Here is  $l', cursor=8",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is  $l'",
+     "     VISIBLE:  'Here is  $l', cursor=9",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is t $l'",
+     "     VISIBLE:  'Here is t $l', cursor=9",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is t $l'",
+     "     VISIBLE:  'Here is t $l', cursor=10",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is th $l'",
+     "     VISIBLE:  'Here is th $l', cursor=10",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is th $l'",
+     "     VISIBLE:  'Here is th $l', cursor=11",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the $l'",
+     "     VISIBLE:  'Here is the $l', cursor=11",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the $l'",
+     "     VISIBLE:  'Here is the $l', cursor=12",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the  $l'",
+     "     VISIBLE:  'Here is the  $l', cursor=12",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the  $l'",
+     "     VISIBLE:  'Here is the  $l', cursor=13",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the f $l'",
+     "     VISIBLE:  'Here is the f $l', cursor=13",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the f $l'",
+     "     VISIBLE:  'Here is the f $l', cursor=14",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the fi $l'",
+     "     VISIBLE:  'Here is the fi $l', cursor=14",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the fi $l'",
+     "     VISIBLE:  'Here is the fi $l', cursor=15",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the fir $l'",
+     "     VISIBLE:  'Here is the fir $l', cursor=15",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the fir $l'",
+     "     VISIBLE:  'Here is the fir $l', cursor=16",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the firs $l'",
+     "     VISIBLE:  'Here is the firs $l', cursor=16",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the firs $l'",
+     "     VISIBLE:  'Here is the firs $l', cursor=17",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first $l'",
+     "     VISIBLE:  'Here is the first $l', cursor=17",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first $l'",
+     "     VISIBLE:  'Here is the first $l', cursor=18",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first  $l'",
+     "     VISIBLE:  'Here is the first  $l', cursor=18",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first  $l'",
+     "     VISIBLE:  'Here is the first  $l', cursor=19",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first l $l'",
+     "     VISIBLE:  'Here is the first l $l', cursor=19",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first l $l'",
+     "     VISIBLE:  'Here is the first l $l', cursor=20",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first li $l'",
+     "     VISIBLE:  'Here is the first li $l', cursor=20",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first li $l'",
+     "     VISIBLE:  'Here is the first li $l', cursor=21",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first lin $l'",
+     "     VISIBLE:  'Here is the first lin $l', cursor=21",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first lin $l'",
+     "     VISIBLE:  'Here is the first lin $l', cursor=22",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first line $l'",
+     "     VISIBLE:  'Here is the first line $l', cursor=22",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first line $l'",
+     "     VISIBLE:  'Here is the first line $l', cursor=23",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first line. $l'",
+     "     VISIBLE:  'Here is the first line. $l', cursor=23",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first line. $l'",
+     "     VISIBLE:  'Here is the first line. $l', cursor=24"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
+sequence.append(utils.AssertPresentationAction(
+    "Return for new line'",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog  $l'",
+     "     VISIBLE:  ' $l', cursor=1"]))
 
 ########################################################################
 # Type "Here is the second line."
 #
-# After it is all written, the following appears in braille.  (Key
-# echo handles the speech.)
-#
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line. $l'
-#      VISIBLE:  'Here is the second line. $l', cursor=25
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction("Here is the second line."))
+sequence.append(utils.AssertPresentationAction(
+    "Type 'Here is the second line.'",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog H $l'",
+     "     VISIBLE:  'H $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog H $l'",
+     "     VISIBLE:  'H $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog He $l'",
+     "     VISIBLE:  'He $l', cursor=2",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog He $l'",
+     "     VISIBLE:  'He $l', cursor=3",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Her $l'",
+     "     VISIBLE:  'Her $l', cursor=3",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Her $l'",
+     "     VISIBLE:  'Her $l', cursor=4",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here $l'",
+     "     VISIBLE:  'Here $l', cursor=4",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here $l'",
+     "     VISIBLE:  'Here $l', cursor=5",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here  $l'",
+     "     VISIBLE:  'Here  $l', cursor=5",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here  $l'",
+     "     VISIBLE:  'Here  $l', cursor=6",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here i $l'",
+     "     VISIBLE:  'Here i $l', cursor=6",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here i $l'",
+     "     VISIBLE:  'Here i $l', cursor=7",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is $l'",
+     "     VISIBLE:  'Here is $l', cursor=7",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is $l'",
+     "     VISIBLE:  'Here is $l', cursor=8",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is  $l'",
+     "     VISIBLE:  'Here is  $l', cursor=8",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is  $l'",
+     "     VISIBLE:  'Here is  $l', cursor=9",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is t $l'",
+     "     VISIBLE:  'Here is t $l', cursor=9",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is t $l'",
+     "     VISIBLE:  'Here is t $l', cursor=10",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is th $l'",
+     "     VISIBLE:  'Here is th $l', cursor=10",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is th $l'",
+     "     VISIBLE:  'Here is th $l', cursor=11",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the $l'",
+     "     VISIBLE:  'Here is the $l', cursor=11",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the $l'",
+     "     VISIBLE:  'Here is the $l', cursor=12",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the  $l'",
+     "     VISIBLE:  'Here is the  $l', cursor=12",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the  $l'",
+     "     VISIBLE:  'Here is the  $l', cursor=13",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the s $l'",
+     "     VISIBLE:  'Here is the s $l', cursor=13",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the s $l'",
+     "     VISIBLE:  'Here is the s $l', cursor=14",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the se $l'",
+     "     VISIBLE:  'Here is the se $l', cursor=14",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the se $l'",
+     "     VISIBLE:  'Here is the se $l', cursor=15",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the sec $l'",
+     "     VISIBLE:  'Here is the sec $l', cursor=15",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the sec $l'",
+     "     VISIBLE:  'Here is the sec $l', cursor=16",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the seco $l'",
+     "     VISIBLE:  'Here is the seco $l', cursor=16",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the seco $l'",
+     "     VISIBLE:  'Here is the seco $l', cursor=17",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the secon $l'",
+     "     VISIBLE:  'Here is the secon $l', cursor=17",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the secon $l'",
+     "     VISIBLE:  'Here is the secon $l', cursor=18",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second $l'",
+     "     VISIBLE:  'Here is the second $l', cursor=18",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second $l'",
+     "     VISIBLE:  'Here is the second $l', cursor=19",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second  $l'",
+     "     VISIBLE:  'Here is the second  $l', cursor=19",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second  $l'",
+     "     VISIBLE:  'Here is the second  $l', cursor=20",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second l $l'",
+     "     VISIBLE:  'Here is the second l $l', cursor=20",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second l $l'",
+     "     VISIBLE:  'Here is the second l $l', cursor=21",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second li $l'",
+     "     VISIBLE:  'Here is the second li $l', cursor=21",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second li $l'",
+     "     VISIBLE:  'Here is the second li $l', cursor=22",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second lin $l'",
+     "     VISIBLE:  'Here is the second lin $l', cursor=22",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second lin $l'",
+     "     VISIBLE:  'Here is the second lin $l', cursor=23",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line $l'",
+     "     VISIBLE:  'Here is the second line $l', cursor=23",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line $l'",
+     "     VISIBLE:  'Here is the second line $l', cursor=24",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line. $l'",
+     "     VISIBLE:  'Here is the second line. $l', cursor=24",
+     "BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line. $l'",
+     "     VISIBLE:  'Here is the second line. $l', cursor=25"]))
 
 ########################################################################
 # Press Up Arrow to read the first line.
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first line. $l'
-#      VISIBLE:  'Here is the first line. $l', cursor=24
-# SPEECH OUTPUT: 'Here is the first line.'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
+sequence.append(utils.AssertPresentationAction(
+    "Up Arrow",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the first line. $l'",
+     "     VISIBLE:  'Here is the first line. $l', cursor=24",
+     "SPEECH OUTPUT: 'Here is the first line.'"]))
 
 ########################################################################
 # Press Down Arrow to read the first line.
 #
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line. $l'
-#      VISIBLE:  'Here is the second line. $l', cursor=25
-# SPEECH OUTPUT: 'Here is the second line.'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow",
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line. $l'",
+     "     VISIBLE:  'Here is the second line. $l', cursor=25",
+     "SPEECH OUTPUT: 'Here is the second line.'"]))
 
 ########################################################################
-# Press KP_Enter to get where am I information for this item. 
-#
-# BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line. $l'
-#      VISIBLE:  'Here is the second line. $l', cursor=25
-# SPEECH OUTPUT: 'Here is the first line.
-# Here is the second line.'
-# SPEECH OUTPUT: 'text'
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Minefield Application Add Bookmark Dialog Here is the second line. $l'",
+     "     VISIBLE:  'Here is the second line. $l', cursor=25",
+     "SPEECH OUTPUT: 'Here is the first line.",
+     "Here is the second line.'",
+     "SPEECH OUTPUT: 'text'"]))
 
-########################################################################
+########################################################
 # Press Escape to dismiss the dialog.  Focus should return to the
 # Places Organizer.
 #
 sequence.append(KeyComboAction("Escape"))
-sequence.append(WaitForWindowActivate("Places Organizer",None))
 
 ########################################################################
 # Now that the Places Manager is back to its pre-explored state,

Modified: trunk/test/keystrokes/firefox/xul_role_list_item.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_list_item.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_list_item.py	Fri Jan 18 08:36:28 2008
@@ -4,6 +4,7 @@
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -15,105 +16,118 @@
 ########################################################################
 # Open the "Edit" menu and Up Arrow to Preferences, then press Return.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>e"))
-sequence.append(WaitForFocus("Undo", acc_role=pyatspi.ROLE_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Edit menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Edit Menu'",
+     "     VISIBLE:  'Edit Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Select All(Control A)'",
+     "     VISIBLE:  'Select All(Control A)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Edit menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Select All Control A'"]))
 
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
-sequence.append(WaitForFocus("Preferences", acc_role=pyatspi.ROLE_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Up Arrow in Edit menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Preferences'",
+     "     VISIBLE:  'Preferences', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Preferences'"]))
 
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
+sequence.append(utils.AssertPresentationAction(
+    "Press Return to make the Preferences dialog appear",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar AutoComplete Location  $l'",
+     "     VISIBLE:  'Location  $l', cursor=10",
+     "BRAILLE LINE:  'Minefield Application Minefield Preferences Frame'",
+     "     VISIBLE:  'Minefield Preferences Frame', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Preferences Frame List Main ListItem'",
+     "     VISIBLE:  'Main ListItem', cursor=1",
+     "SPEECH OUTPUT: 'Location autocomplete'",
+     "SPEECH OUTPUT: 'Location text '",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Minefield Preferences frame'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Main list item'"]))
 
 ########################################################################
-# We wait for the Preferences dialog to appear.  Focus should be on the
-# Main list item.  [[[Bug: Orca reads the entire list.  Should it??  
-# We also seem to be missing a focus: event for the "Main" list item.
-# Lack of proper focus events in dialogs is a known issue that Aaron is 
-# working on.]]]
-#
-# BRAILLE LINE:  'Minefield Application Minefield Preferences Dialog'
-#      VISIBLE:  'Minefield Preferences Dialog', cursor=1
-# SPEECH OUTPUT: 'Minefield Preferences Main Tabs Content Applications Privacy Security Advanced'
-#
-sequence.append(WaitForWindowActivate("Minefield Preferences",None))
-
-########################################################################
-# Press Right Arrow to move forward to the "Tabs" list item.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Preferences Dialog List Tabs ListItem'
-#      VISIBLE:  'Tabs ListItem', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Tabs'
+# Press Right Arrow to move forward list item by list item.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
-sequence.append(WaitForFocus("Tabs", acc_role=pyatspi.ROLE_LIST_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Right Arrow in list",
+    ["BRAILLE LINE:  'Minefield Application Minefield Preferences Frame List Tabs ListItem'",
+     "     VISIBLE:  'Tabs ListItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Tabs list item'"]))
 
-########################################################################
-# Press Right Arrow to move forward to the "Content" list item.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Preferences Dialog List Content ListItem'
-#     VISIBLE:  'Content ListItem', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Content'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
-sequence.append(WaitForFocus("Content", acc_role=pyatspi.ROLE_LIST_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Right Arrow in list",
+    ["BRAILLE LINE:  'Minefield Application Minefield Preferences Frame List Content ListItem'",
+     "     VISIBLE:  'Content ListItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Content list item'"]))
 
-########################################################################
-# Press Right Arrow to move forward to the "Applications" list item.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Preferences Dialog List Applications ListItem'
-#      VISIBLE:  'Applications ListItem', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Applications'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
-sequence.append(WaitForFocus("Applications", acc_role=pyatspi.ROLE_LIST_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Right Arrow in list",
+    ["BRAILLE LINE:  'Minefield Application Minefield Preferences Frame List Applications ListItem'",
+     "     VISIBLE:  'Applications ListItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Applications list item'"]))
 
 ########################################################################
-# Press Left Arrow to move back to the "Content" list item.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Preferences Dialog List Content ListItem'
-#     VISIBLE:  'Content ListItem', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Content'
+# Press Left Arrow to move backward list item by list item.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
-sequence.append(WaitForFocus("Content", acc_role=pyatspi.ROLE_LIST_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Left Arrow in list",
+    ["BRAILLE LINE:  'Minefield Application Minefield Preferences Frame List Content ListItem'",
+     "     VISIBLE:  'Content ListItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Content list item'"]))
 
-########################################################################
-# Press Left Arrow to move back to the "Tabs" list item.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Preferences Dialog List Tabs ListItem'
-#      VISIBLE:  'Tabs ListItem', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Tabs'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
-sequence.append(WaitForFocus("Tabs", acc_role=pyatspi.ROLE_LIST_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Left Arrow in list",
+    ["BRAILLE LINE:  'Minefield Application Minefield Preferences Frame List Tabs ListItem'",
+     "     VISIBLE:  'Tabs ListItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Tabs list item'"]))
 
-########################################################################
-# Press Left Arrow to move back to the "Main" list item.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Preferences Dialog List Main ListItem'
-#      VISIBLE:  'Main ListItem', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Main'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
-sequence.append(WaitForFocus("Main", acc_role=pyatspi.ROLE_LIST_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Left Arrow in list",
+    ["BRAILLE LINE:  'Minefield Application Minefield Preferences Frame List Main ListItem'",
+     "     VISIBLE:  'Main ListItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Main list item'"]))
 
 ########################################################################
-# Do a basic "Where Am I" via KP_Enter.  [[[Bug: The current where am I 
-# doesn't handle list items per se but treats them as generic.  We 
-# probably want to treat them more like items in a tree?]]]
-# 
-# BRAILLE LINE:  'Minefield Application Minefield Preferences Dialog List Main ListItem'
-#      VISIBLE:  'Main ListItem', cursor=1
-# SPEECH OUTPUT: 'Main'
-# SPEECH OUTPUT: 'list item'
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Minefield Application Minefield Preferences Frame List Main ListItem'",
+     "     VISIBLE:  'Main ListItem', cursor=1",
+     "SPEECH OUTPUT: 'list item'",
+     "SPEECH OUTPUT: 'Main'",
+     "SPEECH OUTPUT: 'item 1 of 7'"]))
 
 ########################################################################
 # Dismiss the dialog by pressing Escape and wait for the location bar

Modified: trunk/test/keystrokes/firefox/xul_role_menu_bar.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_menu_bar.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_menu_bar.py	Fri Jan 18 08:36:28 2008
@@ -4,6 +4,7 @@
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -18,107 +19,83 @@
 sequence.append(WaitForWindowActivate("Minefield",None))
 
 ########################################################################
-# Open the "File" menu.  Focus is on the "New Window" menu item.  We
-# get a focus event for the menu, then one for the menu item.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar File'
-#      VISIBLE:  'File', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'File'
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar File New Window(Control N)'
-#      VISIBLE:  'New Window(Control N)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'New Window Control N'
+# Open the "File" menu.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>f"))
-sequence.append(WaitForFocus("New Window", acc_role=pyatspi.ROLE_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar File Menu'",
+     "     VISIBLE:  'File Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar New Window(Control N)'",
+     "     VISIBLE:  'New Window(Control N)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'File menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'New Window Control N'"]))
 
 ########################################################################
-# Right Arrow to the "Edit" menu.  [[[Bug?  When you arrow from menu
-# to menu on the menu bar, whatever had focus before claims it again
-# before the next menu -- or really menu item -- gains focus.  This
-# is annoying.  I'll file a bug against Mozilla asking if those
-# events are really necessary.]]] After focus momentarily goes to the
-# Location autocomplete, it's claimed by the Edit menu.  Finally, the
-# Select All menu item in the Edit menu claims focus.  (Yes, all from
-# one little press of Right Arrow).
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar AutoComplete Location  $l'
-#      VISIBLE:  'Location  $l', cursor=10
-# SPEECH OUTPUT: 'Location autocomplete'
-# SPEECH OUTPUT: 'Location text '
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Edit'
-#      VISIBLE:  'Edit', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Edit'
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Edit Select All(Control A)'
-#      VISIBLE:  'Select All(Control A)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Select All Control A'
+# Press Right Arrow to move forward menu by menu
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
-sequence.append(WaitForFocus("Select All", acc_role=pyatspi.ROLE_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Right Arrow on menu bar",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Edit Menu'",
+     "     VISIBLE:  'Edit Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Select All(Control A)'",
+     "     VISIBLE:  'Select All(Control A)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Edit menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Select All Control A'"]))
 
-########################################################################
-# Right Arrow to the "View" menu.  Focus is on the Toolbars menu. 
-# See above comments regarding menus that claim to be menu items and
-# the repeated focus events for the Location Autocomplete.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar AutoComplete Location  $l'
-#      VISIBLE:  'Location  $l', cursor=10
-# SPEECH OUTPUT: 'Location autocomplete'
-# SPEECH OUTPUT: 'Location text '
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar View'
-#      VISIBLE:  'View', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'View'
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Toolbars'
-#      VISIBLE:  'Toolbars', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Toolbars'
-#
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Right"))
+sequence.append(utils.AssertPresentationAction(
+    "Right Arrow on menu bar",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar View Menu'",
+     "     VISIBLE:  'View Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Toolbars Menu'",
+     "     VISIBLE:  'Toolbars Menu', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'View menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Toolbars menu'"]))
+
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
-sequence.append(WaitForFocus("Toolbars", acc_role=pyatspi.ROLE_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Right Arrow on menu bar",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Menu <x> Navigation Toolbar CheckItem'",
+     "     VISIBLE:  '<x> Navigation Toolbar CheckItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Navigation Toolbar check item checked'"]))
 
 ########################################################################
-# Left Arrow back to the "Edit" menu.  Focus is on the "Select All" 
-# menu item. See above comments.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar AutoComplete Location  $l'
-#      VISIBLE:  'Location  $l', cursor=10
-# SPEECH OUTPUT: 'Location autocomplete'
-# SPEECH OUTPUT: 'Location text '
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Edit'
-#      VISIBLE:  'Edit', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Edit'
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Edit Select All(Control A)'
-#      VISIBLE:  'Select All(Control A)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Select All Control A'
+# Press Left Arrow to move backward menu by menu
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
-sequence.append(WaitForFocus("Select All", acc_role=pyatspi.ROLE_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Left Arrow on menu bar",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Toolbars Menu'",
+     "     VISIBLE:  'Toolbars Menu', cursor=1",
+     "SPEECH OUTPUT: 'Minefield application Minefield frame View menu'",
+     "SPEECH OUTPUT: 'Toolbars menu'"]))
 
-########################################################################
-# Left Arrow back to the "File" menu.  Focus is on the "New Window"
-# menu item.  See above comments.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar AutoComplete Location  $l'
-#      VISIBLE:  'Location  $l', cursor=10
-# SPEECH OUTPUT: 'Location autocomplete'
-# SPEECH OUTPUT: 'Location text '
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar File'
-#      VISIBLE:  'File', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'File'
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar File New Window(Control N)'
-#      VISIBLE:  'New Window(Control N)', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'New Window Control N'
-#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
-sequence.append(WaitForFocus("New Window", acc_role=pyatspi.ROLE_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Left Arrow on menu bar",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Edit Menu'",
+     "     VISIBLE:  'Edit Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Select All(Control A)'",
+     "     VISIBLE:  'Select All(Control A)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Edit menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Select All Control A'"]))
 
 ########################################################################
 # Dismiss the menu by pressing Escape and wait for the location bar

Modified: trunk/test/keystrokes/firefox/xul_role_push_button.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_push_button.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_push_button.py	Fri Jan 18 08:36:28 2008
@@ -4,6 +4,7 @@
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -15,68 +16,84 @@
 ########################################################################
 # Open the "File" menu and press U for the Page Setup dialog
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>f"))
-
-sequence.append(WaitForFocus("New Window", acc_role=pyatspi.ROLE_MENU_ITEM))
-sequence.append(TypeAction("u"))
+sequence.append(utils.AssertPresentationAction(
+    "File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar File Menu'",
+     "     VISIBLE:  'File Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar New Window(Control N)'",
+     "     VISIBLE:  'New Window(Control N)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'File menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'New Window Control N'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("u"))
+sequence.append(utils.AssertPresentationAction(
+    "u for Page Setup",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar AutoComplete Location  $l'",
+     "     VISIBLE:  'Location  $l', cursor=10",
+     "BRAILLE LINE:  'Page Setup Dialog Format for:  Combo'",
+     "     VISIBLE:  ' Combo', cursor=1",
+     "SPEECH OUTPUT: 'Location autocomplete'",
+     "SPEECH OUTPUT: 'Location text '",
+     "SPEECH OUTPUT: 'Format for: combo box'"]))
 
 sequence.append(WaitForWindowActivate("Page Setup",None))
 
 ########################################################################
-# In the Page Setup dialog, shift+tab once to move to the page tabs.
-#
+# Shift+tab again to move to the Apply push button. 
+# 
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>ISO_Left_Tab"))
-sequence.append(WaitForFocus("Format & Options", acc_role=pyatspi.ROLE_PAGE_TAB))
+sequence.append(utils.AssertPresentationAction(
+    "Shift Tab to the Apply button",
+    ["BRAILLE LINE:  'Page Setup Dialog Apply Button'",
+     "     VISIBLE:  'Page Setup Dialog Apply Button', cursor=19",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Apply button'"]))
 
 ########################################################################
-# Shift+tab again to move to the OK push button. The following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog OK Button'
-#      VISIBLE:  'OK Button', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'OK button'
-#
-sequence.append(KeyComboAction("<Shift>ISO_Left_Tab"))
-sequence.append(WaitForFocus("OK", acc_role=pyatspi.ROLE_PUSH_BUTTON))
-
-########################################################################
-# Do a basic "Where Am I" via KP_Enter.  The following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog OK Button'
-#      VISIBLE:  'OK Button', cursor=1
-# SPEECH OUTPUT: 'OK'
-# SPEECH OUTPUT: 'button'
-# SPEECH OUTPUT: ''
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Page Setup Dialog Apply Button'",
+     "     VISIBLE:  'Page Setup Dialog Apply Button', cursor=19",
+     "SPEECH OUTPUT: 'Apply'",
+     "SPEECH OUTPUT: 'button'",
+     "SPEECH OUTPUT: 'Alt a'"]))
 
 ########################################################################
-# Shift+tab again to move to the Cancel push button. The following 
-# should be presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog Cancel Button'
-#      VISIBLE:  'Cancel Button', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Cancel button'
-#
+# Shift+tab again to move to the Cancel push button. 
+# 
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>ISO_Left_Tab"))
-sequence.append(WaitForFocus("Cancel", acc_role=pyatspi.ROLE_PUSH_BUTTON))
+sequence.append(utils.AssertPresentationAction(
+    "Shift Tab to the Cancel button",
+    ["BRAILLE LINE:  'Page Setup Dialog Cancel Button'",
+     "     VISIBLE:  'Page Setup Dialog Cancel Button', cursor=19",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Cancel button'"]))
 
 ########################################################################
-# Do a basic "Where Am I" via KP_Enter.  The following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog Cancel Button'
-#      VISIBLE:  'Cancel Button', cursor=1
-# SPEECH OUTPUT: 'Cancel'
-# SPEECH OUTPUT: 'button'
-# SPEECH OUTPUT: ''
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Page Setup Dialog Cancel Button'",
+     "     VISIBLE:  'Page Setup Dialog Cancel Button', cursor=19",
+     "SPEECH OUTPUT: 'Cancel'",
+     "SPEECH OUTPUT: 'button'",
+     "SPEECH OUTPUT: 'Alt c'"]))
 
 ########################################################################
 # Dismiss the dialog by pressing Space on the Cancel button and wait 

Modified: trunk/test/keystrokes/firefox/xul_role_radio_button.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_radio_button.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_radio_button.py	Fri Jan 18 08:36:28 2008
@@ -4,6 +4,7 @@
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -15,73 +16,96 @@
 ########################################################################
 # Open the "File" menu and press U for the Page Setup dialog
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>f"))
-
-sequence.append(WaitForFocus("New Window", acc_role=pyatspi.ROLE_MENU_ITEM))
-sequence.append(TypeAction("u"))
-
-sequence.append(WaitForWindowActivate("Page Setup",None))
-
-########################################################################
-# In the Page Setup dialog, focus should already be on the "Portrait"
-# radio button.  Right Arrow to the "Landscape" radio button. The 
-# following should be presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog ScrollPane Orientation: Panel &=y Landscape RadioButton'
-#     VISIBLE:  '&=y Landscape RadioButton', cursor=1
-# SPEECH OUTPUT: 'Orientation: panel'
-# SPEECH OUTPUT: 'Landscape selected radio button'
-#
-# [[[BUG: the Orientation panel was also announced because we currently
-# do not get a focus event for the Portrait radio button which initially
-# is focused when the dialog box appeared.  Thus it's new context as far
-# as we're concerned. 
-# https://bugzilla.mozilla.org/show_bug.cgi?id=388187]]]
-#
-sequence.append(KeyComboAction("Right"))
-sequence.append(WaitForFocus("Landscape", acc_role=pyatspi.ROLE_RADIO_BUTTON))
+sequence.append(utils.AssertPresentationAction(
+    "File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar File Menu'",
+     "     VISIBLE:  'File Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar New Window(Control N)'",
+     "     VISIBLE:  'New Window(Control N)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'File menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'New Window Control N'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("u"))
+sequence.append(utils.AssertPresentationAction(
+    "u for Page Setup",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar AutoComplete Location  $l'",
+     "     VISIBLE:  'Location  $l', cursor=10",
+     "BRAILLE LINE:  'Page Setup Dialog Format for:  Combo'",
+     "     VISIBLE:  ' Combo', cursor=1",
+     "SPEECH OUTPUT: 'Location autocomplete'",
+     "SPEECH OUTPUT: 'Location text '",
+     "SPEECH OUTPUT: 'Format for: combo box'"]))
+
+########################################################################
+# Tab twice to get to the Portrait radio button.
+# 
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Tab"))
+sequence.append(utils.AssertPresentationAction(
+    "Tab",
+    ["BRAILLE LINE:  'Page Setup Dialog Paper size:  Combo'",
+     "     VISIBLE:  ' Combo', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Paper size: combo box'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Tab"))
+sequence.append(utils.AssertPresentationAction(
+    "Tab",
+    ["BRAILLE LINE:  'Page Setup Dialog &=y Orientation: Portrait RadioButton'",
+     "     VISIBLE:  '&=y Orientation: Portrait RadioB', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Orientation:'",
+     "SPEECH OUTPUT: 'Portrait selected radio button'"]))
 
 ########################################################################
-# Do a basic "Where Am I" via KP_Enter.  The following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog ScrollPane Orientation: Panel &=y Landscape RadioButton'
-#      VISIBLE:  '&=y Landscape RadioButton', cursor=1
-# SPEECH OUTPUT: 'Orientation:'
-# SPEECH OUTPUT: 'Landscape radio button'
-# SPEECH OUTPUT: 'selected'
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: ''
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Page Setup Dialog &=y Orientation: Portrait RadioButton'",
+     "     VISIBLE:  '&=y Orientation: Portrait RadioB', cursor=1",
+     "SPEECH OUTPUT: 'Orientation:'",
+     "SPEECH OUTPUT: 'Orientation: Portrait radio button'",
+     "SPEECH OUTPUT: 'selected'",
+     "SPEECH OUTPUT: 'item 1 of 4'",
+     "SPEECH OUTPUT: 'Alt o'"]))
 
 ########################################################################
-# Left Arrow to return to the "Portrait" radio button.  The following 
-# should be presented in speech and braille:
+# Right Arrow to the "Reverse portrait" radio button. 
 #
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog ScrollPane Orientation: Panel &=y Portrait RadioButton'
-#      VISIBLE:  '&=y Portrait RadioButton', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Portrait selected radio button'
-#
-sequence.append(KeyComboAction("Left"))
-sequence.append(WaitForFocus("Portrait", acc_role=pyatspi.ROLE_RADIO_BUTTON))
-
-########################################################################
-# Do a basic "Where Am I" via KP_Enter.  The following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog ScrollPane Orientation: Panel &=y Portrait RadioButton'
-#     VISIBLE:  '&=y Portrait RadioButton', cursor=1
-# SPEECH OUTPUT: 'Orientation:'
-# SPEECH OUTPUT: 'Portrait radio button'
-# SPEECH OUTPUT: 'selected'
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: ''
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Right"))
+sequence.append(utils.AssertPresentationAction(
+    "Right Arrow to radio button",
+    ["BRAILLE LINE:  'Page Setup Dialog & y Reverse portrait RadioButton'",
+     "     VISIBLE:  '& y Reverse portrait RadioButton', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Reverse portrait not selected radio button'"]))
+
+########################################################################
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Page Setup Dialog &=y Reverse portrait RadioButton'",
+     "     VISIBLE:  '&=y Reverse portrait RadioButton', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Reverse portrait radio button'",
+     "SPEECH OUTPUT: 'selected'",
+     "SPEECH OUTPUT: 'item 2 of 4'",
+     "SPEECH OUTPUT: ''"]))
 
 ########################################################################
 # Dismiss the dialog by pressing Escape and wait for the location bar

Modified: trunk/test/keystrokes/firefox/xul_role_radio_menu_item.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_role_radio_menu_item.py	(original)
+++ trunk/test/keystrokes/firefox/xul_role_radio_menu_item.py	Fri Jan 18 08:36:28 2008
@@ -4,6 +4,7 @@
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -13,75 +14,84 @@
 sequence.append(WaitForWindowActivate("Minefield",None))
 
 ########################################################################
-# Open the "View" menu.
+# Open the "View" menu then the Page Style menu. Focus should be on the
+# "No Style" radio menu item.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>v"))
-sequence.append(WaitForFocus("Toolbars", acc_role=pyatspi.ROLE_MENU))
+sequence.append(utils.AssertPresentationAction(
+    "View menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar View Menu'",
+     "     VISIBLE:  'View Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Toolbars Menu'",
+     "     VISIBLE:  'Toolbars Menu', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'View menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Toolbars menu'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("y"))
+sequence.append(utils.AssertPresentationAction(
+    "y for Page Style menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar Page Style Menu'",
+     "     VISIBLE:  'Page Style Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Menu & y No Style RadioItem'",
+     "     VISIBLE:  '& y No Style RadioItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Page Style menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'No Style not selected radio menu item'"]))
 
 ########################################################################
-# When focus is on Toolbars, Press Y to open the Page Style menu. Focus
-# should be on the "No Style" radio menu item.  The following should be
-# presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Page Style & y No Style RadioItem'
-#      VISIBLE:  '& y No Style RadioItem', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'No Style not selected radio menu item'
-#
-sequence.append(TypeAction("y"))
-sequence.append(WaitForFocus("No Style", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
-
-########################################################################
-# Do a basic "Where Am I" via KP_Enter.  The following should be
-# presented in speech and braille:
-#
-# Note: Due to https://bugzilla.mozilla.org/show_bug.cgi?id=396799,
-# We might not speak the item count.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Page Style & y No Style RadioItem'
-#      VISIBLE:  '& y No Style RadioItem', cursor=1
-# SPEECH OUTPUT: 'Page Style menu'
-# SPEECH OUTPUT: 'No Style'
-# SPEECH OUTPUT: 'radio menu item'
-# SPEECH OUTPUT: 'not selected'
-# SPEECH OUTPUT: 'item 1 of 2'
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: ''
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Menu & y No Style RadioItem'",
+     "     VISIBLE:  '& y No Style RadioItem', cursor=1",
+     "SPEECH OUTPUT: 'tool bar'",
+     "SPEECH OUTPUT: 'Page Style menu'",
+     "SPEECH OUTPUT: 'No Style'",
+     "SPEECH OUTPUT: 'radio menu item'",
+     "SPEECH OUTPUT: 'not selected'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'item 1 of 2'",
+     "SPEECH OUTPUT: ''"]))
 
 ########################################################################
-# Down Arrow to the "Basic Page Style" radio menu item. The following
-# should be presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Page Style &=y Basic Page Style RadioItem'
-#      VISIBLE:  '&=y Basic Page Style RadioItem', cursor=1
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: 'Basic Page Style selected radio menu item'
+# Down Arrow to the "Basic Page Style" radio menu item.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
-sequence.append(WaitForFocus("Basic Page Style", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
+sequence.append(utils.AssertPresentationAction(
+    "Down Arrow in menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Menu &=y Basic Page Style RadioItem'",
+     "     VISIBLE:  '&=y Basic Page Style RadioItem', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Basic Page Style selected radio menu item'"]))
 
 ########################################################################
-# Do a basic "Where Am I" via KP_Enter.  The following should be
-# presented in speech and braille:
-#
-# Note: Due to https://bugzilla.mozilla.org/show_bug.cgi?id=396799,
-# We might not speak the item count.
-#
-# BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Page Style &=y Basic Page Style RadioItem'
-#      VISIBLE:  '&=y Basic Page Style RadioItem', cursor=1
-# SPEECH OUTPUT: 'Page Style menu item'
-# SPEECH OUTPUT: 'Basic Page Style'
-# SPEECH OUTPUT: 'radio menu item'
-# SPEECH OUTPUT: 'selected'
-# SPEECH OUTPUT: 'item 2 of 2'
-# SPEECH OUTPUT: ''
-# SPEECH OUTPUT: ''
+# Do a basic "Where Am I" via KP_Enter. 
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Basic Where Am I", 
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar View Menu &=y Basic Page Style RadioItem'",
+     "     VISIBLE:  '&=y Basic Page Style RadioItem', cursor=1",
+     "SPEECH OUTPUT: 'tool bar'",
+     "SPEECH OUTPUT: 'Page Style menu'",
+     "SPEECH OUTPUT: 'Basic Page Style'",
+     "SPEECH OUTPUT: 'radio menu item'",
+     "SPEECH OUTPUT: 'selected'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'item 2 of 2'",
+     "SPEECH OUTPUT: ''"]))
 
 ########################################################################
 # Dismiss the "Page Style" menu by pressing Escape.

Modified: trunk/test/keystrokes/firefox/xul_where_am_i_dialog.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_where_am_i_dialog.py	(original)
+++ trunk/test/keystrokes/firefox/xul_where_am_i_dialog.py	Fri Jan 18 08:36:28 2008
@@ -1,9 +1,11 @@
+# -*- coding: utf-8 -*-
 #!/usr/bin/python
 
 """Test of where Am I output in a dialog box using Firefox.
 """
 
 from macaroon.playback import *
+import utils
 
 sequence = MacroSequence()
 
@@ -15,48 +17,46 @@
 ########################################################################
 # Open the "File" menu and press U for the Page Setup dialog
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>f"))
-
-sequence.append(WaitForFocus("New Window", acc_role=pyatspi.ROLE_MENU_ITEM))
-sequence.append(TypeAction("u"))
+sequence.append(utils.AssertPresentationAction(
+    "File menu",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar File Menu'",
+     "     VISIBLE:  'File Menu', cursor=1",
+     "BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar Application MenuBar New Window(Control N)'",
+     "     VISIBLE:  'New Window(Control N)', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'File menu'",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'New Window Control N'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("u"))
+sequence.append(utils.AssertPresentationAction(
+    "u for Page Setup",
+    ["BRAILLE LINE:  'Minefield Application Minefield Frame ToolBar AutoComplete Location  $l'",
+     "     VISIBLE:  'Location  $l', cursor=10",
+     "BRAILLE LINE:  'Page Setup Dialog Format for:  Combo'",
+     "     VISIBLE:  ' Combo', cursor=1",
+     "SPEECH OUTPUT: 'Location autocomplete'",
+     "SPEECH OUTPUT: 'Location text '",
+     "SPEECH OUTPUT: 'Format for: combo box'"]))
 
 sequence.append(WaitForWindowActivate("Page Setup",None))
 
 ########################################################################
-# Currently we aren't getting proper focus events for this dialog.
-# Therefore press Tab once to trigger a focus event before proceeding.
-#
-sequence.append(KeyComboAction("Tab"))
-sequence.append(WaitForFocus("Shrink To Fit Page Width", acc_role=pyatspi.ROLE_CHECK_BOX))
-
-########################################################################
-# Do modified "Where Am I" via Orca_Modifier + KP_Enter to get the title
-# The following should be presented in speech and braille:
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog ScrollPane <x> Shrink To Fit Page Width CheckBox'
-#      VISIBLE:  '<x> Shrink To Fit Page Width Che', cursor=1
-# SPEECH OUTPUT: 'Page Setup'
-#
-sequence.append(KeyPressAction(0, None, "KP_Insert"))
-sequence.append(KeyComboAction("KP_Enter"))
-sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
-sequence.append(PauseAction(3000))
-
-########################################################################
-# Do double-click modified "Where Am I" via Orca_Modifier + KP_Enter to
-# get the default button. The following should be presented in speech 
-# and braille [[[BUG? depending on the timing, the first click command
-# still gets spoken]]].
-#
-# BRAILLE LINE:  'Minefield Application Page Setup Dialog ScrollPane <x> Shrink To Fit Page Width CheckBox'
-#      VISIBLE:  '<x> Shrink To Fit Page Width Che', cursor=1
-# SPEECH OUTPUT: 'Default button is OK'
+# Read the title bar with Orca+KP_ENTER
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_Enter"))
-sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Title Bar", 
+    ["BRAILLE LINE:  'Page Setup Dialog Format for:  Combo'",
+     "     VISIBLE:  ' Combo', cursor=1",
+     "SPEECH OUTPUT: 'Page Setup'"]))
 
 ########################################################################
 # Dismiss the dialog by pressing Escape and wait for the location bar

Modified: trunk/test/keystrokes/firefox/xul_where_am_i_status_bar.py
==============================================================================
--- trunk/test/keystrokes/firefox/xul_where_am_i_status_bar.py	(original)
+++ trunk/test/keystrokes/firefox/xul_where_am_i_status_bar.py	Fri Jan 18 08:36:28 2008
@@ -27,96 +27,123 @@
                              acc_role=pyatspi.ROLE_DOCUMENT_FRAME))
 
 ########################################################################
-# Press Tab to move to the first push button, "Who expects the Spanish
-# Inquistion?".  When it has focus, press it with the space bar which
-# will cause the status bar text to display the following text:
-# "NOBODY expects the Spanish Inquisition!"
+# Press Control+Home to move to the top.
 #
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "Top of file", 
+    ["BRAILLE LINE:  'Press a button to change the status bar text'",
+     "     VISIBLE:  'Press a button to change the sta', cursor=1",
+     "SPEECH OUTPUT: 'Press a button to change the status bar text'"]))
+
+########################################################################
+# Press Tab to the first push button and press it with space bar.  
+#
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
-sequence.append(WaitForFocus("Who expects the Spanish Inquisition?",
-                             acc_role=pyatspi.ROLE_PUSH_BUTTON))
+sequence.append(utils.AssertPresentationAction(
+    "Tab to button", 
+    ["BRAILLE LINE:  'Who expects the Spanish Inquisition? Button'",
+     "     VISIBLE:  'Who expects the Spanish Inquisit', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Who expects the Spanish Inquisition? button'"]))
 
+sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction(" "))
+sequence.append(utils.AssertPresentationAction(
+    "Press button", 
+    [""]))
 
 ########################################################################
-# Double-click Orca_Modifier+KP_Enter to read the status bar.
-# [[[Bug: Gecko's readPageSummary() should, I believe, only kick in for
-# unmodified double-clicks of KP_Enter.  Currently it kicks in for both.
-# See bug #480501.]]] [[[Bug? As has been observed in other tests, the
-# double-click doesn't always "take".  Sometimes it's treated as a
-# single click; other times it's treated as a double click, but we have
-# already started speaking the single click stuff.]]]
-#
-# BRAILLE LINE:  'Who expects the Spanish Inquisition? Button'
-#      VISIBLE:  'Who expects the Spanish Inquisit', cursor=1
-# SPEECH OUTPUT: 'Status Bar Regression Test - Minefield'
-# SPEECH OUTPUT: '1 form'
-# SPEECH OUTPUT: '60 percent of document read'
+# Read the status bar with Orca+KP_ENTER double clicked.
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Status bar", 
+    ["BRAILLE LINE:  'Who expects the Spanish Inquisition? Button'",
+     "     VISIBLE:  'Who expects the Spanish Inquisit', cursor=1",
+     "BRAILLE LINE:  'Who expects the Spanish Inquisition? Button'",
+     "     VISIBLE:  'Who expects the Spanish Inquisit', cursor=1",
+     "SPEECH OUTPUT: 'Status Bar Regression Test - Minefield'",
+     "SPEECH OUTPUT: 'NOBODY expects the Spanish Inquisition!'"]))
 
 ########################################################################
-# Press Tab to move to the second push button, "Our chief weapon is..."
-# When it has focus, press it with the space bar which will cause the 
-# the status bar to display the following text:
-# "Surprise.  Surprise and fear. Fear and surprise... And ruthless 
-# efficiency...  And an almost fanatical devotion to the Pope... And nice
-# red uniforms."
+# Press Tab to the second push button and press it with space bar.  
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
-sequence.append(WaitForFocus("Our chief weapon is...",
-                             acc_role=pyatspi.ROLE_PUSH_BUTTON))
+sequence.append(utils.AssertPresentationAction(
+    "Tab to button", 
+    ["BRAILLE LINE:  'Our chief weapon is... Button'",
+     "     VISIBLE:  'Our chief weapon is... Button', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Our chief weapon is... button'"]))
 
+sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction(" "))
+sequence.append(utils.AssertPresentationAction(
+    "Press button", 
+    [""]))
 
 ########################################################################
-# Double-click Orca_Modifier+KP_Enter to read the status bar.
-# (See comments above re bugs).
-#
-# BRAILLE LINE:  'Our chief weapon is... Button'
-#      VISIBLE:  'Our chief weapon is... Button', cursor=1
-# SPEECH OUTPUT: 'Status Bar Regression Test - Minefield'
-# SPEECH OUTPUT: '1 form'
-# SPEECH OUTPUT: '80 percent of document read'
+# Read the status bar with Orca+KP_ENTER double clicked.
 #
-sequence.append(KeyPressAction(0, None, "KP_Insert"))
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Status bar", 
+    ["BRAILLE LINE:  'Our chief weapon is... Button'",
+     "     VISIBLE:  'Our chief weapon is... Button', cursor=1",
+     "BRAILLE LINE:  'Our chief weapon is... Button'",
+     "     VISIBLE:  'Our chief weapon is... Button', cursor=1",
+     "SPEECH OUTPUT: 'Status Bar Regression Test - Minefield'",
+     "SPEECH OUTPUT: 'Surprise.  Surprise and fear. Fear and surprise... And ruthless efficiency...  And an almost fanatical devotion to the Pope... And nice red uniforms.'"]))
 
 ########################################################################
-# Press Tab to move to the third push button, "Fetch the COMFY CHAIR
-# (AKA clear out the status bar)".  When it has focus, press it with the
-# space bar which will cause the status bar text to be removed, which
-# causes Firefox to display "Done".
+# Press Tab to the third push button and press it with space bar.  
 #
+sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
-sequence.append(WaitForFocus( \
-                  "Fetch the COMFY CHAIR (AKA clear out the status bar)",
-                   acc_role=pyatspi.ROLE_PUSH_BUTTON))
+sequence.append(utils.AssertPresentationAction(
+    "Tab to button", 
+    ["BRAILLE LINE:  'Fetch the COMFY CHAIR (AKA clear out the status bar) Button'",
+     "     VISIBLE:  'Fetch the COMFY CHAIR (AKA clear', cursor=1",
+     "SPEECH OUTPUT: ''",
+     "SPEECH OUTPUT: 'Fetch the COMFY CHAIR (AKA clear out the status bar) button'"]))
 
+sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction(" "))
+sequence.append(utils.AssertPresentationAction(
+    "Press button", 
+    [""]))
 
 ########################################################################
-# Double-click Orca_Modifier+KP_Enter to read the status bar.
-# (See comments above re bugs).
-#
-# BRAILLE LINE:  'Fetch the COMFY CHAIR (AKA clear out the status bar) Button'
-#      VISIBLE:  'Fetch the COMFY CHAIR (AKA clear', cursor=1
-# SPEECH OUTPUT: 'Status Bar Regression Test - Minefield'
-# SPEECH OUTPUT: '1 form'
-# SPEECH OUTPUT: '100 percent of document read'
+# Read the status bar with Orca+KP_ENTER double clicked.
 #
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyPressAction(0, None, "KP_Insert"))
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(PauseAction(3000))
+sequence.append(utils.AssertPresentationAction(
+    "Status bar", 
+    ["BRAILLE LINE:  'Fetch the COMFY CHAIR (AKA clear out the status bar) Button'",
+     "     VISIBLE:  'Fetch the COMFY CHAIR (AKA clear', cursor=1",
+     "BRAILLE LINE:  'Fetch the COMFY CHAIR (AKA clear out the status bar) Button'",
+     "     VISIBLE:  'Fetch the COMFY CHAIR (AKA clear', cursor=1",
+     "SPEECH OUTPUT: 'Status Bar Regression Test - Minefield'",
+     "SPEECH OUTPUT: 'Done'"]))
 
 ########################################################################
 # Move to the location bar by pressing Control+L.  When it has focus



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]