[orca] Fix some issues in structural navigation



commit 70dfc5e1abad31dfcebf43d69f53fb4cf69be831
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Sat May 30 19:20:08 2015 -0400

    Fix some issues in structural navigation
    
    * Make findFirstCaretContext() a bit more agressive in finding presentable
      content, so we don't say "blank"
    * Present the structural navigation object; not the caret context within
      that object
    * Be more lenient about what we consider a data table
    * Defer more to the generators for presentation of objects

 src/orca/scripts/toolkits/Gecko/script.py          |    7 -
 .../scripts/toolkits/Gecko/script_utilities.py     |   19 +++
 .../scripts/toolkits/Gecko/speech_generator.py     |    3 +-
 .../toolkits/Gecko/structural_navigation.py        |   29 +----
 src/orca/structural_navigation.py                  |   40 ++----
 test/html/bug-556470.html                          |    4 +-
 .../firefox/html_struct_nav_activate_link.py       |    4 +-
 .../firefox/html_struct_nav_blockquote.py          |   18 ++--
 .../firefox/html_struct_nav_bug_554616.py          |   64 +++++-----
 .../firefox/html_struct_nav_bug_556470.py          |   30 ++--
 .../firefox/html_struct_nav_bug_567984.py          |    6 +-
 .../firefox/html_struct_nav_descriptions.py        |   12 +-
 .../html_struct_nav_headings_buried_deep.py        |   24 ++--
 ...html_struct_nav_headings_with_hidden_anchors.py |   19 +--
 .../firefox/html_struct_nav_large_obj.py           |  111 +++++++++++++++--
 test/keystrokes/firefox/html_struct_nav_links.py   |   40 +++---
 .../firefox/html_struct_nav_list_item.py           |   16 +--
 test/keystrokes/firefox/html_struct_nav_lists.py   |  136 +++++---------------
 test/keystrokes/firefox/line_nav_bug_555055.py     |    3 +-
 .../firefox/line_nav_follow_same_page_link.py      |   12 +-
 test/keystrokes/firefox/line_nav_sun_java.py       |    2 -
 .../keystrokes/firefox/object_nav_links_in_text.py |    2 +-
 22 files changed, 293 insertions(+), 308 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index f802667..80a1dae 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -1556,13 +1556,6 @@ class Script(default.Script):
             super().updateBraille(obj, extraRegion)
             return
 
-        # TODO - JD: This should be removed once struct nav uses the new
-        # method to display contents.
-        if self._lastCommandWasStructNav \
-           and not (self.utilities.isLink(obj) or self.utilities.isTextBlockElement(obj)):
-            super().updateBraille(obj, extraRegion)
-            return
-
         obj, offset = self.utilities.getCaretContext(documentFrame=None)
         contents = self.utilities.getLineContentsAtOffset(obj, offset)
         self.displayContents(contents)
diff --git a/src/orca/scripts/toolkits/Gecko/script_utilities.py 
b/src/orca/scripts/toolkits/Gecko/script_utilities.py
index c402c95..54d9462 100644
--- a/src/orca/scripts/toolkits/Gecko/script_utilities.py
+++ b/src/orca/scripts/toolkits/Gecko/script_utilities.py
@@ -1754,28 +1754,47 @@ class Utilities(script_utilities.Utilities):
         try:
             role = obj.getRole()
         except:
+            msg = "ERROR: Exception getting first caret context for %s %i" % (obj, offset)
+            debug.println(debug.LEVEL_INFO, msg)
             return None, -1
 
         lookInChild = [pyatspi.ROLE_LIST,
                        pyatspi.ROLE_TABLE,
                        pyatspi.ROLE_TABLE_ROW]
         if role in lookInChild and obj.childCount:
+            msg = "INFO: First caret context for %s, %i will look in child %s" % (obj, offset, obj[0])
+            debug.println(debug.LEVEL_INFO, msg)
             return self.findFirstCaretContext(obj[0], 0)
 
         text = self.queryNonEmptyText(obj)
         if not text:
+            if self.isTextBlockElement(obj) or self.isAnchor(obj):
+                nextObj, nextOffset = self.nextContext(obj, offset)
+                if nextObj:
+                    msg = "INFO: First caret context for %s, %i is %s, %i" % (obj, offset, nextObj, 
nextOffset)
+                    debug.println(debug.LEVEL_INFO, msg)
+                    return nextObj, nextOffset
+
+            msg = "INFO: First caret context for %s, %i is %s, %i" % (obj, offset, obj, 0)
+            debug.println(debug.LEVEL_INFO, msg)
             return obj, 0
 
         if offset >= text.characterCount:
+            msg = "INFO: First caret context for %s, %i is %s, %i" % (obj, offset, obj, text.characterCount)
+            debug.println(debug.LEVEL_INFO, msg)
             return obj, text.characterCount
 
         allText = text.getText(0, -1)
         offset = max (0, offset)
         if allText[offset] != self.EMBEDDED_OBJECT_CHARACTER:
+            msg = "INFO: First caret context for %s, %i is %s, %i" % (obj, offset, obj, offset)
+            debug.println(debug.LEVEL_INFO, msg)
             return obj, offset
 
         child = self.getChildAtOffset(obj, offset)
         if not child:
+            msg = "INFO: First caret context for %s, %i is %s, %i" % (obj, offset, None, -1)
+            debug.println(debug.LEVEL_INFO, msg)
             return None, -1
 
         return self.findFirstCaretContext(child, 0)
diff --git a/src/orca/scripts/toolkits/Gecko/speech_generator.py 
b/src/orca/scripts/toolkits/Gecko/speech_generator.py
index c72ecc6..e766880 100644
--- a/src/orca/scripts/toolkits/Gecko/speech_generator.py
+++ b/src/orca/scripts/toolkits/Gecko/speech_generator.py
@@ -170,7 +170,8 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
         if role not in [pyatspi.ROLE_LIST, pyatspi.ROLE_LIST_BOX]:
             return super()._generateNumberOfChildren(obj, **args)
 
-        result = [messages.listItemCount(obj.childCount)]
+        children = [x for x in obj if x.getRole() == pyatspi.ROLE_LIST_ITEM]
+        result = [messages.listItemCount(len(children))]
         result.extend(self.voice(speech_generator.SYSTEM))
         return result
 
diff --git a/src/orca/scripts/toolkits/Gecko/structural_navigation.py 
b/src/orca/scripts/toolkits/Gecko/structural_navigation.py
index a438065..3dbb59f 100644
--- a/src/orca/scripts/toolkits/Gecko/structural_navigation.py
+++ b/src/orca/scripts/toolkits/Gecko/structural_navigation.py
@@ -106,27 +106,6 @@ class GeckoStructuralNavigation(structural_navigation.StructuralNavigation):
 
         return self._script.utilities.inDocumentContent(obj)
 
-    def _getCaretPosition(self, obj):
-        """Returns the [obj, characterOffset] where the caret should be
-        positioned.
-        """
-
-        obj, offset = self._script.utilities.findFirstCaretContext(obj, 0)
-        if not obj:
-            return obj, offset
-
-        if self._script.utilities.isTextBlockElement(obj) \
-           and not self._script.utilities.queryNonEmptyText(obj):
-            obj, offset = self._script.utilities.findNextCaretInOrder(obj, offset)
-
-        # If it's an anchor, look for the first object of use.
-        # See bug #591592.
-        #
-        if self._script.utilities.isAnchor(obj):
-            obj, offset = self._script.utilities.findNextCaretInOrder(obj, offset)
-
-        return obj, offset
-
     def _setCaretPosition(self, obj, characterOffset):
         """Sets the caret at the specified offset within obj."""
 
@@ -155,15 +134,9 @@ class GeckoStructuralNavigation(structural_navigation.StructuralNavigation):
         if self._presentWithSayAll(obj, offset):
             return
 
-        if obj.getRole() == pyatspi.ROLE_LINK:
-            try:
-                obj.queryComponent().grabFocus()
-            except:
-                pass
-
-        self._script.updateBraille(obj)
         contents = self._script.utilities.getObjectContentsAtOffset(obj, offset)
         self._script.speakContents(contents)
+        self._script.displayContents(contents)
 
     #########################################################################
     #                                                                       #
diff --git a/src/orca/structural_navigation.py b/src/orca/structural_navigation.py
index 88d7834..7dbe1e9 100644
--- a/src/orca/structural_navigation.py
+++ b/src/orca/structural_navigation.py
@@ -1854,11 +1854,7 @@ class StructuralNavigation:
         if obj:
             [obj, characterOffset] = self._getCaretPosition(obj)
             self._setCaretPosition(obj, characterOffset)
-            # TODO: We currently present the line, so that's kept here.
-            # But we should probably present the object, which would
-            # be consistent with the change made recently for headings.
-            #
-            self._presentLine(obj, characterOffset)
+            self._presentObject(obj, characterOffset)
         else:
             full = messages.NO_MORE_BLOCKQUOTES
             brief = messages.STRUCTURAL_NAVIGATION_NOT_FOUND
@@ -2775,23 +2771,7 @@ class StructuralNavigation:
           the criteria (e.g. the level of a heading).
         """
 
-        # TODO: Ultimately it should be the job of the speech (and braille)
-        # generator to present things like this.
-        #
         if obj:
-            nItems = 0
-            for child in obj:
-                if child.getRole() == pyatspi.ROLE_LIST_ITEM:
-                    nItems += 1
-            self._script.presentMessage(messages.listItemCount(nItems))
-            nestingLevel = 0
-            parent = obj.parent
-            while parent.getRole() == pyatspi.ROLE_LIST:
-                nestingLevel += 1
-                parent = parent.parent
-            if nestingLevel:
-                self._script.presentMessage(
-                    messages.NESTING_LEVEL % nestingLevel)
             [obj, characterOffset] = self._getCaretPosition(obj)
             self._setCaretPosition(obj, characterOffset)
             self._presentLine(obj, characterOffset)
@@ -3254,14 +3234,20 @@ class StructuralNavigation:
           the criteria (e.g. the level of a heading).
         """
 
-        if self._script.utilities.isLayoutOnly(obj):
+        if not (obj and obj.childCount and obj.getRole() == pyatspi.ROLE_TABLE):
             return False
 
-        if obj and obj.childCount and obj.getRole() == pyatspi.ROLE_TABLE:
-            try:
-                return obj.queryTable().nRows > 0
-            except:
-                pass
+        try:
+            attrs = dict([attr.split(':', 1) for attr in obj.getAttributes()])
+        except:
+            return False
+        if attrs.get('layout-guess') == 'true':
+            return False
+
+        try:
+            return obj.queryTable().nRows > 0
+        except:
+            pass
 
         return False
 
diff --git a/test/html/bug-556470.html b/test/html/bug-556470.html
index e92052f..ddcaf85 100644
--- a/test/html/bug-556470.html
+++ b/test/html/bug-556470.html
@@ -13,9 +13,9 @@
 <table> </table>
 
 <p>here follows a normal table again</p>
-<table>
+<table border="1">
 <tbody><tr><td>1</td><td>2</td><td>4</td></tr>
 <tr><td>2</td><td>4</td><td>16</td></tr>
 </tbody></table>
 <p>end of test page</p>
-</body></html>
\ No newline at end of file
+</body></html>
diff --git a/test/keystrokes/firefox/html_struct_nav_activate_link.py 
b/test/keystrokes/firefox/html_struct_nav_activate_link.py
index 021356e..bc4553f 100644
--- a/test/keystrokes/firefox/html_struct_nav_activate_link.py
+++ b/test/keystrokes/firefox/html_struct_nav_activate_link.py
@@ -13,8 +13,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("3"))
 sequence.append(utils.AssertPresentationAction(
     "1. Press 3 to move to the heading at level 3",
-    ["BRAILLE LINE:  '1. Anchors2.html h3'",
-     "     VISIBLE:  '1. Anchors2.html h3', cursor=4",
+    ["BRAILLE LINE:  'Anchors2.html h3'",
+     "     VISIBLE:  'Anchors2.html h3', cursor=1",
      "BRAILLE LINE:  'Anchors2.html h3'",
      "     VISIBLE:  'Anchors2.html h3', cursor=1",
      "SPEECH OUTPUT: 'Anchors2.html link heading level 3'"]))
diff --git a/test/keystrokes/firefox/html_struct_nav_blockquote.py 
b/test/keystrokes/firefox/html_struct_nav_blockquote.py
index aa82355..c64e9c9 100644
--- a/test/keystrokes/firefox/html_struct_nav_blockquote.py
+++ b/test/keystrokes/firefox/html_struct_nav_blockquote.py
@@ -13,17 +13,17 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("q"))
 sequence.append(utils.AssertPresentationAction(
     "1. q to first quote", 
-    ["BRAILLE LINE:  'NOBODY expects the Spanish Inquisition! Our chief weapon is surprise. Surprise and 
fear. Fear and'",
+    ["BRAILLE LINE:  'NOBODY expects the Spanish Inquisition! Our chief weapon is surprise. Surprise and 
fear. Fear and surprise. Our two weapons are fear and surprise. And ruthless efficiency. Our three weapons 
are fear, surprise, and ruthless efficiency. And an almost fanatical devotion to the Pope. Our four. No. 
Amongst our weapons. Amongst our weaponry, are such elements as fear, surprise. I'll come in again. NOBODY 
expects the Spanish Inquisition! Amongst our weaponry are such diverse elements as: fear, surprise, ruthless 
efficiency, an almost fanatical devotion to the Pope, and nice red uniforms - Oh damn!'",
      "     VISIBLE:  'NOBODY expects the Spanish Inqui', cursor=1",
-     "SPEECH OUTPUT: 'NOBODY expects the Spanish Inquisition! Our chief weapon is surprise. Surprise and 
fear. Fear and'"]))
+     "SPEECH OUTPUT: 'NOBODY expects the Spanish Inquisition! Our chief weapon is surprise. Surprise and 
fear. Fear and surprise. Our two weapons are fear and surprise. And ruthless efficiency. Our three weapons 
are fear, surprise, and ruthless efficiency. And an almost fanatical devotion to the Pope. Our four. No. 
Amongst our weapons. Amongst our weaponry, are such elements as fear, surprise. I'll come in again. NOBODY 
expects the Spanish Inquisition! Amongst our weaponry are such diverse elements as: fear, surprise, ruthless 
efficiency, an almost fanatical devotion to the Pope, and nice red uniforms - Oh damn!'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("q"))
 sequence.append(utils.AssertPresentationAction(
     "2. q to second quote", 
-    ["BRAILLE LINE:  'Now old lady, you have one last chance. Confess the heinous sin of heresy, reject the 
works of the'",
+    ["BRAILLE LINE:  'Now old lady, you have one last chance. Confess the heinous sin of heresy, reject the 
works of the ungodly. Two last chances. And you shall be free. Three last chances. You have three last 
chances, the nature of which I have divulged in my previous utterance.'",
      "     VISIBLE:  'Now old lady, you have one last ', cursor=1",
-     "SPEECH OUTPUT: 'Now old lady, you have one last chance. Confess the heinous sin of heresy, reject the 
works of the'"]))
+     "SPEECH OUTPUT: 'Now old lady, you have one last chance. Confess the heinous sin of heresy, reject the 
works of the ungodly. Two last chances. And you shall be free. Three last chances. You have three last 
chances, the nature of which I have divulged in my previous utterance.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("q"))
@@ -39,10 +39,10 @@ sequence.append(utils.AssertPresentationAction(
     "4. q wrap to top", 
     ["BRAILLE LINE:  'Wrapping to top.'",
      "     VISIBLE:  'Wrapping to top.', cursor=0",
-     "BRAILLE LINE:  'NOBODY expects the Spanish Inquisition! Our chief weapon is surprise. Surprise and 
fear. Fear and'",
+     "BRAILLE LINE:  'NOBODY expects the Spanish Inquisition! Our chief weapon is surprise. Surprise and 
fear. Fear and surprise. Our two weapons are fear and surprise. And ruthless efficiency. Our three weapons 
are fear, surprise, and ruthless efficiency. And an almost fanatical devotion to the Pope. Our four. No. 
Amongst our weapons. Amongst our weaponry, are such elements as fear, surprise. I'll come in again. NOBODY 
expects the Spanish Inquisition! Amongst our weaponry are such diverse elements as: fear, surprise, ruthless 
efficiency, an almost fanatical devotion to the Pope, and nice red uniforms - Oh damn!'",
      "     VISIBLE:  'NOBODY expects the Spanish Inqui', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
-     "SPEECH OUTPUT: 'NOBODY expects the Spanish Inquisition! Our chief weapon is surprise. Surprise and 
fear. Fear and'"]))
+     "SPEECH OUTPUT: 'NOBODY expects the Spanish Inquisition! Our chief weapon is surprise. Surprise and 
fear. Fear and surprise. Our two weapons are fear and surprise. And ruthless efficiency. Our three weapons 
are fear, surprise, and ruthless efficiency. And an almost fanatical devotion to the Pope. Our four. No. 
Amongst our weapons. Amongst our weaponry, are such elements as fear, surprise. I'll come in again. NOBODY 
expects the Spanish Inquisition! Amongst our weaponry are such diverse elements as: fear, surprise, ruthless 
efficiency, an almost fanatical devotion to the Pope, and nice red uniforms - Oh damn!'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>q"))
@@ -58,10 +58,10 @@ sequence.append(utils.AssertPresentationAction(
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>q"))
 sequence.append(utils.AssertPresentationAction(
-    "6. Shift+q wrap to second quote", 
-    ["BRAILLE LINE:  'Now old lady, you have one last chance. Confess the heinous sin of heresy, reject the 
works of the'",
+    "6. Shift+q to second quote", 
+    ["BRAILLE LINE:  'Now old lady, you have one last chance. Confess the heinous sin of heresy, reject the 
works of the ungodly. Two last chances. And you shall be free. Three last chances. You have three last 
chances, the nature of which I have divulged in my previous utterance.'",
      "     VISIBLE:  'Now old lady, you have one last ', cursor=1",
-     "SPEECH OUTPUT: 'Now old lady, you have one last chance. Confess the heinous sin of heresy, reject the 
works of the'"]))
+     "SPEECH OUTPUT: 'Now old lady, you have one last chance. Confess the heinous sin of heresy, reject the 
works of the ungodly. Two last chances. And you shall be free. Three last chances. You have three last 
chances, the nature of which I have divulged in my previous utterance.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
diff --git a/test/keystrokes/firefox/html_struct_nav_bug_554616.py 
b/test/keystrokes/firefox/html_struct_nav_bug_554616.py
index 4ad927d..c6a1ffe 100644
--- a/test/keystrokes/firefox/html_struct_nav_bug_554616.py
+++ b/test/keystrokes/firefox/html_struct_nav_bug_554616.py
@@ -18,8 +18,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Wrapping to top.', cursor=0",
      "BRAILLE LINE:  'table with 4 rows 3 columns'",
      "     VISIBLE:  'table with 4 rows 3 columns', cursor=0",
-     "BRAILLE LINE:  'Snapshot version Date (UTC) Download'",
-     "     VISIBLE:  'Snapshot version Date (UTC) Down', cursor=1",
+     "BRAILLE LINE:  'Snapshot version'",
+     "     VISIBLE:  'Snapshot version', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
      "SPEECH OUTPUT: 'table with 4 rows 3 columns' voice=system",
      "SPEECH OUTPUT: 'Snapshot version column header'"]))
@@ -30,8 +30,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Alt Shift Down",
     ["BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
      "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=1",
-     "BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
-     "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=1",
+     "BRAILLE LINE:  'r2477'",
+     "     VISIBLE:  'r2477', cursor=1",
      "BRAILLE LINE:  'Row 2, column 1.'",
      "     VISIBLE:  'Row 2, column 1.', cursor=0",
      "SPEECH OUTPUT: 'r2477'",
@@ -41,12 +41,12 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt><Shift>Right"))
 sequence.append(utils.AssertPresentationAction(
     "3. Alt Shift Right",
-    ["BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
-     "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=1",
-     "BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
-     "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=7",
+    ["BRAILLE LINE:  'r2477'",
+     "     VISIBLE:  'r2477', cursor=1",
      "BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
      "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=7",
+     "BRAILLE LINE:  'Wed Nov 5 16:39:00 2008'",
+     "     VISIBLE:  'Wed Nov 5 16:39:00 2008', cursor=1",
      "BRAILLE LINE:  'Row 2, column 2.'",
      "     VISIBLE:  'Row 2, column 2.', cursor=0",
      "SPEECH OUTPUT: 'Date (UTC)'",
@@ -58,16 +58,16 @@ sequence.append(KeyComboAction("<Alt><Shift>Right"))
 sequence.append(utils.AssertPresentationAction(
     "4. Alt Shift Right",
     ["KNOWN ISSUE: Excessive amount of updating here and in other assertions.",
-     "BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
-     "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=7",
-     "BRAILLE LINE:  'installer (10190 KB)'",
-     "     VISIBLE:  'installer (10190 KB)', cursor=1",
+     "BRAILLE LINE:  'Wed Nov 5 16:39:00 2008'",
+     "     VISIBLE:  'Wed Nov 5 16:39:00 2008', cursor=1",
      "BRAILLE LINE:  'installer (10190 KB)'",
      "     VISIBLE:  'installer (10190 KB)', cursor=1",
+     "BRAILLE LINE:  'installer (10190 KB) portable archive (9154 KB)'",
+     "     VISIBLE:  'installer (10190 KB) portable ar', cursor=1",
      "BRAILLE LINE:  'Row 2, column 3.'",
      "     VISIBLE:  'Row 2, column 3.', cursor=0",
-     "BRAILLE LINE:  'installer (10190 KB)'",
-     "     VISIBLE:  'installer (10190 KB)', cursor=1",
+     "BRAILLE LINE:  'installer'",
+     "     VISIBLE:  'installer', cursor=1",
      "SPEECH OUTPUT: 'Download'",
      "SPEECH OUTPUT: 'installer link'",
      "SPEECH OUTPUT: '(10190 KB)'",
@@ -82,8 +82,8 @@ sequence.append(utils.AssertPresentationAction(
     "5. Alt Shift Down",
     ["BRAILLE LINE:  'installer (10193 KB)'",
      "     VISIBLE:  'installer (10193 KB)', cursor=1",
-     "BRAILLE LINE:  'installer (10193 KB)'",
-     "     VISIBLE:  'installer (10193 KB)', cursor=1",
+     "BRAILLE LINE:  'installer (10193 KB) portable archive (9149 KB)'",
+     "     VISIBLE:  'installer (10193 KB) portable ar', cursor=1",
      "BRAILLE LINE:  'Row 3, column 3.'",
      "     VISIBLE:  'Row 3, column 3.', cursor=0",
      "SPEECH OUTPUT: 'installer link'",
@@ -96,12 +96,12 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt><Shift>Left"))
 sequence.append(utils.AssertPresentationAction(
     "6. Alt Shift Left",
-    ["BRAILLE LINE:  'installer (10193 KB)'",
-     "     VISIBLE:  'installer (10193 KB)', cursor=1",
-     "BRAILLE LINE:  'r2468 Tue Nov 4 16:39:02 2008'",
-     "     VISIBLE:  'r2468 Tue Nov 4 16:39:02 2008', cursor=7",
+    ["BRAILLE LINE:  'installer (10193 KB) portable archive (9149 KB)'",
+     "     VISIBLE:  'installer (10193 KB) portable ar', cursor=1",
      "BRAILLE LINE:  'r2468 Tue Nov 4 16:39:02 2008'",
      "     VISIBLE:  'r2468 Tue Nov 4 16:39:02 2008', cursor=7",
+     "BRAILLE LINE:  'Tue Nov 4 16:39:02 2008'",
+     "     VISIBLE:  'Tue Nov 4 16:39:02 2008', cursor=1",
      "BRAILLE LINE:  'Row 3, column 2.'",
      "     VISIBLE:  'Row 3, column 2.', cursor=0",
      "SPEECH OUTPUT: 'Date (UTC)'",
@@ -112,12 +112,12 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt><Shift>Up"))
 sequence.append(utils.AssertPresentationAction(
     "7. Alt Shift Up",
-    ["BRAILLE LINE:  'r2468 Tue Nov 4 16:39:02 2008'",
-     "     VISIBLE:  'r2468 Tue Nov 4 16:39:02 2008', cursor=7",
-     "BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
-     "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=7",
+    ["BRAILLE LINE:  'Tue Nov 4 16:39:02 2008'",
+     "     VISIBLE:  'Tue Nov 4 16:39:02 2008', cursor=1",
      "BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
      "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=7",
+     "BRAILLE LINE:  'Wed Nov 5 16:39:00 2008'",
+     "     VISIBLE:  'Wed Nov 5 16:39:00 2008', cursor=1",
      "BRAILLE LINE:  'Row 2, column 2.'",
      "     VISIBLE:  'Row 2, column 2.', cursor=0",
      "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008'",
@@ -127,12 +127,12 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt><Shift>End"))
 sequence.append(utils.AssertPresentationAction(
     "8. Alt Shift End",
-    ["BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
-     "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=7",
-     "BRAILLE LINE:  'installer (10186 KB)'",
-     "     VISIBLE:  'installer (10186 KB)', cursor=1",
+    ["BRAILLE LINE:  'Wed Nov 5 16:39:00 2008'",
+     "     VISIBLE:  'Wed Nov 5 16:39:00 2008', cursor=1",
      "BRAILLE LINE:  'installer (10186 KB)'",
      "     VISIBLE:  'installer (10186 KB)', cursor=1",
+     "BRAILLE LINE:  'installer (10186 KB) portable archive (9146 KB)'",
+     "     VISIBLE:  'installer (10186 KB) portable ar', cursor=1",
      "BRAILLE LINE:  'Row 4, column 3.'",
      "     VISIBLE:  'Row 4, column 3.', cursor=0",
      "SPEECH OUTPUT: 'Download'",
@@ -146,12 +146,12 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt><Shift>Home"))
 sequence.append(utils.AssertPresentationAction(
     "9. Alt Shift Home",
-    ["BRAILLE LINE:  'installer (10186 KB)'",
-     "     VISIBLE:  'installer (10186 KB)', cursor=1",
-     "BRAILLE LINE:  'Snapshot version Date (UTC) Download'",
-     "     VISIBLE:  'Snapshot version Date (UTC) Down', cursor=1",
+    ["BRAILLE LINE:  'installer (10186 KB) portable archive (9146 KB)'",
+     "     VISIBLE:  'installer (10186 KB) portable ar', cursor=1",
      "BRAILLE LINE:  'Snapshot version Date (UTC) Download'",
      "     VISIBLE:  'Snapshot version Date (UTC) Down', cursor=1",
+     "BRAILLE LINE:  'Snapshot version'",
+     "     VISIBLE:  'Snapshot version', cursor=1",
      "BRAILLE LINE:  'Row 1, column 1.'",
      "     VISIBLE:  'Row 1, column 1.', cursor=0",
      "SPEECH OUTPUT: 'Snapshot version column header'",
diff --git a/test/keystrokes/firefox/html_struct_nav_bug_556470.py 
b/test/keystrokes/firefox/html_struct_nav_bug_556470.py
index a5a55b7..d306814 100644
--- a/test/keystrokes/firefox/html_struct_nav_bug_556470.py
+++ b/test/keystrokes/firefox/html_struct_nav_bug_556470.py
@@ -14,8 +14,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. t",
     ["BRAILLE LINE:  'table with 2 rows 3 columns'",
      "     VISIBLE:  'table with 2 rows 3 columns', cursor=0",
-     "BRAILLE LINE:  'col 1 col 2 col 3'",
-     "     VISIBLE:  'col 1 col 2 col 3', cursor=1",
+     "BRAILLE LINE:  'col 1'",
+     "     VISIBLE:  'col 1', cursor=0",
      "SPEECH OUTPUT: 'table with 2 rows 3 columns' voice=system",
      "SPEECH OUTPUT: 'col 1 column header'"]))
 
@@ -25,9 +25,9 @@ sequence.append(utils.AssertPresentationAction(
     "2. t",
     ["BRAILLE LINE:  'table with 2 rows 3 columns'",
      "     VISIBLE:  'table with 2 rows 3 columns', cursor=0",
-     "BRAILLE LINE:  '1 2 4'",
-     "     VISIBLE:  '1 2 4', cursor=1",
-     "SPEECH OUTPUT: 'table with 2 rows 3 columns'",
+     "BRAILLE LINE:  '1'",
+     "     VISIBLE:  '1', cursor=0",
+     "SPEECH OUTPUT: 'table with 2 rows 3 columns' voice=system",
      "SPEECH OUTPUT: '1'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -38,8 +38,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Wrapping to top.', cursor=0",
      "BRAILLE LINE:  'table with 2 rows 3 columns'",
      "     VISIBLE:  'table with 2 rows 3 columns', cursor=0",
-     "BRAILLE LINE:  'col 1 col 2 col 3'",
-     "     VISIBLE:  'col 1 col 2 col 3', cursor=1",
+     "BRAILLE LINE:  'col 1'",
+     "     VISIBLE:  'col 1', cursor=0",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
      "SPEECH OUTPUT: 'table with 2 rows 3 columns' voice=system",
      "SPEECH OUTPUT: 'col 1 column header'"]))
@@ -52,10 +52,10 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Wrapping to bottom.', cursor=0",
      "BRAILLE LINE:  'table with 2 rows 3 columns'",
      "     VISIBLE:  'table with 2 rows 3 columns', cursor=0",
-     "BRAILLE LINE:  '1 2 4'",
-     "     VISIBLE:  '1 2 4', cursor=1",
-     "SPEECH OUTPUT: 'Wrapping to bottom.'",
-     "SPEECH OUTPUT: 'table with 2 rows 3 columns'",
+     "BRAILLE LINE:  '1'",
+     "     VISIBLE:  '1', cursor=0",
+     "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
+     "SPEECH OUTPUT: 'table with 2 rows 3 columns' voice=system",
      "SPEECH OUTPUT: '1'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -64,8 +64,8 @@ sequence.append(utils.AssertPresentationAction(
     "5. shift+t", 
     ["BRAILLE LINE:  'table with 2 rows 3 columns'",
      "     VISIBLE:  'table with 2 rows 3 columns', cursor=0",
-     "BRAILLE LINE:  'col 1 col 2 col 3'",
-     "     VISIBLE:  'col 1 col 2 col 3', cursor=1",
+     "BRAILLE LINE:  'col 1'",
+     "     VISIBLE:  'col 1', cursor=0",
      "SPEECH OUTPUT: 'table with 2 rows 3 columns' voice=system",
      "SPEECH OUTPUT: 'col 1 column header'"]))
 
@@ -77,8 +77,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Wrapping to bottom.', cursor=0",
      "BRAILLE LINE:  'table with 2 rows 3 columns'",
      "     VISIBLE:  'table with 2 rows 3 columns', cursor=0",
-     "BRAILLE LINE:  '1 2 4'",
-     "     VISIBLE:  '1 2 4', cursor=1",
+     "BRAILLE LINE:  '1'",
+     "     VISIBLE:  '1', cursor=0",
      "SPEECH OUTPUT: 'Wrapping to bottom.'",
      "SPEECH OUTPUT: 'table with 2 rows 3 columns'",
      "SPEECH OUTPUT: '1'"]))
diff --git a/test/keystrokes/firefox/html_struct_nav_bug_567984.py 
b/test/keystrokes/firefox/html_struct_nav_bug_567984.py
index 91bd136..9b6c196 100644
--- a/test/keystrokes/firefox/html_struct_nav_bug_567984.py
+++ b/test/keystrokes/firefox/html_struct_nav_bug_567984.py
@@ -27,8 +27,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
 sequence.append(utils.AssertPresentationAction(
     "3. h",
-    ["BRAILLE LINE:  'Izrael bejelentette az  h3'",
-     "     VISIBLE:  'Izrael bejelentette az  h3', cursor=1",
+    ["BRAILLE LINE:  'Izrael bejelentette az ",
+     "egyoldal\xfa t\xfbzsz\xfcnetet h3'",
+     "     VISIBLE:  'Izrael bejelentette az ",
+     "egyoldal', cursor=1",
      "BRAILLE LINE:  'Izrael bejelentette az  h3'",
      "     VISIBLE:  'Izrael bejelentette az  h3', cursor=1",
      "SPEECH OUTPUT: 'Izrael bejelentette az ",
diff --git a/test/keystrokes/firefox/html_struct_nav_descriptions.py 
b/test/keystrokes/firefox/html_struct_nav_descriptions.py
index 45d608d..3cb587b 100644
--- a/test/keystrokes/firefox/html_struct_nav_descriptions.py
+++ b/test/keystrokes/firefox/html_struct_nav_descriptions.py
@@ -13,8 +13,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("k"))
 sequence.append(utils.AssertPresentationAction(
     "1. k for next link",
-    ["BRAILLE LINE:  'Foo, Bar, and Baz.'",
-     "     VISIBLE:  'Foo, Bar, and Baz.', cursor=1",
+    ["BRAILLE LINE:  'Foo'",
+     "     VISIBLE:  'Foo', cursor=1",
      "BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
      "SPEECH OUTPUT: 'Foo link Title of the Foo link.'"]))
@@ -23,16 +23,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("k"))
 sequence.append(utils.AssertPresentationAction(
     "2. k for next link",
-    ["BRAILLE LINE:  'Foo, Bar, and Baz.'",
-     "     VISIBLE:  'Foo, Bar, and Baz.', cursor=6",
+    ["BRAILLE LINE:  'Bar'",
+     "     VISIBLE:  'Bar', cursor=1",
      "SPEECH OUTPUT: 'Bar link ARIA description text.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("k"))
 sequence.append(utils.AssertPresentationAction(
     "3. k for next link",
-    ["BRAILLE LINE:  'Foo, Bar, and Baz.'",
-     "     VISIBLE:  'Foo, Bar, and Baz.', cursor=15",
+    ["BRAILLE LINE:  'Baz'",
+     "     VISIBLE:  'Baz', cursor=1",
      "SPEECH OUTPUT: 'Baz link Title of the Baz link.'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/html_struct_nav_headings_buried_deep.py 
b/test/keystrokes/firefox/html_struct_nav_headings_buried_deep.py
index 5a44c80..c61fbb7 100644
--- a/test/keystrokes/firefox/html_struct_nav_headings_buried_deep.py
+++ b/test/keystrokes/firefox/html_struct_nav_headings_buried_deep.py
@@ -19,8 +19,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. Shift+h for previous heading",
     ["BRAILLE LINE:  'Wrapping to bottom.'",
      "     VISIBLE:  'Wrapping to bottom.', cursor=0",
-     "BRAILLE LINE:  '• Heading 3 h3'",
-     "     VISIBLE:  '• Heading 3 h3', cursor=3",
+     "BRAILLE LINE:  'Heading 3 h3'",
+     "     VISIBLE:  'Heading 3 h3', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
      "SPEECH OUTPUT: 'Heading 3 heading level 3 link'"]))
 
@@ -28,32 +28,32 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>h"))
 sequence.append(utils.AssertPresentationAction(
     "2. Shift+h for previous heading",
-    ["BRAILLE LINE:  '• Heading 2 h3'",
-     "     VISIBLE:  '• Heading 2 h3', cursor=3",
+    ["BRAILLE LINE:  'Heading 2 h3'",
+     "     VISIBLE:  'Heading 2 h3', cursor=1",
      "SPEECH OUTPUT: 'Heading 2 heading level 3 link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>h"))
 sequence.append(utils.AssertPresentationAction(
     "3. Shift+h for previous heading",
-    ["BRAILLE LINE:  '• Heading 1 h3'",
-     "     VISIBLE:  '• Heading 1 h3', cursor=3",
+    ["BRAILLE LINE:  'Heading 1 h3'",
+     "     VISIBLE:  'Heading 1 h3', cursor=1",
      "SPEECH OUTPUT: 'Heading 1 heading level 3 link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
 sequence.append(utils.AssertPresentationAction(
     "4. h for next heading",
-    ["BRAILLE LINE:  '• Heading 2 h3'",
-     "     VISIBLE:  '• Heading 2 h3', cursor=3",
+    ["BRAILLE LINE:  'Heading 2 h3'",
+     "     VISIBLE:  'Heading 2 h3', cursor=1",
      "SPEECH OUTPUT: 'Heading 2 heading level 3 link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
 sequence.append(utils.AssertPresentationAction(
     "5. h for next heading",
-    ["BRAILLE LINE:  '• Heading 3 h3'",
-     "     VISIBLE:  '• Heading 3 h3', cursor=3",
+    ["BRAILLE LINE:  'Heading 3 h3'",
+     "     VISIBLE:  'Heading 3 h3', cursor=1",
      "SPEECH OUTPUT: 'Heading 3 heading level 3 link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -62,8 +62,8 @@ sequence.append(utils.AssertPresentationAction(
     "6. h for next heading",
     ["BRAILLE LINE:  'Wrapping to top.'",
      "     VISIBLE:  'Wrapping to top.', cursor=0",
-     "BRAILLE LINE:  '• Heading 1 h3'",
-     "     VISIBLE:  '• Heading 1 h3', cursor=3",
+     "BRAILLE LINE:  'Heading 1 h3'",
+     "     VISIBLE:  'Heading 1 h3', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
      "SPEECH OUTPUT: 'Heading 1 heading level 3 link'"]))
 
diff --git a/test/keystrokes/firefox/html_struct_nav_headings_with_hidden_anchors.py 
b/test/keystrokes/firefox/html_struct_nav_headings_with_hidden_anchors.py
index 57cf7e2..d2c4469 100644
--- a/test/keystrokes/firefox/html_struct_nav_headings_with_hidden_anchors.py
+++ b/test/keystrokes/firefox/html_struct_nav_headings_with_hidden_anchors.py
@@ -17,31 +17,28 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
 sequence.append(utils.AssertPresentationAction(
     "1. h for next heading",
-    ["KNOWN ISSUE: Speech is broken",
-     "BRAILLE LINE:  'line 2 h1'",
+    ["BRAILLE LINE:  'line 2 h1'",
      "     VISIBLE:  'line 2 h1', cursor=0",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'line 2 heading level 1'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
 sequence.append(utils.AssertPresentationAction(
     "2. h for next heading",
-    ["KNOWN ISSUE: Speech is broken",
-     "BRAILLE LINE:  'line 3 h1'",
+    ["BRAILLE LINE:  'line 3 h1'",
      "     VISIBLE:  'line 3 h1', cursor=0",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'line 3 heading level 1'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
 sequence.append(utils.AssertPresentationAction(
     "3. h for next heading",
-    ["KNOWN ISSUE: This is broken",
-     "BRAILLE LINE:  'Wrapping to top.'",
+    ["BRAILLE LINE:  'Wrapping to top.'",
      "     VISIBLE:  'Wrapping to top.', cursor=0",
-     "BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=0",
+     "BRAILLE LINE:  'line 1 h1'",
+     "     VISIBLE:  'line 1 h1', cursor=0",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'line 1 heading level 1'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_large_obj.py 
b/test/keystrokes/firefox/html_struct_nav_large_obj.py
index 9c0223b..f9e47f2 100644
--- a/test/keystrokes/firefox/html_struct_nav_large_obj.py
+++ b/test/keystrokes/firefox/html_struct_nav_large_obj.py
@@ -13,8 +13,25 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("o"))
 sequence.append(utils.AssertPresentationAction(
     "1. o to first large chunk", 
-    ["BRAILLE LINE:  'I have of late but'",
-     "     VISIBLE:  'I have of late but', cursor=1",
+    ["BRAILLE LINE:  'I have of late but",
+     "wherefore I know not lost all my mirth,",
+     "forgone all custom of exercises;",
+     "and indeed, it goes so heavily with",
+     "my disposition that this goodly frame,",
+     "the earth, seems to me a sterile promontory;",
+     "this most excellent canopy, the air, look you,",
+     "this brave o'erhanging firmament,",
+     "this majestical roof fretted with golden fire",
+     "why, it appeareth no other thing to me than a foul",
+     "and pestilent congregation of vapours.",
+     "What a piece of work is a man!",
+     "how noble in reason! how infinite in faculties!",
+     "in form and moving how express and admirable!",
+     "in action how like an angel!",
+     "in apprehension how like a god!",
+     "the beauty of the world, the paragon of animals!'",
+     "     VISIBLE:  'I have of late but",
+     "wherefore I k', cursor=1",
      "SPEECH OUTPUT: 'I have of late but",
      "wherefore I know not lost all my mirth,",
      "forgone all custom of exercises;",
@@ -37,8 +54,25 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("o"))
 sequence.append(utils.AssertPresentationAction(
     "2. o to second large chunk", 
-    ["BRAILLE LINE:  'I have of late but'",
-     "     VISIBLE:  'I have of late but', cursor=1",
+    ["BRAILLE LINE:  'I have of late but",
+     "wherefore I know not lost all my mirth,",
+     "forgone all custom of exercises;",
+     "and indeed, it goes so heavily with",
+     "my disposition that this goodly frame,",
+     "the earth, seems to me a sterile promontory;",
+     "this most excellent canopy, the air, look you,",
+     "this brave o'erhanging firmament,",
+     "this majestical roof fretted with golden fire",
+     "why, it appeareth no other thing to me than a foul",
+     "and pestilent congregation of vapours.",
+     "What a piece of work is a man!",
+     "how noble in reason! how infinite in faculties!",
+     "in form and moving how express and admirable!",
+     "in action how like an angel!",
+     "in apprehension how like a god!",
+     "the beauty of the world, the paragon of animals!'",
+     "     VISIBLE:  'I have of late but",
+     "wherefore I k', cursor=1",
      "SPEECH OUTPUT: 'I have of late but",
      "wherefore I know not lost all my mirth,",
      "forgone all custom of exercises;",
@@ -61,8 +95,25 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("o"))
 sequence.append(utils.AssertPresentationAction(
     "3. o to third large chunk", 
-    ["BRAILLE LINE:  'I have of late but'",
-     "     VISIBLE:  'I have of late but', cursor=1",
+    ["BRAILLE LINE:  'I have of late but",
+     "wherefore I know not lost all my mirth,",
+     "forgone all custom of exercises;",
+     "and indeed, it goes so heavily with",
+     "my disposition that this goodly frame,",
+     "the earth, seems to me a sterile promontory;",
+     "this most excellent canopy, the air, look you,",
+     "this brave o'erhanging firmament,",
+     "this majestical roof fretted with golden fire",
+     "why, it appeareth no other thing to me than a foul",
+     "and pestilent congregation of vapours.",
+     "What a piece of work is a man!",
+     "how noble in reason! how infinite in faculties!",
+     "in form and moving how express and admirable!",
+     "in action how like an angel!",
+     "in apprehension how like a god!",
+     "the beauty of the world, the paragon of animals!'",
+     "     VISIBLE:  'I have of late but",
+     "wherefore I k', cursor=1",
      "SPEECH OUTPUT: 'I have of late but",
      "wherefore I know not lost all my mirth,",
      "forgone all custom of exercises;",
@@ -85,8 +136,31 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("o"))
 sequence.append(utils.AssertPresentationAction(
     "4. o to fourth large chunk", 
-    ["BRAILLE LINE:  'I am a tranquilizer.'",
-     "     VISIBLE:  'I am a tranquilizer.', cursor=1",
+    ["BRAILLE LINE:  'I am a tranquilizer. ",
+     "I am effective at home, ",
+     "I work well at the office, ",
+     "I take exams, ",
+     "I appear in court, ",
+     "I carefully mend broken crockery - ",
+     "all you need do is take me, ",
+     "dissolve me under the tongue, ",
+     "all you need do is swallow me, ",
+     "just wash me down with water. I know how to cope with misfortune, ",
+     "how to endure bad news, ",
+     "take the edge of injustice, ",
+     "make up for the absence of God, ",
+     "help pick out your widow's weeds. ",
+     "What are you waiting for - ",
+     "have faith in chemistry's compassion. You're still a young man/woman, ",
+     "you really should settle down somehow. ",
+     "Who said ",
+     "life must be lived courageously? Hand your abyss over to me - ",
+     "I will line it up with soft sleep, ",
+     "you'll be grateful for ",
+     "the four-footed landing. Sell me your soul. ",
+     "There's no other buyer likely to turn up.'",
+     "     VISIBLE:  'I am a tranquilizer. ",
+     "I am effec', cursor=1",
      "SPEECH OUTPUT: 'I am a tranquilizer. ",
      "I am effective at home, ",
      "I work well at the office, ",
@@ -119,8 +193,25 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>o"))
 sequence.append(utils.AssertPresentationAction(
     "5. Shift + o to third large chunk", 
-    ["BRAILLE LINE:  'I have of late but'",
-     "     VISIBLE:  'I have of late but', cursor=1",
+    ["BRAILLE LINE:  'I have of late but",
+     "wherefore I know not lost all my mirth,",
+     "forgone all custom of exercises;",
+     "and indeed, it goes so heavily with",
+     "my disposition that this goodly frame,",
+     "the earth, seems to me a sterile promontory;",
+     "this most excellent canopy, the air, look you,",
+     "this brave o'erhanging firmament,",
+     "this majestical roof fretted with golden fire",
+     "why, it appeareth no other thing to me than a foul",
+     "and pestilent congregation of vapours.",
+     "What a piece of work is a man!",
+     "how noble in reason! how infinite in faculties!",
+     "in form and moving how express and admirable!",
+     "in action how like an angel!",
+     "in apprehension how like a god!",
+     "the beauty of the world, the paragon of animals!'",
+     "     VISIBLE:  'I have of late but",
+     "wherefore I k', cursor=1",
      "SPEECH OUTPUT: 'I have of late but",
      "wherefore I know not lost all my mirth,",
      "forgone all custom of exercises;",
diff --git a/test/keystrokes/firefox/html_struct_nav_links.py 
b/test/keystrokes/firefox/html_struct_nav_links.py
index 3ff62b4..a47bd43 100644
--- a/test/keystrokes/firefox/html_struct_nav_links.py
+++ b/test/keystrokes/firefox/html_struct_nav_links.py
@@ -13,8 +13,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("u"))
 sequence.append(utils.AssertPresentationAction(
     "1. u to anchors.html link",
-    ["BRAILLE LINE:  '• anchors.html'",
-     "     VISIBLE:  '• anchors.html', cursor=3",
+    ["BRAILLE LINE:  'anchors.html'",
+     "     VISIBLE:  'anchors.html', cursor=1",
      "BRAILLE LINE:  'anchors.html'",
      "     VISIBLE:  'anchors.html', cursor=1",
      "SPEECH OUTPUT: 'anchors.html link'"]))
@@ -23,16 +23,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("u"))
 sequence.append(utils.AssertPresentationAction(
     "2. u to blockquotes.html link",
-    ["BRAILLE LINE:  '• blockquotes.html'",
-     "     VISIBLE:  '• blockquotes.html', cursor=3",
+    ["BRAILLE LINE:  'blockquotes.html'",
+     "     VISIBLE:  'blockquotes.html', cursor=1",
      "SPEECH OUTPUT: 'blockquotes.html link'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>u"))
 sequence.append(utils.AssertPresentationAction(
     "3. shift + u to anchors.html link",
-    ["BRAILLE LINE:  '• anchors.html'",
-     "     VISIBLE:  '• anchors.html', cursor=3",
+    ["BRAILLE LINE:  'anchors.html'",
+     "     VISIBLE:  'anchors.html', cursor=1",
      "SPEECH OUTPUT: 'anchors.html link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -41,8 +41,8 @@ sequence.append(utils.AssertPresentationAction(
     "4. shift + u wrapping to bottom",
     ["BRAILLE LINE:  'Wrapping to bottom.'",
      "     VISIBLE:  'Wrapping to bottom.', cursor=0",
-     "BRAILLE LINE:  '• textattributes.html'",
-     "     VISIBLE:  '• textattributes.html', cursor=3",
+     "BRAILLE LINE:  'textattributes.html'",
+     "     VISIBLE:  'textattributes.html', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
      "SPEECH OUTPUT: 'textattributes.html link'"]))
 
@@ -50,8 +50,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>u"))
 sequence.append(utils.AssertPresentationAction(
     "5. shift + u to tables.html",
-    ["BRAILLE LINE:  '• tables.html'",
-     "     VISIBLE:  '• tables.html', cursor=3",
+    ["BRAILLE LINE:  'tables.html'",
+     "     VISIBLE:  'tables.html', cursor=1",
      "SPEECH OUTPUT: 'tables.html link'"]))
 
 sequence.append(KeyComboAction("Return"))
@@ -66,8 +66,8 @@ sequence.append(utils.AssertPresentationAction(
     "6. u to textattributes.html link",
     ["BRAILLE LINE:  'tables.html'",
      "     VISIBLE:  'tables.html', cursor=1",
-     "BRAILLE LINE:  '• textattributes.html'",
-     "     VISIBLE:  '• textattributes.html', cursor=3",
+     "BRAILLE LINE:  'textattributes.html'",
+     "     VISIBLE:  'textattributes.html', cursor=1",
      "SPEECH OUTPUT: 'textattributes.html link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -76,8 +76,8 @@ sequence.append(utils.AssertPresentationAction(
     "7. u to anchors.html link",
     ["BRAILLE LINE:  'Wrapping to top.'",
      "     VISIBLE:  'Wrapping to top.', cursor=0",
-     "BRAILLE LINE:  '• anchors.html'",
-     "     VISIBLE:  '• anchors.html', cursor=3",
+     "BRAILLE LINE:  'anchors.html'",
+     "     VISIBLE:  'anchors.html', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
      "SPEECH OUTPUT: 'anchors.html link'"]))
 
@@ -93,8 +93,8 @@ sequence.append(utils.AssertPresentationAction(
     "8. v to tables.html link",
     ["BRAILLE LINE:  'anchors.html'",
      "     VISIBLE:  'anchors.html', cursor=1",
-     "BRAILLE LINE:  '• tables.html'",
-     "     VISIBLE:  '• tables.html', cursor=3",
+     "BRAILLE LINE:  'tables.html'",
+     "     VISIBLE:  'tables.html', cursor=1",
      "SPEECH OUTPUT: 'tables.html link'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -103,8 +103,8 @@ sequence.append(utils.AssertPresentationAction(
     "9. v to blockquotes.html link",
     ["BRAILLE LINE:  'Wrapping to top.'",
      "     VISIBLE:  'Wrapping to top.', cursor=0",
-     "BRAILLE LINE:  '• anchors.html'",
-     "     VISIBLE:  '• anchors.html', cursor=3",
+     "BRAILLE LINE:  'anchors.html'",
+     "     VISIBLE:  'anchors.html', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
      "SPEECH OUTPUT: 'anchors.html link'"]))
 
@@ -114,8 +114,8 @@ sequence.append(utils.AssertPresentationAction(
     "10. shift + v to tables.html link",
     ["BRAILLE LINE:  'Wrapping to bottom.'",
      "     VISIBLE:  'Wrapping to bottom.', cursor=0",
-     "BRAILLE LINE:  '• tables.html'",
-     "     VISIBLE:  '• tables.html', cursor=3",
+     "BRAILLE LINE:  'tables.html'",
+     "     VISIBLE:  'tables.html', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
      "SPEECH OUTPUT: 'tables.html link'"]))
 
diff --git a/test/keystrokes/firefox/html_struct_nav_list_item.py 
b/test/keystrokes/firefox/html_struct_nav_list_item.py
index 1022d71..2bde578 100644
--- a/test/keystrokes/firefox/html_struct_nav_list_item.py
+++ b/test/keystrokes/firefox/html_struct_nav_list_item.py
@@ -13,11 +13,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "1. l to first list",
-    ["BRAILLE LINE:  'List with 4 items'",
-     "     VISIBLE:  'List with 4 items', cursor=0",
-     "BRAILLE LINE:  '1. remember what the heck we are doing each day'",
+    ["BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
-     "SPEECH OUTPUT: 'List with 4 items' voice=system",
+     "SPEECH OUTPUT: 'List with 4 items'",
      "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -25,22 +23,18 @@ sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "2. l to second list",
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
-     "BRAILLE LINE:  'List with 6 items'",
-     "     VISIBLE:  'List with 6 items', cursor=0",
      "BRAILLE LINE:  '6. And use roman numerals,'",
      "     VISIBLE:  '6. And use roman numerals,', cursor=1",
-     "SPEECH OUTPUT: 'List with 6 items' voice=system",
+     "SPEECH OUTPUT: 'List with 6 items'",
      "SPEECH OUTPUT: '6. And use roman numerals,'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "3. l to third list (3) landing on the first item (3.1)",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  '• listing item'",
+    ["BRAILLE LINE:  '• listing item'",
      "     VISIBLE:  '• listing item', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '• listing item'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/html_struct_nav_lists.py 
b/test/keystrokes/firefox/html_struct_nav_lists.py
index a0dd6b3..0b924d9 100644
--- a/test/keystrokes/firefox/html_struct_nav_lists.py
+++ b/test/keystrokes/firefox/html_struct_nav_lists.py
@@ -14,11 +14,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "1. l to first list",
-    ["BRAILLE LINE:  'List with 4 items'",
-     "     VISIBLE:  'List with 4 items', cursor=0",
-     "BRAILLE LINE:  '1. remember what the heck we are doing each day'",
+    ["BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
-     "SPEECH OUTPUT: 'List with 4 items' voice=system",
+     "SPEECH OUTPUT: 'List with 4 items'",
      "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -26,103 +24,72 @@ sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "2. l to second list",
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
-     "BRAILLE LINE:  'List with 6 items'",
-     "     VISIBLE:  'List with 6 items', cursor=0",
      "BRAILLE LINE:  '6. And use roman numerals,'",
      "     VISIBLE:  '6. And use roman numerals,', cursor=1",
-     "SPEECH OUTPUT: 'List with 6 items' voice=system",
+     "SPEECH OUTPUT: 'List with 6 items'",
      "SPEECH OUTPUT: '6. And use roman numerals,'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "3. l to third list",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  '• listing item'",
+    ["BRAILLE LINE:  '• listing item'",
      "     VISIBLE:  '• listing item', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '• listing item'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "4. l to third list's first sub list",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 1'",
-     "     VISIBLE:  'Nesting level 1', cursor=0",
-     "BRAILLE LINE:  '◦ first sublevel'",
+    ["BRAILLE LINE:  '◦ first sublevel'",
      "     VISIBLE:  '◦ first sublevel', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 1' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◦ first sublevel'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "5. l to third list's first sub list's first list",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 2'",
-     "     VISIBLE:  'Nesting level 2', cursor=0",
-     "BRAILLE LINE:  '◾ look for the bullet on'",
+    ["BRAILLE LINE:  '◾ look for the bullet on'",
      "     VISIBLE:  '◾ look for the bullet on', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 2' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◾ look for the bullet on'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "6. l to third list's inner-most list",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 3'",
-     "     VISIBLE:  'Nesting level 3', cursor=0",
-     "BRAILLE LINE:  '◾ each sublevel'",
+    ["BRAILLE LINE:  '◾ each sublevel'",
      "     VISIBLE:  '◾ each sublevel', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 3' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◾ each sublevel'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "7. l to next sub list in the third list",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 2'",
-     "     VISIBLE:  'Nesting level 2', cursor=0",
-     "BRAILLE LINE:  '◦ if your TYPE is circle'",
+    ["BRAILLE LINE:  '◦ if your TYPE is circle'",
      "     VISIBLE:  '◦ if your TYPE is circle', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 2' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◦ if your TYPE is circle'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "8. l to next sub list in the third list",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 1'",
-     "     VISIBLE:  'Nesting level 1', cursor=0",
-     "BRAILLE LINE:  '◦ was a composer who was not square'",
+    ["BRAILLE LINE:  '◦ was a composer who was not square'",
      "     VISIBLE:  '◦ was a composer who was not squ', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 1' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◦ was a composer who was not square'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
 sequence.append(utils.AssertPresentationAction(
     "9. l to the fourth list",
-    ["BRAILLE LINE:  'List with 3 items'",
-     "     VISIBLE:  'List with 3 items', cursor=0",
-     "BRAILLE LINE:  '◦ feeling listless'",
+    ["BRAILLE LINE:  '◦ feeling listless'",
      "     VISIBLE:  '◦ feeling listless', cursor=1",
-     "SPEECH OUTPUT: 'List with 3 items' voice=system",
+     "SPEECH OUTPUT: 'List with 3 items'",
      "SPEECH OUTPUT: '◦ feeling listless'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -131,12 +98,10 @@ sequence.append(utils.AssertPresentationAction(
     "10. l - should wrap to top",
     ["BRAILLE LINE:  'Wrapping to top.'",
      "     VISIBLE:  'Wrapping to top.', cursor=0",
-     "BRAILLE LINE:  'List with 4 items'",
-     "     VISIBLE:  'List with 4 items', cursor=0",
      "BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
-     "SPEECH OUTPUT: 'List with 4 items' voice=system",
+     "SPEECH OUTPUT: 'List with 4 items'",
      "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -145,93 +110,64 @@ sequence.append(utils.AssertPresentationAction(
     "11. shift + l - should wrap to bottom",
     ["BRAILLE LINE:  'Wrapping to bottom.'",
      "     VISIBLE:  'Wrapping to bottom.', cursor=0",
-     "BRAILLE LINE:  'List with 3 items'",
-     "     VISIBLE:  'List with 3 items', cursor=0",
      "BRAILLE LINE:  '◦ feeling listless'",
      "     VISIBLE:  '◦ feeling listless', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
-     "SPEECH OUTPUT: 'List with 3 items' voice=system",
+     "SPEECH OUTPUT: 'List with 3 items'",
      "SPEECH OUTPUT: '◦ feeling listless'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
 sequence.append(utils.AssertPresentationAction(
     "12. shift + l",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 1'",
-     "     VISIBLE:  'Nesting level 1', cursor=0",
-     "BRAILLE LINE:  '◦ was a composer who was not square'",
+    ["BRAILLE LINE:  '◦ was a composer who was not square'",
      "     VISIBLE:  '◦ was a composer who was not squ', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 1' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◦ was a composer who was not square'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
 sequence.append(utils.AssertPresentationAction(
     "13. shift + l",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 2'",
-     "     VISIBLE:  'Nesting level 2', cursor=0",
-     "BRAILLE LINE:  '◦ if your TYPE is circle'",
+    ["BRAILLE LINE:  '◦ if your TYPE is circle'",
      "     VISIBLE:  '◦ if your TYPE is circle', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 2' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◦ if your TYPE is circle'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
 sequence.append(utils.AssertPresentationAction(
     "14. shift + l",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 3'",
-     "     VISIBLE:  'Nesting level 3', cursor=0",
-     "BRAILLE LINE:  '◾ each sublevel'",
+    ["BRAILLE LINE:  '◾ each sublevel'",
      "     VISIBLE:  '◾ each sublevel', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 3' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◾ each sublevel'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
 sequence.append(utils.AssertPresentationAction(
     "15. shift + l",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 2'",
-     "     VISIBLE:  'Nesting level 2', cursor=0",
-     "BRAILLE LINE:  '◾ look for the bullet on'",
+    ["BRAILLE LINE:  '◾ look for the bullet on'",
      "     VISIBLE:  '◾ look for the bullet on', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 2' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◾ look for the bullet on'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
 sequence.append(utils.AssertPresentationAction(
     "16. shift + l",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  'Nesting level 1'",
-     "     VISIBLE:  'Nesting level 1', cursor=0",
-     "BRAILLE LINE:  '◦ first sublevel'",
+    ["BRAILLE LINE:  '◦ first sublevel'",
      "     VISIBLE:  '◦ first sublevel', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
-     "SPEECH OUTPUT: 'Nesting level 1' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '◦ first sublevel'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
 sequence.append(utils.AssertPresentationAction(
     "17. shift + l",
-    ["BRAILLE LINE:  'List with 2 items'",
-     "     VISIBLE:  'List with 2 items', cursor=0",
-     "BRAILLE LINE:  '• listing item'",
+    ["BRAILLE LINE:  '• listing item'",
      "     VISIBLE:  '• listing item', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items' voice=system",
+     "SPEECH OUTPUT: 'List with 2 items'",
      "SPEECH OUTPUT: '• listing item'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -239,22 +175,18 @@ sequence.append(KeyComboAction("<Shift>l"))
 sequence.append(utils.AssertPresentationAction(
     "18. shift + l",
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
-     "BRAILLE LINE:  'List with 6 items'",
-     "     VISIBLE:  'List with 6 items', cursor=0",
      "BRAILLE LINE:  '6. And use roman numerals,'",
      "     VISIBLE:  '6. And use roman numerals,', cursor=1",
-     "SPEECH OUTPUT: 'List with 6 items' voice=system",
+     "SPEECH OUTPUT: 'List with 6 items'",
      "SPEECH OUTPUT: '6. And use roman numerals,'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
 sequence.append(utils.AssertPresentationAction(
     "19. shift + l",
-    ["BRAILLE LINE:  'List with 4 items'",
-     "     VISIBLE:  'List with 4 items', cursor=0",
-     "BRAILLE LINE:  '1. remember what the heck we are doing each day'",
+    ["BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
-     "SPEECH OUTPUT: 'List with 4 items' voice=system",
+     "SPEECH OUTPUT: 'List with 4 items'",
      "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
 
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/firefox/line_nav_bug_555055.py b/test/keystrokes/firefox/line_nav_bug_555055.py
index 2ebe0b4..70ca493 100644
--- a/test/keystrokes/firefox/line_nav_bug_555055.py
+++ b/test/keystrokes/firefox/line_nav_bug_555055.py
@@ -8,10 +8,9 @@ import utils
 sequence = MacroSequence()
 
 sequence.append(PauseAction(3000))
-sequence.append(KeyComboAction("<Control>Home"))
 
 sequence.append(utils.StartRecordingAction())
-sequence.append(KeyComboAction("Down"))
+sequence.append(KeyComboAction("<Control>Home"))
 sequence.append(utils.AssertPresentationAction(
     "1. Line Down",
     ["BRAILLE LINE:  'Hello world!'",
diff --git a/test/keystrokes/firefox/line_nav_follow_same_page_link.py 
b/test/keystrokes/firefox/line_nav_follow_same_page_link.py
index 1843857..63017ff 100644
--- a/test/keystrokes/firefox/line_nav_follow_same_page_link.py
+++ b/test/keystrokes/firefox/line_nav_follow_same_page_link.py
@@ -39,17 +39,17 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
 sequence.append(utils.AssertPresentationAction(
     "4. Return",
-    ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
-     "SPEECH OUTPUT: 'link'"]))
+    ["BRAILLE LINE:  'Second h2'",
+     "     VISIBLE:  'Second h2', cursor=1",
+     "SPEECH OUTPUT: 'Second heading level 2'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "5. Down",
-    ["BRAILLE LINE:  'Second h2'",
-     "     VISIBLE:  'Second h2', cursor=1",
-     "SPEECH OUTPUT: 'Second heading level 2'"]))
+    ["BRAILLE LINE:  'Orca are versatile and opportunistic predators. Some populations feed mostly on fish, 
and other populations'",
+     "     VISIBLE:  'Orca are versatile and opportuni', cursor=1",
+     "SPEECH OUTPUT: 'Orca are versatile and opportunistic predators. Some populations feed mostly on fish, 
and other populations'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/line_nav_sun_java.py b/test/keystrokes/firefox/line_nav_sun_java.py
index ff62667..0c994b0 100644
--- a/test/keystrokes/firefox/line_nav_sun_java.py
+++ b/test/keystrokes/firefox/line_nav_sun_java.py
@@ -10,9 +10,7 @@ sequence = MacroSequence()
 # Work around some new quirk in Gecko that causes this test to fail if
 # run via the test harness rather than manually.
 sequence.append(KeyComboAction("<Control>r"))
-
 sequence.append(KeyComboAction("<Control>Home"))
-sequence.append(KeyComboAction("Down"))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
diff --git a/test/keystrokes/firefox/object_nav_links_in_text.py 
b/test/keystrokes/firefox/object_nav_links_in_text.py
index 293dd28..ba2a3fe 100644
--- a/test/keystrokes/firefox/object_nav_links_in_text.py
+++ b/test/keystrokes/firefox/object_nav_links_in_text.py
@@ -19,7 +19,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("H"))
 sequence.append(utils.AssertPresentationAction(
     "2. H for heading",
-    ["BRAILLE LINE:  'Enter Bug: orca \u2013 This page lets you enter a new bug  h1'",
+    ["BRAILLE LINE:  'Enter Bug: orca \u2013 This page lets you enter a new bug into Bugzilla. h1'",
      "     VISIBLE:  'Enter Bug: orca \u2013 This page lets', cursor=1",
      "SPEECH OUTPUT: 'Enter Bug: orca \u2013 This page lets you enter a new bug into Bugzilla. heading level 
1'"]))
 


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