[orca] Use braille generators to generate braille for Gecko content



commit 354fbe446f27d94e1666a2d109ce1c71ba516412
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Tue Sep 9 14:54:32 2014 -0400

    Use braille generators to generate braille for Gecko content

 src/orca/braille.py                                |    2 +-
 src/orca/formatting.py                             |   47 +++--
 src/orca/generator.py                              |   28 +++-
 src/orca/script_utilities.py                       |   17 ++
 src/orca/scripts/default.py                        |    9 -
 .../scripts/toolkits/Gecko/braille_generator.py    |   55 +++++-
 src/orca/scripts/toolkits/Gecko/script.py          |  228 +++++--------------
 .../scripts/toolkits/Gecko/script_utilities.py     |  152 ++++++-------
 .../scripts/toolkits/Gecko/speech_generator.py     |    2 +-
 .../scripts/toolkits/WebKitGtk/script_utilities.py |   20 --
 src/orca/speech_generator.py                       |    5 +
 src/orca/structural_navigation.py                  |   16 +--
 test/keystrokes/firefox/aria_button.py             |    9 +-
 test/keystrokes/firefox/aria_button_dojo.py        |   54 +++---
 test/keystrokes/firefox/aria_checkbox_dojo.py      |   20 +-
 test/keystrokes/firefox/aria_dialog_dojo.py        |    9 +-
 .../firefox/aria_editor_navigation_dojo.py         |    8 +-
 test/keystrokes/firefox/aria_grid_uiuc.py          |    6 +-
 test/keystrokes/firefox/aria_slider.py             |   10 +-
 test/keystrokes/firefox/aria_spinner_dojo.py       |   40 ++--
 test/keystrokes/firefox/aria_tabcontainer_dojo.py  |    4 +-
 test/keystrokes/firefox/aria_tabpanel.py           |    4 +-
 test/keystrokes/firefox/aria_tabpanel_text_dojo.py |    9 +-
 test/keystrokes/firefox/aria_tabpanel_uiuc.py      |    5 +-
 test/keystrokes/firefox/aria_toolbar_dojo.py       |    6 +-
 test/keystrokes/firefox/aria_tree_uiuc.py          |   10 +-
 test/keystrokes/firefox/find_wiki.py               |   15 +-
 test/keystrokes/firefox/focus_tracking_imagemap.py |    5 +-
 test/keystrokes/firefox/html_role_combo_box.py     |    3 +-
 .../firefox/html_role_list_item_where_am_i.py      |   12 +-
 .../firefox/html_struct_nav_activate_link.py       |    4 +-
 .../firefox/html_struct_nav_bug_567984.py          |    4 +-
 .../html_struct_nav_headings_buried_deep.py        |   24 +-
 .../firefox/label_inference_bugzilla_search.py     |   16 +-
 test/keystrokes/firefox/label_inference_entries.py |    4 +-
 test/keystrokes/firefox/label_inference_mailman.py |   30 ++--
 test/keystrokes/firefox/line_nav_bug_546815.py     |    3 +-
 test/keystrokes/firefox/line_nav_bug_549128.py     |   50 ++---
 test/keystrokes/firefox/line_nav_bug_552887a.py    |   24 ++-
 test/keystrokes/firefox/line_nav_bug_555055.py     |   24 +-
 .../firefox/line_nav_bugzilla_search_down.py       |   41 ++--
 .../firefox/line_nav_bugzilla_search_up.py         |   53 +++---
 test/keystrokes/firefox/line_nav_empty_anchor.py   |    8 +-
 test/keystrokes/firefox/line_nav_empty_textarea.py |    8 +-
 test/keystrokes/firefox/line_nav_enter_bug.py      |   76 ++++----
 test/keystrokes/firefox/line_nav_entries.py        |    4 +-
 .../firefox/line_nav_follow_same_page_link_2.py    |    5 +-
 .../firefox/line_nav_home_end_on_blank_line.py     |    4 +-
 .../firefox/line_nav_iframes_in_inline_block.py    |   34 ++--
 test/keystrokes/firefox/line_nav_nested_tables.py  |   65 +++---
 test/keystrokes/firefox/line_nav_pre_lines.py      |   14 +-
 test/keystrokes/firefox/line_nav_pre_links.py      |    4 +-
 test/keystrokes/firefox/line_nav_simple_form.py    |    8 +-
 test/keystrokes/firefox/line_nav_slash_test.py     |    8 +-
 test/keystrokes/firefox/line_nav_sun_java.py       |   18 +-
 .../firefox/line_nav_table_cell_links.py           |    2 +-
 test/keystrokes/firefox/line_nav_wiki_down.py      |   75 ++++----
 test/keystrokes/firefox/line_nav_wiki_up.py        |   70 +++---
 test/keystrokes/firefox/link_where_am_i.py         |    2 +-
 test/keystrokes/firefox/longdesc_6.py              |    1 -
 test/keystrokes/firefox/longdesc_8.py              |    2 +-
 test/keystrokes/firefox/say_all_bugzilla_search.py |    3 -
 test/keystrokes/firefox/say_all_enter_bug.py       |    8 -
 test/keystrokes/firefox/say_all_imagemap.py        |   11 +-
 test/keystrokes/firefox/say_all_nested_tables.py   |    6 -
 test/keystrokes/firefox/ui_role_tree.py            |    6 +-
 test/keystrokes/firefox/ui_role_tree_table.py      |   18 +-
 test/keystrokes/firefox/word_nav_links.py          |   30 ++--
 68 files changed, 739 insertions(+), 838 deletions(-)
---
diff --git a/src/orca/braille.py b/src/orca/braille.py
index 4a8f53d..5c92ccd 100644
--- a/src/orca/braille.py
+++ b/src/orca/braille.py
@@ -538,7 +538,7 @@ class Text(Region):
         try:
             endOffset = endOffset - self.lineOffset
         except TypeError:
-            pass
+            endOffset = len(string)
 
         try:
             self.startOffset = startOffset - self.lineOffset
diff --git a/src/orca/formatting.py b/src/orca/formatting.py
index 8c12c05..013043d 100644
--- a/src/orca/formatting.py
+++ b/src/orca/formatting.py
@@ -37,7 +37,7 @@ from . import settings
 TUTORIAL = '(tutorial and (pause + tutorial) or [])'
 MNEMONIC = '(mnemonic and (pause + mnemonic + lineBreak) or [])'
 
-BRAILLE_TEXT = '[Text(obj, asString(labelOrName + placeholderText), asString(eol))]\
+BRAILLE_TEXT = '[Text(obj, asString(labelOrName + placeholderText), asString(eol), startOffset, endOffset)]\
                 + (required and [Region(" " + asString(required))])\
                 + (readOnly and [Region(" " + asString(readOnly))])'
 
@@ -144,6 +144,7 @@ formatting = {
             'basicWhereAmI': 'labelOrName + roleName + value + percentage + ' + MNEMONIC + ' + accelerator + 
required'
             },
         pyatspi.ROLE_DIALOG: {
+            'focused': 'labelOrName',
             'unfocused': 'labelOrName + unrelatedLabels'
             },
         pyatspi.ROLE_DOCUMENT_FRAME: {
@@ -250,8 +251,8 @@ formatting = {
             },
         pyatspi.ROLE_PUSH_BUTTON: {
             'focused': 'expandableState',
-            'unfocused': 'labelOrName + expandableState + roleName + availability + ' + MNEMONIC + ' + 
accelerator',
-            'basicWhereAmI': 'labelOrName + expandableState + roleName + ' + MNEMONIC + ' + accelerator'
+            'unfocused': 'labelAndName + expandableState + roleName + availability + ' + MNEMONIC + ' + 
accelerator',
+            'basicWhereAmI': 'labelAndName + expandableState + roleName + ' + MNEMONIC + ' + accelerator'
             },
         pyatspi.ROLE_RADIO_BUTTON: {
             'focused': 'radioState',
@@ -426,10 +427,12 @@ formatting = {
             'unfocused': '[Component(obj,\
                                      asString(labelOrName + value + roleName + required))]'
             },
-        #pyatspi.ROLE_DIALOG: 'default'
+        pyatspi.ROLE_DIALOG: {
+            'unfocused': '[Component(obj, asString(labelOrName + roleName))]'
+            },
         #pyatspi.ROLE_DIRECTORY_PANE: 'default'
         pyatspi.ROLE_DOCUMENT_FRAME: {
-            'focused': '[Text(obj, asString(placeholderText), asString(eol))]\
+            'focused': '[Text(obj, asString(placeholderText), asString(eol), startOffset, endOffset)]\
                           + (required and [Region(" " + asString(required))])\
                           + (readOnly and [Region(" " + asString(readOnly))])',
             'unfocused': BRAILLE_TEXT
@@ -480,14 +483,15 @@ formatting = {
                                      asString(label) and (len(asString(label)) + 1) or 0)]'
         },
         pyatspi.ROLE_LIST_ITEM: {
-            'focused':   '[Component(obj,\
+            'focused':   '((substring and ' + BRAILLE_TEXT + ')\
+                          or ([Component(obj,\
                                      asString(label + displayedText + expandableState + roleName + 
availability) + asString(accelerator))]\
                           + (nestingLevel and [Region(" " + asString(nestingLevel))])\
-                          + (childWidget and ([Region(" ")] + childWidget))',
-            'unfocused': '[Component(obj,\
-                                     asString(label + displayedText + expandableState))]\
-                          + (nestingLevel and [Region(" " + asString(nestingLevel))])\
-                          + (childWidget and ([Region(" ")] + childWidget))',
+                          + (childWidget and ([Region(" ")] + childWidget))))',
+            'unfocused': '((substring and ' + BRAILLE_TEXT + ')\
+                          or ([Component(obj, asString(labelOrName + expandableState))]\
+                              + (nestingLevel and [Region(" " + asString(nestingLevel))])\
+                              + (childWidget and ([Region(" ")] + childWidget))))',
             },
         pyatspi.ROLE_MENU: {
             'focused':   '[Component(obj,\
@@ -510,9 +514,12 @@ formatting = {
             },
         #pyatspi.ROLE_PAGE_TAB_LIST: 'default'
         pyatspi.ROLE_PANEL: {
-            'unfocused': '[Component(obj,\
-                                     asString(labelAndName + roleName))]\
-                          + (childWidget and ([Region(" ")] + childWidget))'
+            'unfocused': '((substring and ' + BRAILLE_TEXT + ')\
+                          or ([Component(obj, asString(labelAndName + roleName))]\
+                             + (childWidget and ([Region(" ")] + childWidget))))'
+            },
+        pyatspi.ROLE_PARAGRAPH: {
+            'unfocused': BRAILLE_TEXT
             },
         pyatspi.ROLE_PASSWORD_TEXT: {
             'unfocused': BRAILLE_TEXT
@@ -520,7 +527,7 @@ formatting = {
         #pyatspi.ROLE_PROGRESS_BAR: 'default'
         pyatspi.ROLE_PUSH_BUTTON: {
             'unfocused': '[Component(obj,\
-                                     asString((labelOrName or description) + expandableState + roleName))]'
+                                     asString((labelAndName or description) + expandableState + roleName))]'
             },
         pyatspi.ROLE_RADIO_BUTTON: {
             'unfocused': '[Component(obj,\
@@ -545,6 +552,9 @@ formatting = {
         pyatspi.ROLE_SCROLL_PANE: {
             'unfocused': 'asPageTabOrScrollPane'
             },
+        pyatspi.ROLE_SECTION: {
+            'unfocused': BRAILLE_TEXT
+            },
         #'REAL_ROLE_SCROLL_PANE': 'default'
         pyatspi.ROLE_SLIDER: {
             'unfocused': '[Component(obj,\
@@ -558,10 +568,11 @@ formatting = {
         #pyatspi.ROLE_SPLIT_PANE: 'default'
         #pyatspi.ROLE_TABLE: 'default'
         pyatspi.ROLE_TABLE_CELL: {
-            'unfocused': 'tableCellRow',
+            'unfocused': '((substring and ' + BRAILLE_TEXT + ') or tableCellRow)',
             },
         'REAL_ROLE_TABLE_CELL': {
-            'unfocused': '(tableCell2ChildToggle + tableCell2ChildLabel)\
+            'unfocused': '((tableCell2ChildToggle + tableCell2ChildLabel)\
+                          or (substring and ' + BRAILLE_TEXT + ') \
                           or (cellCheckedState\
                               + (columnHeaderIfToggleAndNoText and [Region(" "), Component(obj, 
asString(columnHeaderIfToggleAndNoText))])\
                               + ((realActiveDescendantDisplayedText and [Component(obj, 
asString(realActiveDescendantDisplayedText))])\
@@ -569,7 +580,7 @@ formatting = {
                               + (realActiveDescendantRoleName and [Component(obj, 
(realActiveDescendantDisplayedText and " " or "") + asString(realActiveDescendantRoleName))])\
                               + (expandableState and [Region(" " + asString(expandableState))])\
                               + (required and [Region(" " + asString(required))]))\
-                          or ([Component(obj,"")])'
+                          or ([Component(obj,"")]))'
             },
         #pyatspi.ROLE_TABLE_COLUMN_HEADER: 'default'
         #pyatspi.ROLE_TABLE_ROW_HEADER: 'default'
diff --git a/src/orca/generator.py b/src/orca/generator.py
index 7a70ea0..d82aedc 100644
--- a/src/orca/generator.py
+++ b/src/orca/generator.py
@@ -344,7 +344,7 @@ class Generator:
         result.extend(label)
         if not len(label):
             result.extend(name)
-        elif len(name) and name[0] != label[0]:
+        elif len(name) and name[0].strip() != label[0].strip():
             result.extend(name)
         return result
 
@@ -948,12 +948,34 @@ class Generator:
     #                                                                   #
     #####################################################################
 
+    def _generateSubstring(self, obj, **args):
+        start = args.get('startOffset')
+        end = args.get('endOffset')
+        if start == None or end == None:
+            return []
+
+        substring = self._script.utilities.substring(obj, start, end)
+        if substring and substring.strip() != obj.name:
+            return [substring]
+
+        return []
+
+    def _generateStartOffset(self, obj, **args):
+        return args.get('startOffset')
+
+    def _generateEndOffset(self, obj, **args):
+        return args.get('endOffset')
+
     def _generateCurrentLineText(self, obj, **args ):
         """Returns an array of strings for use by speech and braille
         that represents the current line of text, if
         this is a text object.  [[[WDW - consider returning an empty
         array if this is not a text object.]]]
         """
+        result = self._generateSubstring(obj, **args)
+        if result:
+            return result
+
         [text, caretOffset, startOffset] = self._script.getTextLineAtCaret(obj)
         return [text]
 
@@ -961,6 +983,10 @@ class Generator:
         """Returns an array of strings for use by speech and braille that
         represents all the text being displayed by the object.
         """
+        result = self._generateSubstring(obj, **args)
+        if result:
+            return result
+
         displayedText = self._script.utilities.displayedText(obj)
         if not displayedText:
             return []
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index e2b88a8..40c2951 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -2735,3 +2735,20 @@ class Utilities:
 
     def hasLongDesc(self, obj):
         return False
+
+    def headingLevel(self, obj):
+        level = 0
+
+        if obj is None:
+            return level
+
+        if obj.getRole() == pyatspi.ROLE_HEADING:
+            attributes = obj.getAttributes()
+            if attributes is None:
+                return level
+            for attribute in attributes:
+                if attribute.startswith("level:"):
+                    level = int(attribute.split(":")[1])
+                    break
+
+        return level
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index 493dd3b..e0b17d3 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -848,15 +848,6 @@ class Script(script.Script):
         line = self.getNewBrailleLine()
         braille.addLine(line)
 
-        # For multiline text areas, we only show the context if we
-        # are on the very first line.  Otherwise, we show only the
-        # line.
-        #
-        try:
-            text = obj.queryText()
-        except NotImplementedError:
-            text = None
-
         result = self.brailleGenerator.generateBraille(obj)
         self.addBrailleRegionsToLine(result[0], line)
 
diff --git a/src/orca/scripts/toolkits/Gecko/braille_generator.py 
b/src/orca/scripts/toolkits/Gecko/braille_generator.py
index 6ccf24e..772c7e0 100644
--- a/src/orca/scripts/toolkits/Gecko/braille_generator.py
+++ b/src/orca/scripts/toolkits/Gecko/braille_generator.py
@@ -32,6 +32,7 @@ __license__   = "LGPL"
 import pyatspi
 
 import orca.braille_generator as braille_generator
+import orca.object_properties as object_properties
 
 from orca.orca_i18n import _ # for gettext support
 
@@ -63,23 +64,49 @@ class BrailleGenerator(braille_generator.BrailleGenerator):
                 obj, [pyatspi.ROLE_LINK], [pyatspi.ROLE_DOCUMENT_FRAME])
         return imageLink
 
+    def __generateHeadingRole(self, obj):
+        result = []
+        level = self._script.utilities.headingLevel(obj)
+        result.append(object_properties.ROLE_HEADING_LEVEL_BRAILLE % level)
+
+        return result
+
     def _generateRoleName(self, obj, **args):
         """Prevents some roles from being displayed."""
 
         doNotDisplay = [pyatspi.ROLE_FORM,
                         pyatspi.ROLE_SECTION,
+                        pyatspi.ROLE_PARAGRAPH,
                         pyatspi.ROLE_UNKNOWN]
 
         if not obj.getState().contains(pyatspi.STATE_FOCUSABLE):
             doNotDisplay.extend([pyatspi.ROLE_LIST,
                                  pyatspi.ROLE_LIST_ITEM,
+                                 pyatspi.ROLE_COLUMN_HEADER,
+                                 pyatspi.ROLE_ROW_HEADER,
+                                 pyatspi.ROLE_TABLE_CELL,
                                  pyatspi.ROLE_PANEL])
 
+        if args.get('startOffset') != None and args.get('endOffset') != None:
+            doNotDisplay.append(pyatspi.ROLE_ALERT)
+
         role = args.get('role', obj.getRole())
         if role in doNotDisplay:
             return []
 
-        return braille_generator.BrailleGenerator._generateRoleName(
+        if role == pyatspi.ROLE_HEADING:
+            return self.__generateHeadingRole(obj)
+
+        result = braille_generator.BrailleGenerator._generateRoleName(
+            self, obj, **args)
+
+        return result
+
+    def _generateLabelOrName(self, obj, **args):
+        if self._script.utilities.isTextBlockElement(obj):
+            return []
+
+        return braille_generator.BrailleGenerator._generateLabelOrName(
             self, obj, **args)
 
     def _generateName(self, obj, **args):
@@ -163,7 +190,10 @@ class BrailleGenerator(braille_generator.BrailleGenerator):
     def _generateExpandedEOCs(self, obj, **args):
         """Returns the expanded embedded object characters for an object."""
         result = []
-        text = self._script.utilities.expandEOCs(obj)
+
+        startOffset = args.get('startOffset', 0)
+        endOffset = args.get('endOffset', -1)
+        text = self._script.utilities.expandEOCs(obj, startOffset, endOffset)
         if text:
             result.append(text)
         return result
@@ -171,11 +201,11 @@ class BrailleGenerator(braille_generator.BrailleGenerator):
     def generateBraille(self, obj, **args):
         result = []
         args['includeContext'] = not self._script.inDocumentContent(obj)
-
         oldRole = None
         if self._script.utilities.isEntry(obj):
             oldRole = self._overrideRole(pyatspi.ROLE_ENTRY, args)
-        elif self._script.utilities.isClickableElement(obj):
+        elif self._script.utilities.isClickableElement(obj) \
+             or self._script.utilities.isLink(obj):
             oldRole = self._overrideRole(pyatspi.ROLE_LINK, args)
 
         # Treat menu items in collapsed combo boxes as if the combo box
@@ -194,3 +224,20 @@ class BrailleGenerator(braille_generator.BrailleGenerator):
         if oldRole:
             self._restoreRole(oldRole, args)
         return result
+
+    def _generateEol(self, obj, **args):
+        end = args.get('endOffset')
+        if end == None or obj.getState().contains(pyatspi.STATE_EDITABLE) \
+           or not self._script.inDocumentContent(obj):
+            return braille_generator.BrailleGenerator._generateEol(self, obj, **args)
+
+        return []
+
+    def _generateNestingLevel(self, obj, **args):
+        start = args.get('startOffset')
+        end = args.get('endOffset')
+        if start != None and end != None:
+            return []
+
+        return braille_generator.BrailleGenerator._generateNestingLevel(
+            self, obj, **args)
diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index 2d19bb2..9f1e50b 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -1396,17 +1396,13 @@ class Script(default.Script):
             debug.println(debug.LEVEL_INFO, "BRAILLE: update disabled")
             return
 
-        if not self.inDocumentContent():
+        if not self.inDocumentContent() or self._inFocusMode:
             default.Script.updateBraille(self, obj, extraRegion)
             return
 
         if not obj:
             return
 
-        if self._inFocusMode:
-            default.Script.updateBraille(self, obj, extraRegion)
-            return
-
         line = self.getNewBrailleLine(clearBraille=True, addLine=True)
 
         [focusedObj, focusedOffset] = self.getCaretContext()
@@ -1414,121 +1410,43 @@ class Script(default.Script):
         if not len(contents):
             return
 
+        contents = self.utilities.filterContentsForPresentation(contents)
         index = self.utilities.findObjectInContents(focusedObj, focusedOffset, contents)
-        whitespace = [" ", "\n", self.NO_BREAK_SPACE_CHARACTER]
-
         focusedRegion = None
+        lastObj = None
         for i, content in enumerate(contents):
-            isFocusedObj = (i == index)
             [obj, startOffset, endOffset, string] = content
-            if not obj or self.isLabellingContents(obj, contents):
-                continue
-
-            role = obj.getRole()
-            if (not len(string) and role != pyatspi.ROLE_PARAGRAPH) \
-               or self.utilities.isEntry(obj) \
-               or self.utilities.isPasswordText(obj) \
-               or self.utilities.isClickableElement(obj) \
-               or role in [pyatspi.ROLE_LINK, pyatspi.ROLE_PUSH_BUTTON,
-                           pyatspi.ROLE_CHECK_BOX, pyatspi.ROLE_RADIO_BUTTON,
-                           pyatspi.ROLE_TOGGLE_BUTTON, pyatspi.ROLE_COMBO_BOX]:
-                [regions, fRegion] = \
-                          self.brailleGenerator.generateBraille(obj)
-
-                if isFocusedObj:
-                    focusedRegion = fRegion
-
-            else:
-                regions = [self.getNewBrailleText(obj,
-                                                  startOffset=startOffset,
-                                                  endOffset=endOffset)]
-
-                if role == pyatspi.ROLE_CAPTION:
-                    regions.append(self.getNewBrailleRegion(
-                        " " + self.brailleGenerator.getLocalizedRoleName(obj)))
-
-                if isFocusedObj:
-                    focusedRegion = regions[0]
-
-            # We only want to display the heading role and level if we
-            # have found the final item in that heading, or if that
-            # heading contains no children.
-            #
-            isLastObject = (i == len(contents) - 1)
-            if role == pyatspi.ROLE_HEADING \
-               and (isLastObject or not obj.childCount):
-                heading = obj
-            elif isLastObject:
-                heading = self.utilities.ancestorWithRole(
-                    obj, [pyatspi.ROLE_HEADING], [pyatspi.ROLE_DOCUMENT_FRAME])
-            else:
-                heading = None
-
-            if heading:
-                level = self.getHeadingLevel(heading)
-                headingString = \
-                    object_properties.ROLE_HEADING_LEVEL_BRAILLE % level
-                if not string.endswith(" "):
-                    headingString = " " + headingString
-                if not isLastObject:
-                    headingString += " "
-                regions.append(self.getNewBrailleRegion((headingString)))
-
-            # Add whitespace if we need it. [[[TODO: JD - But should we be
-            # doing this in the braille generators rather than here??]]]
-            #
-            if regions and len(line.regions) \
-               and regions[0].string and line.regions[-1].string \
-               and not regions[0].string[0] in whitespace \
-               and not line.regions[-1].string[-1] in whitespace:
-
-                # There is nothing separating the previous braille region from
-                # this one. We might or might not want to add some whitespace
-                # for readability.
-                #
-                lastObj = contents[i - 1][0]
-
-                # If we have two of the same braille class, or if the previous
-                # region is a component or a generic region, or an image link,
-                # we should add some space.
-                #
-                if line.regions[-1].__class__ == regions[0].__class__ \
-                   or line.regions[-1].__class__ in [braille.Component,
-                                                     braille.Region] \
-                   or lastObj.getRole() == pyatspi.ROLE_IMAGE \
-                   or obj.getRole() == pyatspi.ROLE_IMAGE:
-                    self.addToLineAsBrailleRegion(" ", line)
-
-                # The above check will catch table cells with uniform
-                # contents and form fields -- and do so more efficiently
-                # than walking up the hierarchy. But if we have a cell
-                # with text next to a cell with a link.... Ditto for
-                # sections on the same line.
-                #
+            [regions, fRegion] = self.brailleGenerator.generateBraille(
+                obj, startOffset=startOffset, endOffset=endOffset)
+            if i == index:
+                focusedRegion = fRegion
+
+            if line.regions and regions:
+                if line.regions[-1].string:
+                    lastChar = line.regions[-1].string[-1]
                 else:
-                    layoutRoles = [pyatspi.ROLE_TABLE_CELL,
-                                   pyatspi.ROLE_SECTION,
-                                   pyatspi.ROLE_LIST_ITEM]
-                    if role in layoutRoles:
-                        acc1 = obj
-                    else:
-                        acc1 = self.utilities.ancestorWithRole(
-                            obj, layoutRoles, [pyatspi.ROLE_DOCUMENT_FRAME])
-                    if acc1:
-                        if lastObj.getRole() == acc1.getRole():
-                            acc2 = lastObj
-                        else:
-                            acc2 = self.utilities.ancestorWithRole(
-                                lastObj,
-                                layoutRoles,
-                                [pyatspi.ROLE_DOCUMENT_FRAME])
-                        if not self.utilities.isSameObject(acc1, acc2):
-                            self.addToLineAsBrailleRegion(" ", line)
+                    lastChar = ""
+                if regions[0].string:
+                    nextChar = regions[0].string[0]
+                else:
+                    nextChar = ""
+                if self.utilities.needsSeparator(lastChar, nextChar):
+                    self.addToLineAsBrailleRegion(" ", line)
 
             self.addBrailleRegionsToLine(regions, line)
+            lastObj = obj
 
-            if isLastObject:
-                line.regions[-1].string = line.regions[-1].string.rstrip(" ")
+        if line.regions:
+            line.regions[-1].string = line.regions[-1].string.rstrip(" ")
+
+        # TODO - JD: This belongs in the generator.
+        if lastObj and lastObj.getRole() != pyatspi.ROLE_HEADING:
+            heading = self.utilities.ancestorWithRole(
+                lastObj, [pyatspi.ROLE_HEADING], [pyatspi.ROLE_DOCUMENT_FRAME])
+            if heading:
+                level = self.utilities.headingLevel(heading)
+                string = " %s" % object_properties.ROLE_HEADING_LEVEL_BRAILLE % level
+                self.addToLineAsBrailleRegion(string, line)
 
         if extraRegion:
             self.addBrailleRegionToLine(extraRegion, line)
@@ -1766,26 +1684,6 @@ class Script(default.Script):
 
         return None
  
-    def getHeadingLevel(self, obj):
-        """Determines the heading level of the given object.  A value
-        of 0 means there is no heading level."""
-
-        level = 0
-
-        if obj is None:
-            return level
-
-        if obj.getRole() == pyatspi.ROLE_HEADING:
-            attributes = obj.getAttributes()
-            if attributes is None:
-                return level
-            for attribute in attributes:
-                if attribute.startswith("level:"):
-                    level = int(attribute.split(":")[1])
-                    break
-
-        return level
-
     def getTopOfFile(self):
         """Returns the object and first caret offset at the top of the
          document frame."""
@@ -1998,7 +1896,11 @@ class Script(default.Script):
         doNotDescend = obj.getState().contains(pyatspi.STATE_FOCUSABLE) \
                        and obj.getRole() in [pyatspi.ROLE_COMBO_BOX,
                                              pyatspi.ROLE_LIST_BOX,
-                                             pyatspi.ROLE_LIST]
+                                             pyatspi.ROLE_LIST,
+                                             pyatspi.ROLE_PUSH_BUTTON,
+                                             pyatspi.ROLE_TABLE_CELL,
+                                             pyatspi.ROLE_TOGGLE_BUTTON,
+                                             pyatspi.ROLE_TOOL_BAR]
 
         isHidden = self.utilities.isHidden(obj)
 
@@ -2110,7 +2012,11 @@ class Script(default.Script):
         doNotDescend = obj.getState().contains(pyatspi.STATE_FOCUSABLE) \
                        and obj.getRole() in [pyatspi.ROLE_COMBO_BOX,
                                              pyatspi.ROLE_LIST_BOX,
-                                             pyatspi.ROLE_LIST]
+                                             pyatspi.ROLE_LIST,
+                                             pyatspi.ROLE_PUSH_BUTTON,
+                                             pyatspi.ROLE_TABLE_CELL,
+                                             pyatspi.ROLE_TOGGLE_BUTTON,
+                                             pyatspi.ROLE_TOOL_BAR]
 
         isHidden = self.utilities.isHidden(obj)
 
@@ -2441,50 +2347,36 @@ class Script(default.Script):
         where the caret is.
         """
 
-        # We'll let the default script handle entries and other entry-like
-        # things (e.g. the text portion of a dojo spin button).
-        #
-        if not self.inDocumentContent(obj) \
+        if self._inFocusMode or not self.inDocumentContent(obj) \
            or self.utilities.isEntry(obj) \
            or self.utilities.isPasswordText(obj):
             return default.Script.getTextLineAtCaret(self, obj, offset)
 
-        # Find the current line.
-        #
-        contextObj, contextOffset = self.getCaretContext()
-        contextOffset = max(0, contextOffset)
-        contents = self.getLineContentsAtOffset(contextObj, contextOffset)
+        if offset == None:
+            try:
+                offset = max(0, obj.queryText().caretOffset)
+            except:
+                offset = 0
 
-        # Determine the caretOffset.
-        #
-        if self.utilities.isSameObject(obj, contextObj):
+        contextObj, contextOffset = self.getCaretContext()
+        if self.utilities.isSameObject(contextObj, obj):
             caretOffset = contextOffset
         else:
-            try:
-                text = obj.queryText()
-            except:
-                caretOffset = 0
-            else:
-                caretOffset = text.caretOffset
+            caretOffset = offset
 
-        # The reason we typically use this method is to present the contents
-        # of the current line, so our initial assumption is that the obj
-        # being passed in is also on this line. We'll try that first. We
-        # might have multiple instances of obj, in which case we'll have
-        # to consider the offset as well.
-        #
-        for content in contents:
-            candidate, startOffset, endOffset, string = content
-            if self.utilities.isSameObject(candidate, obj) \
-               and (offset is None or (startOffset <= offset <= endOffset)):
+        contents = self.getLineContentsAtOffset(obj, offset)
+        contents = list(filter(lambda x: x[0] == obj, contents))
+        if len(contents) == 1:
+            index = 0
+        else:
+            index = self.utilities.findObjectInContents(obj, offset, contents)
+
+        if index > -1:
+            candidate, startOffset, endOffset, string = contents[index]
+            if string.find(self.EMBEDDED_OBJECT_CHARACTER) == -1:
                 return string, caretOffset, startOffset
 
-        # If we're still here, obj presumably is not on this line. This
-        # shouldn't happen, but if it does we'll let the default script
-        # handle it for now.
-        #
-        #print "getTextLineAtCaret failed"
-        return default.Script.getTextLineAtCaret(self, obj, offset)
+        return '', 0, 0
 
     def searchForCaretLocation(self, acc):
         """Attempts to locate the caret on the page independent of our
diff --git a/src/orca/scripts/toolkits/Gecko/script_utilities.py 
b/src/orca/scripts/toolkits/Gecko/script_utilities.py
index ad92680..998dd80 100644
--- a/src/orca/scripts/toolkits/Gecko/script_utilities.py
+++ b/src/orca/scripts/toolkits/Gecko/script_utilities.py
@@ -87,86 +87,6 @@ class Utilities(script_utilities.Utilities):
 
         return index
 
-    def displayedText(self, obj):
-        """Returns the text being displayed for an object.
-
-        Arguments:
-        - obj: the object
-
-        Returns the text being displayed for an object or None if there isn't
-        any text being shown.  Overridden in this script because we have lots
-        of whitespace we need to remove.
-        """
-
-        displayedText = script_utilities.Utilities.displayedText(self, obj)
-        if displayedText \
-           and not (obj.getState().contains(pyatspi.STATE_EDITABLE) \
-                    or obj.getRole() in [pyatspi.ROLE_ENTRY,
-                                         pyatspi.ROLE_PASSWORD_TEXT]):
-            displayedText = displayedText.strip()
-            # Some ARIA widgets (e.g. the list items in the chat box
-            # in gmail) implement the accessible text interface but
-            # only contain whitespace.
-            #
-            if not displayedText \
-               and obj.getState().contains(pyatspi.STATE_FOCUSED):
-                label = self.displayedLabel(obj)
-                if not label:
-                    displayedText = obj.name
-
-        return displayedText
-
-    def displayedLabel(self, obj):
-        """If there is an object labelling the given object, return the
-        text being displayed for the object labelling this object.
-        Otherwise, return None.  Overridden here to handle instances
-        of bogus labels and form fields where a lack of labels necessitates
-        our attempt to guess the text that is functioning as a label.
-
-        Argument:
-        - obj: the object in question
-
-        Returns the string of the object labelling this object, or None
-        if there is nothing of interest here.
-        """
-
-        string = None
-        labels = self.labelsForObject(obj)
-        for label in labels:
-            # Check to see if the official labels are valid.
-            #
-            bogus = False
-            if self._script.inDocumentContent() \
-               and obj.getRole() in [pyatspi.ROLE_COMBO_BOX,
-                                     pyatspi.ROLE_LIST_BOX,
-                                     pyatspi.ROLE_LIST]:
-                # Bogus case #1:
-                # <label></label> surrounding the entire combo box/list which
-                # makes the entire combo box's/list's contents serve as the
-                # label. We can identify this case because the child of the
-                # label is the combo box/list. See bug #428114, #441476.
-                #
-                if label.childCount:
-                    bogus = (label[0].getRole() == obj.getRole())
-
-            if not bogus:
-                # Bogus case #2:
-                # <label></label> surrounds not just the text serving as the
-                # label, but whitespace characters as well (e.g. the text
-                # serving as the label is on its own line within the HTML).
-                # Because of the Mozilla whitespace bug, these characters
-                # will become part of the label which will cause the label
-                # and name to no longer match and Orca to seemingly repeat
-                # the label.  Therefore, strip out surrounding whitespace.
-                # See bug #441610 and
-                # https://bugzilla.mozilla.org/show_bug.cgi?id=348901
-                #
-                expandedLabel = self.expandEOCs(label)
-                if expandedLabel:
-                    string = self.appendString(string, expandedLabel.strip())
-
-        return string
-
     def documentFrame(self):
         """Returns the document frame that holds the content being shown."""
 
@@ -239,7 +159,8 @@ class Utilities(script_utilities.Utilities):
         if not obj:
             obj = orca_state.locusOfFocus
 
-        if obj and obj.parent.getRole() == pyatspi.ROLE_AUTOCOMPLETE:
+        if obj and obj.parent \
+           and obj.parent.getRole() == pyatspi.ROLE_AUTOCOMPLETE:
             return False
 
         return script_utilities.Utilities.inFindToolbar(obj)
@@ -261,6 +182,23 @@ class Utilities(script_utilities.Utilities):
 
         return False
 
+    def isLink(self, obj):
+        """Returns True if we should treat this object as a link."""
+
+        if not obj:
+            return False
+
+        role = obj.getRole()
+        if role == pyatspi.ROLE_LINK:
+            return True
+
+        if role == pyatspi.ROLE_TEXT \
+           and obj.parent.getRole() == pyatspi.ROLE_LINK \
+           and obj.name and obj.name == obj.parent.name:
+            return True
+
+        return False
+
     def isPasswordText(self, obj):
         """Returns True if we should treat this object as password text."""
 
@@ -583,7 +521,8 @@ class Utilities(script_utilities.Utilities):
                  pyatspi.ROLE_MENU_ITEM,
                  pyatspi.ROLE_RADIO_MENU_ITEM,
                  pyatspi.ROLE_RADIO_BUTTON,
-                 pyatspi.ROLE_PUSH_BUTTON]
+                 pyatspi.ROLE_PUSH_BUTTON,
+                 pyatspi.ROLE_TOGGLE_BUTTON]
 
         role = obj.getRole()
         if role in roles:
@@ -825,16 +764,63 @@ class Utilities(script_utilities.Utilities):
 
         return objects
 
+    def isTextBlockElement(self, obj):
+        if not self._script.inDocumentContent(obj):
+            return False
+
+        textBlockElements = [pyatspi.ROLE_COLUMN_HEADER,
+                             pyatspi.ROLE_DOCUMENT_FRAME,
+                             pyatspi.ROLE_FORM,
+                             pyatspi.ROLE_HEADING,
+                             pyatspi.ROLE_LIST_ITEM,
+                             pyatspi.ROLE_PANEL,
+                             pyatspi.ROLE_PARAGRAPH,
+                             pyatspi.ROLE_ROW_HEADER,
+                             pyatspi.ROLE_SECTION,
+                             pyatspi.ROLE_TEXT,
+                             pyatspi.ROLE_TABLE_CELL]
+
+        role = obj.getRole()
+        if not role in textBlockElements:
+            return False
+
+        state = obj.getState()
+        if state.contains(pyatspi.STATE_EDITABLE):
+            return False
+
+        if not state.contains(pyatspi.STATE_FOCUSABLE) \
+           or role == pyatspi.ROLE_DOCUMENT_FRAME:
+            return True
+
+        return False
+
     def filterContentsForPresentation(self, contents):
         def _include(x):
             obj, start, end, string = x
-            if not obj or (string and not string.strip()) \
+            if not obj:
+                return False
+
+            if (self.isTextBlockElement(obj) and not string.strip()) \
                or self._script.isLabellingContents(obj, contents):
                 return False
+
             return True
 
         return list(filter(_include, contents))
 
+    def needsSeparator(self, lastChar, nextChar):
+        if lastChar.isspace() or nextChar.isspace():
+            return False
+
+        openingPunctuation = ["(", "[", "{", "<"]
+        closingPunctuation = [".", "?", "!", ":", ",", ";", ")", "]", "}", ">"]
+        if lastChar in closingPunctuation or nextChar in openingPunctuation:
+            return True
+        if lastChar in openingPunctuation or nextChar in closingPunctuation:
+            return False
+
+        return lastChar.isalnum()
+
     def getObjectsFromEOCs(self, obj, offset=None, boundary=None):
         """Expands the current object replacing EMBEDDED_OBJECT_CHARACTERS
         with [obj, startOffset, endOffset, string] tuples.
diff --git a/src/orca/scripts/toolkits/Gecko/speech_generator.py 
b/src/orca/scripts/toolkits/Gecko/speech_generator.py
index a6a3ff5..bdae4e9 100644
--- a/src/orca/scripts/toolkits/Gecko/speech_generator.py
+++ b/src/orca/scripts/toolkits/Gecko/speech_generator.py
@@ -238,7 +238,7 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
                     result.extend(acss)
 
             elif role == pyatspi.ROLE_HEADING:
-                level = self._script.getHeadingLevel(obj)
+                level = self._script.utilities.headingLevel(obj)
                 if level:
                     result.append(object_properties.ROLE_HEADING_LEVEL_SPEECH % {
                         'role': self.getLocalizedRoleName(obj, role),
diff --git a/src/orca/scripts/toolkits/WebKitGtk/script_utilities.py 
b/src/orca/scripts/toolkits/WebKitGtk/script_utilities.py
index 0f8b5b2..9ef627c 100644
--- a/src/orca/scripts/toolkits/WebKitGtk/script_utilities.py
+++ b/src/orca/scripts/toolkits/WebKitGtk/script_utilities.py
@@ -50,26 +50,6 @@ class Utilities(script_utilities.Utilities):
 
         script_utilities.Utilities.__init__(self, script)
 
-    def headingLevel(self, obj):
-        """Determines the heading level of the given object.  A value
-        of 0 means there is no heading level."""
-
-        level = 0
-
-        if obj is None:
-            return level
-
-        if obj.getRole() == pyatspi.ROLE_HEADING:
-            attributes = obj.getAttributes()
-            if attributes is None:
-                return level
-            for attribute in attributes:
-                if attribute.startswith("level:"):
-                    level = int(attribute.split(":")[1])
-                    break
-
-        return level
-
     def isWebKitGtk(self, obj):
         """Returns True if this object is a WebKitGtk object."""
 
diff --git a/src/orca/speech_generator.py b/src/orca/speech_generator.py
index 5db0c4a..3f02a8d 100644
--- a/src/orca/speech_generator.py
+++ b/src/orca/speech_generator.py
@@ -1170,6 +1170,11 @@ class SpeechGenerator(generator.Generator):
         if _settingsManager.getSetting('onlySpeakDisplayedText'):
             return []
 
+        try:
+            text = obj.queryText()
+        except NotImplementedError:
+            return []
+
         result = []
         acss = self.voice(SYSTEM)
 
diff --git a/src/orca/structural_navigation.py b/src/orca/structural_navigation.py
index 226fafa..54d3874 100644
--- a/src/orca/structural_navigation.py
+++ b/src/orca/structural_navigation.py
@@ -1581,21 +1581,7 @@ class StructuralNavigation:
         - obj: the accessible whose heading level we want.
         """
 
-        level = 0
-
-        if obj is None:
-            return level
-
-        if obj.getRole() == pyatspi.ROLE_HEADING:
-            attributes = obj.getAttributes()
-            if attributes is None:
-                return level
-            for attribute in attributes:
-                if attribute.startswith("level:"):
-                    level = int(attribute.split(":")[1])
-                    break
-
-        return level
+        return self._script.utilities.headingLevel(obj)
 
     def _getCaretPosition(self, obj):
         """Returns the [obj, characterOffset] where the caret should be
diff --git a/test/keystrokes/firefox/aria_button.py b/test/keystrokes/firefox/aria_button.py
index 0ebb31c..80933d9 100644
--- a/test/keystrokes/firefox/aria_button.py
+++ b/test/keystrokes/firefox/aria_button.py
@@ -11,9 +11,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "1. Tab to Tracking number text entry",
-    ["KNOWN ISSUE: The initial space should be removed",
-     "BRAILLE LINE:  ' Tracking number  $l'",
-     "     VISIBLE:  ' Tracking number  $l', cursor=0",
+    ["BRAILLE LINE:  'Tracking number  $l'",
+     "     VISIBLE:  'Tracking number  $l', cursor=0",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'Tracking number entry'",
@@ -23,8 +22,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "2. Tab to Check Now push button",
-    ["BRAILLE LINE:  ' Tracking number  $l'",
-     "     VISIBLE:  ' Tracking number  $l', cursor=0",
+    ["BRAILLE LINE:  'Tracking number  $l'",
+     "     VISIBLE:  'Tracking number  $l', cursor=0",
      "BRAILLE LINE:  'Check Now push button'",
      "     VISIBLE:  'Check Now push button', cursor=1",
      "BRAILLE LINE:  'Browse mode'",
diff --git a/test/keystrokes/firefox/aria_button_dojo.py b/test/keystrokes/firefox/aria_button_dojo.py
index 66c7b9f..572c70a 100644
--- a/test/keystrokes/firefox/aria_button_dojo.py
+++ b/test/keystrokes/firefox/aria_button_dojo.py
@@ -9,7 +9,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "1. Tab to the <button> button",
-    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Createsave options 
push button Edit! Color'",
+    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Create save options 
push button Edit! Color'",
      "     VISIBLE:  '<button> push button <input type', cursor=0",
      "SPEECH OUTPUT: '<button> push button'"]))
 
@@ -17,7 +17,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "2. Basic Where Am I on <button>",
-    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Createsave options 
push button Edit! Color'",
+    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Create save options 
push button Edit! Color'",
      "     VISIBLE:  '<button> push button <input type', cursor=0",
      "SPEECH OUTPUT: '<button>'",
      "SPEECH OUTPUT: 'push button'"]))
@@ -26,7 +26,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "3. Tab to <input type='button'>",
-    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Createsave options 
push button Edit! Color'",
+    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Create save options 
push button Edit! Color'",
      "     VISIBLE:  '<button> push button <input type', cursor=0",
      "SPEECH OUTPUT: '<input type='button'> push button'"]))
 
@@ -34,7 +34,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "4. Basic Where Am I on <input type='button'>",
-    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Createsave options 
push button Edit! Color'",
+    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Create save options 
push button Edit! Color'",
      "     VISIBLE:  '<button> push button <input type', cursor=0",
      "SPEECH OUTPUT: '<input type='button'>'",
      "SPEECH OUTPUT: 'push button'"]))
@@ -43,16 +43,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "5. Tab to first Create button",
-    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create push button View 
Createsave options push button Edit! Color'",
-     "     VISIBLE:  'Create push button View Createsa', cursor=1",
+    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create push button View Create 
save options push button Edit! Color'",
+     "     VISIBLE:  'Create push button View Create s', cursor=1",
      "SPEECH OUTPUT: 'Create push button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "6. Basic Where Am I on first Create button",
-    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create push button View 
Createsave options push button Edit! Color'",
-     "     VISIBLE:  'Create push button View Createsa', cursor=1",
+    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create push button View Create 
save options push button Edit! Color'",
+     "     VISIBLE:  'Create push button View Create s', cursor=1",
      "SPEECH OUTPUT: 'Create'",
      "SPEECH OUTPUT: 'push button'"]))
 
@@ -60,8 +60,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "7. Tab to View push button",
-    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View push button 
Createsave options push button Edit! Color'",
-     "     VISIBLE:  'View push button Createsave opti', cursor=1",
+    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View push button Create 
save options push button Edit! Color'",
+     "     VISIBLE:  'View push button Create save opt', cursor=1",
      "SPEECH OUTPUT: 'View push button view title'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -76,7 +76,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "9. Tab to drop down menu on Create -- whose tooltip and accessible name is 'save options'",
-    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Createsave options 
push button Edit! Color'",
+    ["BRAILLE LINE:  '<button> push button <input type='button'> push button Create View Create save options 
push button Edit! Color'",
      "     VISIBLE:  '<button> push button <input type', cursor=0",
      "SPEECH OUTPUT: 'save options push button'"]))
 
@@ -84,7 +84,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction(" "))
 sequence.append(utils.AssertPresentationAction(
     "10. Open drop down menu on Create",
-    ["BRAILLE LINE:  '<button> push button save options push buttonCreate View Create<input type='button'> 
push button'",
+    ["BRAILLE LINE:  '<button> push button save options push button Create View Create <input type='button'> 
push button'",
      "     VISIBLE:  '<button> push button save option', cursor=0",
      "BRAILLE LINE:  'Create blank'",
      "     VISIBLE:  'Create blank', cursor=1",
@@ -240,13 +240,12 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("space"))
 sequence.append(utils.AssertPresentationAction(
     "24. Open the Color menu",
-    ["KNOWN ISSUE: This is messed up on several different levels",
-     "BRAILLE LINE:  'Color push button'",
+    ["BRAILLE LINE:  'Color push button'",
      "     VISIBLE:  'Color push button', cursor=1",
      "BRAILLE LINE:  '<button> push button save options collapsed push button Edit! Color push button'",
      "     VISIBLE:  'Color push button', cursor=1",
-     "BRAILLE LINE:  '\ufffc lime green blue'",
-     "     VISIBLE:  '\ufffc lime green blue', cursor=1",
+     "BRAILLE LINE:  'white lime green blue'",
+     "     VISIBLE:  'white lime green blue', cursor=7",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'Color panel'",
@@ -257,9 +256,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
 sequence.append(utils.AssertPresentationAction(
     "25. Go to lime",
-    ["KNOWN ISSUE: Why are we presenting the cell?",
-     "BRAILLE LINE:  '\ufffc lime green blue'",
-     "     VISIBLE:  '\ufffc lime green blue', cursor=1",
+    ["BRAILLE LINE:  'white lime green blue'",
+     "     VISIBLE:  'white lime green blue', cursor=7",
      "BRAILLE LINE:  'lime table cell'",
      "     VISIBLE:  'lime table cell', cursor=1",
      "SPEECH OUTPUT: 'lime'"]))
@@ -279,7 +277,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "27. Tab to the toggle me off button",
-    ["BRAILLE LINE:  '&=y Toggle me off toggle button Toggle me off Toggle me'",
+    ["BRAILLE LINE:  '&=y Toggle me off toggle button Toggle me'",
      "     VISIBLE:  '&=y Toggle me off toggle button ', cursor=1",
      "SPEECH OUTPUT: 'Toggle me off toggle button pressed'"]))
 
@@ -288,23 +286,23 @@ sequence.append(KeyComboAction("space"))
 sequence.append(utils.AssertPresentationAction(
     "28. Toggle the state of the toggle me off button",
     ["KNOWN ISSUE: This seems an excessive amount of braille updating",
-     "BRAILLE LINE:  '& y toggle me on toggle button Toggle me off Toggle me'",
+     "BRAILLE LINE:  '& y toggle me on toggle button Toggle me'",
+     "     VISIBLE:  '& y toggle me on toggle button T', cursor=1",
+     "BRAILLE LINE:  '& y toggle me on toggle button Toggle me'",
+     "     VISIBLE:  '& y toggle me on toggle button T', cursor=1",
+     "BRAILLE LINE:  '& y toggle me on toggle button Toggle me'",
      "     VISIBLE:  '& y toggle me on toggle button T', cursor=1",
-     "BRAILLE LINE:  '& y toggle me on toggle button toggle me on Toggle me'",
-     "     VISIBLE:  '& y toggle me on toggle button t', cursor=1",
-     "BRAILLE LINE:  '& y toggle me on toggle button toggle me on Toggle me'",
-     "     VISIBLE:  '& y toggle me on toggle button t', cursor=1",
      "SPEECH OUTPUT: 'not pressed'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("space"))
 sequence.append(utils.AssertPresentationAction(
     "29. Toggle the state of the toggle me off button",
-    ["BRAILLE LINE:  '&=y toggle me off toggle button toggle me on Toggle me'",
+    ["BRAILLE LINE:  '&=y toggle me off toggle button Toggle me'",
      "     VISIBLE:  '&=y toggle me off toggle button ', cursor=1",
-     "BRAILLE LINE:  '&=y toggle me off toggle button toggle me off Toggle me'",
+     "BRAILLE LINE:  '&=y toggle me off toggle button Toggle me'",
      "     VISIBLE:  '&=y toggle me off toggle button ', cursor=1",
-     "BRAILLE LINE:  '&=y toggle me off toggle button toggle me off Toggle me'",
+     "BRAILLE LINE:  '&=y toggle me off toggle button Toggle me'",
      "     VISIBLE:  '&=y toggle me off toggle button ', cursor=1",
      "SPEECH OUTPUT: 'pressed'"]))
 
diff --git a/test/keystrokes/firefox/aria_checkbox_dojo.py b/test/keystrokes/firefox/aria_checkbox_dojo.py
index dfa6ec8..85d0426 100644
--- a/test/keystrokes/firefox/aria_checkbox_dojo.py
+++ b/test/keystrokes/firefox/aria_checkbox_dojo.py
@@ -11,7 +11,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "1. Tab to the cb0 checkbox",
-    ["BRAILLE LINE:  '<x> cb0: Vanilla (non-dojo) checkbox (for comparison purposes) check box '",
+    ["BRAILLE LINE:  '<x> cb0: Vanilla (non-dojo) checkbox (for comparison purposes) check box'",
      "     VISIBLE:  '<x> cb0: Vanilla (non-dojo) chec', cursor=0",
      "SPEECH OUTPUT: 'cb0: Vanilla (non-dojo) checkbox (for comparison purposes) check box checked'"]))
 
@@ -19,7 +19,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction(" "))
 sequence.append(utils.AssertPresentationAction(
     "2. Change state on cb0 checkbox",
-    ["BRAILLE LINE:  '< > cb0: Vanilla (non-dojo) checkbox (for comparison purposes) check box '",
+    ["BRAILLE LINE:  '< > cb0: Vanilla (non-dojo) checkbox (for comparison purposes) check box'",
      "     VISIBLE:  '< > cb0: Vanilla (non-dojo) chec', cursor=0",
      "SPEECH OUTPUT: 'not checked'"]))
 
@@ -27,7 +27,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "3. Tab to the cb1 checkbox",
-    ["BRAILLE LINE:  '< > cb1: normal checkbox, with value=foo, clicking generates console log messages 
check box  get('value') push button'",
+    ["BRAILLE LINE:  '< > cb1: normal checkbox, with value=foo, clicking generates console log messages 
check box get('value') push button'",
      "     VISIBLE:  '< > cb1: normal checkbox, with v', cursor=0",
      "SPEECH OUTPUT: 'cb1: normal checkbox, with value=foo, clicking generates console log messages check 
box not checked'"]))
 
@@ -35,7 +35,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction(" "))
 sequence.append(utils.AssertPresentationAction(
     "4. Change state on cb1 checkbox",
-    ["BRAILLE LINE:  '<x> cb1: normal checkbox, with value=foo, clicking generates console log messages 
check box  get('value') push button'",
+    ["BRAILLE LINE:  '<x> cb1: normal checkbox, with value=foo, clicking generates console log messages 
check box get('value') push button'",
      "     VISIBLE:  '<x> cb1: normal checkbox, with v', cursor=0",
      "SPEECH OUTPUT: 'checked'"]))
 
@@ -44,7 +44,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "5. Tab to the cb2 checkbox",
-    ["BRAILLE LINE:  '<x> cb2: normal checkbox, with default value, initially turned on. check box  
\"onChange\" handler updates: [] get('value') push button'",
+    ["BRAILLE LINE:  '<x> cb2: normal checkbox, with default value, initially turned on. check box 
\"onChange\" handler updates: [] get('value') push button'",
      "     VISIBLE:  '<x> cb2: normal checkbox, with d', cursor=0",
      "SPEECH OUTPUT: 'cb2: normal checkbox, with default value, initially turned on. check box checked'"]))
 
@@ -53,7 +53,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "6. Tab to the cb4 checkbox",
-    ["BRAILLE LINE:  '<x> cb4: readOnly checkbox, turned on check box '",
+    ["BRAILLE LINE:  '<x> cb4: readOnly checkbox, turned on check box'",
      "     VISIBLE:  '<x> cb4: readOnly checkbox, turn', cursor=0",
      "SPEECH OUTPUT: 'cb4: readOnly checkbox, turned on check box checked'"]))
 
@@ -61,7 +61,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "7. Tab to the cb5 checkbox",
-    ["BRAILLE LINE:  '< > cb5: normal checkbox, with specified value=\"\", clicking generates console log 
messages check box  get('value') push button'",
+    ["BRAILLE LINE:  '< > cb5: normal checkbox, with specified value=\"\", clicking generates console log 
messages check box get('value') push button'",
      "     VISIBLE:  '< > cb5: normal checkbox, with s', cursor=0",
      "SPEECH OUTPUT: 'cb5: normal checkbox, with specified value=\"\", clicking generates console log 
messages check box not checked'"]))
 
@@ -70,7 +70,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "8. Tab to the cb6 checkbox",
-    ["BRAILLE LINE:  '<x> cb6: instantiated from script check box '",
+    ["BRAILLE LINE:  '<x> cb6: instantiated from script check box'",
      "     VISIBLE:  '<x> cb6: instantiated from scrip', cursor=0",
      "SPEECH OUTPUT: 'cb6: instantiated from script check box checked'"]))
 
@@ -78,7 +78,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "9. Tab to the cb7 checkbox",
-    ["BRAILLE LINE:  '< > cb7: normal checkbox. check box  disable push button enable push button set value 
to \"fish\" push button Reset value+checked push button \"onChange\" handler updates: []'",
+    ["BRAILLE LINE:  '< > cb7: normal checkbox. check box disable push button enable push button set value 
to \"fish\" push button Reset value+checked push button \"onChange\" handler updates: []'",
      "     VISIBLE:  '< > cb7: normal checkbox. check ', cursor=0",
      "SPEECH OUTPUT: 'cb7: normal checkbox. check box not checked'"]))
 
@@ -86,7 +86,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "10. Basic Where Am I",
-    ["BRAILLE LINE:  '< > cb7: normal checkbox. check box  disable push button enable push button set value 
to \"fish\" push button Reset value+checked push button \"onChange\" handler updates: []'",
+    ["BRAILLE LINE:  '< > cb7: normal checkbox. check box disable push button enable push button set value 
to \"fish\" push button Reset value+checked push button \"onChange\" handler updates: []'",
      "     VISIBLE:  '< > cb7: normal checkbox. check ', cursor=0",
      "SPEECH OUTPUT: 'cb7: normal checkbox.'",
      "SPEECH OUTPUT: 'check box not checked'"]))
diff --git a/test/keystrokes/firefox/aria_dialog_dojo.py b/test/keystrokes/firefox/aria_dialog_dojo.py
index 3d2642e..e31d516 100644
--- a/test/keystrokes/firefox/aria_dialog_dojo.py
+++ b/test/keystrokes/firefox/aria_dialog_dojo.py
@@ -16,11 +16,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
 sequence.append(utils.AssertPresentationAction(
     "1. Launch dialog",
-    ["KNOWN ISSUE: We're presenting embedded object characters. This should go away with the braille fixes.",
-     "BRAILLE LINE:  '\ufffc\ufffc'",
-     "     VISIBLE:  '\ufffc\ufffc', cursor=0",
-     "BRAILLE LINE:  'First tab Second tab'",
-     "     VISIBLE:  'First tab Second tab', cursor=1",
+    ["BRAILLE LINE:  'TabContainer Dialog dialog'",
+     "     VISIBLE:  'TabContainer Dialog dialog', cursor=0",
+     "BRAILLE LINE:  'First tab page tab Second tab page tab'",
+     "     VISIBLE:  'First tab page tab Second tab pa', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "BRAILLE LINE:  'First tab page tab'",
diff --git a/test/keystrokes/firefox/aria_editor_navigation_dojo.py 
b/test/keystrokes/firefox/aria_editor_navigation_dojo.py
index fe7febb..f97077f 100644
--- a/test/keystrokes/firefox/aria_editor_navigation_dojo.py
+++ b/test/keystrokes/firefox/aria_editor_navigation_dojo.py
@@ -13,8 +13,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "1. Up Arrow in Focus Mode",
-    ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=0"]))
+    ["BRAILLE LINE:  ' $l'",
+     "     VISIBLE:  ' $l', cursor=0"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -30,8 +30,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "3. Up Arrow in Browse Mode",
-    ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=0",
+    ["BRAILLE LINE:  ' $l'",
+     "     VISIBLE:  ' $l', cursor=0",
      "BRAILLE LINE:  'editor0 tool bar'",
      "     VISIBLE:  'editor0 tool bar', cursor=0",
      "SPEECH OUTPUT: 'editor0'",
diff --git a/test/keystrokes/firefox/aria_grid_uiuc.py b/test/keystrokes/firefox/aria_grid_uiuc.py
index b36e573..1a0e110 100644
--- a/test/keystrokes/firefox/aria_grid_uiuc.py
+++ b/test/keystrokes/firefox/aria_grid_uiuc.py
@@ -15,7 +15,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "1. Tab to grid",
-    ["BRAILLE LINE:  'Selected Sort Sel column push button Msg'",
+    ["BRAILLE LINE:  'Selected Sort Sel column push button Msg '",
      "     VISIBLE:  'Selected Sort Sel column push bu', cursor=1",
      "SPEECH OUTPUT: 'Selected Sort Sel column push button'"]))
 
@@ -23,7 +23,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "2. basic whereAmI",
-    ["BRAILLE LINE:  'Selected Sort Sel column push button Msg'",
+    ["BRAILLE LINE:  'Selected Sort Sel column push button Msg '",
      "     VISIBLE:  'Selected Sort Sel column push bu', cursor=1",
      "SPEECH OUTPUT: 'Selected Sort Sel column'",
      "SPEECH OUTPUT: 'push button'"]))
@@ -68,7 +68,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "7. Move down to third row",
     ["KNOWN ISSUE: It appears we are not treating this as an ARIA widget",
-     "BRAILLE LINE:  'Status Sort Status column push button'",
+     "BRAILLE LINE:  'Status Sort Status column push button '",
      "     VISIBLE:  'Status Sort Status column push b', cursor=1",
      "SPEECH OUTPUT: 'Status Sort Status column'",
      "SPEECH OUTPUT: 'push button'",
diff --git a/test/keystrokes/firefox/aria_slider.py b/test/keystrokes/firefox/aria_slider.py
index 9d6ebb1..6c8369b 100644
--- a/test/keystrokes/firefox/aria_slider.py
+++ b/test/keystrokes/firefox/aria_slider.py
@@ -11,9 +11,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "1. tab to slider",
-    ["KNOWN ISSUE: The braille lacks spaces",
-     "BRAILLE LINE:  '0Move slider leftMy slider 10% slider'",
-     "     VISIBLE:  '0Move slider leftMy slider 10% s', cursor=0",
+    ["BRAILLE LINE:  '0 Move slider left My slider 10% slider'",
+     "     VISIBLE:  '0 Move slider left My slider 10%', cursor=0",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'My slider slider 10%'",
@@ -23,9 +22,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "2. basic whereAmI",
-    ["KNOWN ISSUE: The braille lacks spaces",
-     "BRAILLE LINE:  '0Move slider leftMy slider 10% slider'",
-     "     VISIBLE:  '0Move slider leftMy slider 10% s', cursor=0",
+    ["BRAILLE LINE:  '0 Move slider left My slider 10% slider'",
+     "     VISIBLE:  '0 Move slider left My slider 10%', cursor=0",
      "BRAILLE LINE:  'My slider 10% slider'",
      "     VISIBLE:  'My slider 10% slider', cursor=1",
      "SPEECH OUTPUT: 'My slider'",
diff --git a/test/keystrokes/firefox/aria_spinner_dojo.py b/test/keystrokes/firefox/aria_spinner_dojo.py
index 714be68..39f8034 100644
--- a/test/keystrokes/firefox/aria_spinner_dojo.py
+++ b/test/keystrokes/firefox/aria_spinner_dojo.py
@@ -13,52 +13,52 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "1. Tab to the first spinner",
-    ["BRAILLE LINE:  '900'",
-     "     VISIBLE:  '900', cursor=0",
+    ["BRAILLE LINE:  'Spinbox #1:   $l'",
+     "     VISIBLE:  'Spinbox #1:   $l', cursor=0",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "BRAILLE LINE:  'Spinbox #1: 900 $l'",
-     "     VISIBLE:  'Spinbox #1: 900 $l', cursor=13",
-     "SPEECH OUTPUT: 'Spinbox #1: 900 selected spin button'",
+     "BRAILLE LINE:  'Spinbox #1:  900 $l'",
+     "     VISIBLE:  'Spinbox #1:  900 $l', cursor=17",
+     "SPEECH OUTPUT: 'Spinbox #1:  900 selected spin button'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "2. Decrement first spinner",
-    ["BRAILLE LINE:  'Spinbox #1: 900 $l'",
-     "     VISIBLE:  'Spinbox #1: 900 $l', cursor=13",
-     "BRAILLE LINE:  'Spinbox #1: 899 $l'",
-     "     VISIBLE:  'Spinbox #1: 899 $l', cursor=13",
+    ["BRAILLE LINE:  'Spinbox #1:  899 $l'",
+     "     VISIBLE:  'Spinbox #1:  899 $l', cursor=17",
+     "BRAILLE LINE:  'Spinbox #1:  899 $l'",
+     "     VISIBLE:  'Spinbox #1:  899 $l', cursor=17",
      "SPEECH OUTPUT: '899'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "3. Decrement first spinner",
-    ["BRAILLE LINE:  'Spinbox #1: 898 $l'",
-     "     VISIBLE:  'Spinbox #1: 898 $l', cursor=13",
-     "BRAILLE LINE:  'Spinbox #1: 898 $l'",
-     "     VISIBLE:  'Spinbox #1: 898 $l', cursor=13",
+    ["BRAILLE LINE:  'Spinbox #1:  898 $l'",
+     "     VISIBLE:  'Spinbox #1:  898 $l', cursor=17",
+     "BRAILLE LINE:  'Spinbox #1:  898 $l'",
+     "     VISIBLE:  'Spinbox #1:  898 $l', cursor=17",
      "SPEECH OUTPUT: '898'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "4. Increment first spinner",
-    ["BRAILLE LINE:  'Spinbox #1: 899 $l'",
-     "     VISIBLE:  'Spinbox #1: 899 $l', cursor=13",
-     "BRAILLE LINE:  'Spinbox #1: 899 $l'",
-     "     VISIBLE:  'Spinbox #1: 899 $l', cursor=13",
+    ["BRAILLE LINE:  'Spinbox #1:  899 $l'",
+     "     VISIBLE:  'Spinbox #1:  899 $l', cursor=17",
+     "BRAILLE LINE:  'Spinbox #1:  899 $l'",
+     "     VISIBLE:  'Spinbox #1:  899 $l', cursor=17",
      "SPEECH OUTPUT: '899'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "5. basic whereAmI",
-    ["BRAILLE LINE:  'Spinbox #1: 899 $l'",
-     "     VISIBLE:  'Spinbox #1: 899 $l', cursor=13",
-     "SPEECH OUTPUT: 'Spinbox #1:'",
+    ["BRAILLE LINE:  'Spinbox #1:  899 $l'",
+     "     VISIBLE:  'Spinbox #1:  899 $l', cursor=17",
+     "SPEECH OUTPUT: 'Spinbox #1: '",
      "SPEECH OUTPUT: 'spin button'",
      "SPEECH OUTPUT: '899'"]))
 
diff --git a/test/keystrokes/firefox/aria_tabcontainer_dojo.py 
b/test/keystrokes/firefox/aria_tabcontainer_dojo.py
index e193be5..2ea36a7 100644
--- a/test/keystrokes/firefox/aria_tabcontainer_dojo.py
+++ b/test/keystrokes/firefox/aria_tabcontainer_dojo.py
@@ -14,8 +14,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "1. Tab to tab list",
-    ["BRAILLE LINE:  'push button push button  Tab 1 Tab 2 Tab 3 Inlined Sub TabContainer Sub TabContainer 
from href SplitContainer from href Embedded layout widgets'",
-     "     VISIBLE:  'Tab 2 Tab 3 Inlined Sub TabConta', cursor=1",
+    ["BRAILLE LINE:  '  push button  push button  Tab 1 page tab  Tab 2 page tab  Tab 3 page tab  Inlined 
Sub TabContainer page tab  Sub TabContainer from href page tab  SplitContainer from href page tab  Embedded 
layout widgets page tab'",
+     "     VISIBLE:  'Tab 2 page tab  Tab 3 page tab  ', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "BRAILLE LINE:  'Tab 2 page tab'",
diff --git a/test/keystrokes/firefox/aria_tabpanel.py b/test/keystrokes/firefox/aria_tabpanel.py
index 69adc59..272f2cb 100644
--- a/test/keystrokes/firefox/aria_tabpanel.py
+++ b/test/keystrokes/firefox/aria_tabpanel.py
@@ -54,8 +54,8 @@ sequence.append(utils.AssertPresentationAction(
     "5. Shift+Tab out of contents",
     ["BRAILLE LINE:  '&=y Internal Portal Bookmark radio button'",
      "     VISIBLE:  '&=y Internal Portal Bookmark rad', cursor=1",
-     "BRAILLE LINE:  'Tab Zero Tab One Tab Two Tab Three Tab Four'",
-     "     VISIBLE:  'Tab Two Tab Three Tab Four', cursor=1",
+     "BRAILLE LINE:  'Tab Zero page tab Tab One page tab Tab Two page tab Tab Three page tab Tab Four page 
tab'",
+     "     VISIBLE:  'Tab Two page tab Tab Three page ', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "BRAILLE LINE:  'Tab Two page tab'",
diff --git a/test/keystrokes/firefox/aria_tabpanel_text_dojo.py 
b/test/keystrokes/firefox/aria_tabpanel_text_dojo.py
index a7e01b8..6f36e19 100644
--- a/test/keystrokes/firefox/aria_tabpanel_text_dojo.py
+++ b/test/keystrokes/firefox/aria_tabpanel_text_dojo.py
@@ -16,11 +16,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction(" "))
 sequence.append(utils.AssertPresentationAction(
     "1. Space to press the Show TabContainer Dialog",
-    ["KNOWN ISSUE: We're presenting embedded object characters. This should go away with the braille fixes.",
-     "BRAILLE LINE:  '\ufffc\ufffc'",
-     "     VISIBLE:  '\ufffc\ufffc', cursor=0",
-     "BRAILLE LINE:  'First tab Second tab'",
-     "     VISIBLE:  'First tab Second tab', cursor=1",
+    ["BRAILLE LINE:  'TabContainer Dialog dialog'",
+     "     VISIBLE:  'TabContainer Dialog dialog', cursor=0",
+     "BRAILLE LINE:  'First tab page tab Second tab page tab'",
+     "     VISIBLE:  'First tab page tab Second tab pa', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "BRAILLE LINE:  'First tab page tab'",
diff --git a/test/keystrokes/firefox/aria_tabpanel_uiuc.py b/test/keystrokes/firefox/aria_tabpanel_uiuc.py
index aa688d1..cad48ff 100644
--- a/test/keystrokes/firefox/aria_tabpanel_uiuc.py
+++ b/test/keystrokes/firefox/aria_tabpanel_uiuc.py
@@ -23,9 +23,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Page_Down"))
 sequence.append(utils.AssertPresentationAction(
     "2. Ctrl Page Down to second tab",
-    ["KNOWN ISSUE: Missing a space",
-     "BRAILLE LINE:  'Crust VeggiesCarnivore Delivery'",
-     "     VISIBLE:  'Crust VeggiesCarnivore Delivery', cursor=7",
+    ["BRAILLE LINE:  'Crust page tab Veggies page tab Carnivore Delivery'",
+     "     VISIBLE:  'Veggies page tab Carnivore Deliv', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "BRAILLE LINE:  'Veggies page tab'",
diff --git a/test/keystrokes/firefox/aria_toolbar_dojo.py b/test/keystrokes/firefox/aria_toolbar_dojo.py
index b7dad5f..1946f5c 100644
--- a/test/keystrokes/firefox/aria_toolbar_dojo.py
+++ b/test/keystrokes/firefox/aria_toolbar_dojo.py
@@ -33,12 +33,14 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "3. Down Arrow",
     ["KNOWN ISSUE: Whether or not this is the ideal presentation is questionable. But it is more correct 
that what we were doing.",
-     "BRAILLE LINE:  'Buttons: Copy Toggles: Italic Dropdowns: TooltipDialogColorPalette Combos: Menusave 
options push button Menu2 push button save options2 push button'",
-     "     VISIBLE:  'Buttons: Copy Toggles: Italic Dr', cursor=1",
+     "BRAILLE LINE:  'Buttons: Copy Toggles: Italic  tool bar Dropdowns: TooltipDialog ColorPalette Combos: 
Menu save options push button Menu2 push button save options2 push button '",
+     "     VISIBLE:  'Buttons: Copy Toggles: Italic  t', cursor=1",
      "SPEECH OUTPUT: 'Buttons: '",
      "SPEECH OUTPUT: 'Copy'",
      "SPEECH OUTPUT: ' Toggles: '",
      "SPEECH OUTPUT: 'Italic'",
+     "SPEECH OUTPUT: ' '",
+     "SPEECH OUTPUT: 'tool bar'",
      "SPEECH OUTPUT: 'Dropdowns: '",
      "SPEECH OUTPUT: 'TooltipDialog'",
      "SPEECH OUTPUT: 'ColorPalette'",
diff --git a/test/keystrokes/firefox/aria_tree_uiuc.py b/test/keystrokes/firefox/aria_tree_uiuc.py
index 12108c4..3eb007a 100644
--- a/test/keystrokes/firefox/aria_tree_uiuc.py
+++ b/test/keystrokes/firefox/aria_tree_uiuc.py
@@ -15,9 +15,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "1. Tab to tree",
-    ["KNOWN ISSUE: We are displaying embedded object characters. This should get fixed as part of the 
braille redo.",
-     "BRAILLE LINE:  '\ufffcFruits \ufffc'",
-     "     VISIBLE:  '\ufffcFruits \ufffc', cursor=1",
+    ["BRAILLE LINE:  'Fruits'",
+     "     VISIBLE:  'Fruits', cursor=8",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'Fruits expanded tree level 1'",
@@ -27,9 +26,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "2. Basic whereAmI",
-    ["KNOWN ISSUE: We are displaying embedded object characters. This should get fixed as part of the 
braille redo.",
-     "BRAILLE LINE:  '\ufffcFruits \ufffc'",
-     "     VISIBLE:  '\ufffcFruits \ufffc', cursor=1",
+    ["BRAILLE LINE:  'Fruits'",
+     "     VISIBLE:  'Fruits', cursor=8",
      "BRAILLE LINE:  'Fruits expanded list item'",
      "     VISIBLE:  'Fruits expanded list item', cursor=1",
      "SPEECH OUTPUT: 'list item'",
diff --git a/test/keystrokes/firefox/find_wiki.py b/test/keystrokes/firefox/find_wiki.py
index 21f3924..9175b0a 100644
--- a/test/keystrokes/firefox/find_wiki.py
+++ b/test/keystrokes/firefox/find_wiki.py
@@ -10,13 +10,14 @@ sequence = MacroSequence()
 sequence.append(KeyComboAction("<Control>Home"))
 sequence.append(KeyComboAction("<Control>F"))
 sequence.append(TypeAction("orca"))
+sequence.append(PauseAction(3000))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
 sequence.append(utils.AssertPresentationAction(
     "1. Return to next result",
-    ["BRAILLE LINE:  'Welcome to Orca! heading'",
-     "     VISIBLE:  'Welcome to Orca! heading', cursor=12",
+    ["BRAILLE LINE:  'Welcome to Orca! h1'",
+     "     VISIBLE:  'Welcome to Orca! h1', cursor=12",
      "SPEECH OUTPUT: 'Welcome to Orca!'",
      "SPEECH OUTPUT: 'heading level 1'"]))
 
@@ -34,18 +35,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
 sequence.append(utils.AssertPresentationAction(
     "3. Return to next result",
-    ["KNOWN ISSUE: Displayed text will happen as part of the braille generation rewrite",
-     "BRAILLE LINE:  'paragraph'",
-     "     VISIBLE:  'paragraph', cursor=1",
+    ["BRAILLE LINE:  'Orca is a free, open source, flexible, extensible, and  $l'",
+     "     VISIBLE:  'Orca is a free, open source, fle', cursor=1",
      "SPEECH OUTPUT: 'Orca is a free, open source, flexible, extensible, and '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
 sequence.append(utils.AssertPresentationAction(
     "4. Return to next result",
-    ["KNOWN ISSUE: Displayed text will happen as part of the braille generation rewrite",
-     "BRAILLE LINE:  'paragraph'",
-     "     VISIBLE:  'paragraph', cursor=1",
+    ["BRAILLE LINE:  'Orca is a free, open source, flexible, extensible, and  $l'",
+     "     VISIBLE:  'rce, flexible, extensible, and  ', cursor=32",
      "SPEECH OUTPUT: 'synthesis, braille, and magnification, Orca helps provide '"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/focus_tracking_imagemap.py 
b/test/keystrokes/firefox/focus_tracking_imagemap.py
index 83eaf37..61fae4c 100644
--- a/test/keystrokes/firefox/focus_tracking_imagemap.py
+++ b/test/keystrokes/firefox/focus_tracking_imagemap.py
@@ -63,9 +63,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "4. Tab",
-    ["KNOWN ISSUE: Braille is displaying embedded object characters. This should be fixed as part of the 
braille redo.",
-     "BRAILLE LINE:  'table cell \ufffc'",
-     "     VISIBLE:  'table cell \ufffc', cursor=12",
+    ["BRAILLE LINE:  'wk09_frozenmovie'",
+     "     VISIBLE:  'wk09_frozenmovie', cursor=1",
      "SPEECH OUTPUT: 'wk09_frozenmovie link image' voice=hyperlink"]))
 
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/firefox/html_role_combo_box.py b/test/keystrokes/firefox/html_role_combo_box.py
index dbad509..151547f 100644
--- a/test/keystrokes/firefox/html_role_combo_box.py
+++ b/test/keystrokes/firefox/html_role_combo_box.py
@@ -30,8 +30,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Severity normal combo box', cursor=10",
      "SPEECH OUTPUT: 'Severity'",
      "SPEECH OUTPUT: 'combo box'",
-     "SPEECH OUTPUT: 'normal'",
-     "SPEECH OUTPUT: '4 of 7'"]))
+     "SPEECH OUTPUT: 'normal'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
diff --git a/test/keystrokes/firefox/html_role_list_item_where_am_i.py 
b/test/keystrokes/firefox/html_role_list_item_where_am_i.py
index d4eca55..937924a 100644
--- a/test/keystrokes/firefox/html_role_list_item_where_am_i.py
+++ b/test/keystrokes/firefox/html_role_list_item_where_am_i.py
@@ -20,8 +20,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "2. Basic Where Am I next item",
-    ["BRAILLE LINE:  '• In a paragraph'",
-     "     VISIBLE:  '• In a paragraph', cursor=1",
+    ["BRAILLE LINE:  '•In a paragraph'",
+     "     VISIBLE:  '•In a paragraph', cursor=1",
      "SPEECH OUTPUT: 'list item'",
      "SPEECH OUTPUT: '• In a paragraph'",
      "SPEECH OUTPUT: '2 of 4'"]))
@@ -31,8 +31,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "3. Basic Where Am I next item",
-    ["BRAILLE LINE:  '• In a section'",
-     "     VISIBLE:  '• In a section', cursor=1",
+    ["BRAILLE LINE:  '•In a section'",
+     "     VISIBLE:  '•In a section', cursor=1",
      "SPEECH OUTPUT: 'list item'",
      "SPEECH OUTPUT: '• In a section'",
      "SPEECH OUTPUT: '3 of 4'"]))
@@ -75,8 +75,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "7. Basic Where Am I next item",
-    ["BRAILLE LINE:  '• In a paragraph that's in a section'",
-     "     VISIBLE:  '• In a paragraph that's in a sec', cursor=1",
+    ["BRAILLE LINE:  '•In a paragraph that's in a section'",
+     "     VISIBLE:  '•In a paragraph that's in a sect', cursor=1",
      "SPEECH OUTPUT: 'list item'",
      "SPEECH OUTPUT: '• In a paragraph that's in a section'",
      "SPEECH OUTPUT: '4 of 4'"]))
diff --git a/test/keystrokes/firefox/html_struct_nav_activate_link.py 
b/test/keystrokes/firefox/html_struct_nav_activate_link.py
index 9db7726..dd7748b 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=3",
+    ["BRAILLE LINE:  '1. Anchors2.html h3'",
+     "     VISIBLE:  '1. Anchors2.html h3', cursor=4",
      "SPEECH OUTPUT: 'Anchors2.html'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: 'heading level 3'"]))
diff --git a/test/keystrokes/firefox/html_struct_nav_bug_567984.py 
b/test/keystrokes/firefox/html_struct_nav_bug_567984.py
index d542a15..49a4195 100644
--- a/test/keystrokes/firefox/html_struct_nav_bug_567984.py
+++ b/test/keystrokes/firefox/html_struct_nav_bug_567984.py
@@ -29,8 +29,8 @@ 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 h3'",
+     "     VISIBLE:  'Izrael bejelentette az h3', cursor=1",
      "SPEECH OUTPUT: 'Izrael bejelentette az ",
      "egyoldalú tûzszünetet'",
      "SPEECH OUTPUT: 'link'",
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 c3b58eb..c99f91e 100644
--- a/test/keystrokes/firefox/html_struct_nav_headings_buried_deep.py
+++ b/test/keystrokes/firefox/html_struct_nav_headings_buried_deep.py
@@ -15,8 +15,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=2",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
      "SPEECH OUTPUT: 'Heading 3'",
      "SPEECH OUTPUT: 'heading level 3'"]))
@@ -25,8 +25,8 @@ 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=2",
      "SPEECH OUTPUT: 'Heading 2'",
      "SPEECH OUTPUT: 'heading level 3'"]))
 
@@ -34,8 +34,8 @@ 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=2",
      "SPEECH OUTPUT: 'Heading 1'",
      "SPEECH OUTPUT: 'heading level 3'"]))
 
@@ -43,8 +43,8 @@ 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=2",
      "SPEECH OUTPUT: 'Heading 2'",
      "SPEECH OUTPUT: 'heading level 3'"]))
 
@@ -52,8 +52,8 @@ 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=2",
      "SPEECH OUTPUT: 'Heading 3'",
      "SPEECH OUTPUT: 'heading level 3'"]))
 
@@ -63,8 +63,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=2",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
      "SPEECH OUTPUT: 'Heading 1'",
      "SPEECH OUTPUT: 'heading level 3'"]))
diff --git a/test/keystrokes/firefox/label_inference_bugzilla_search.py 
b/test/keystrokes/firefox/label_inference_bugzilla_search.py
index b07f037..6b90808 100644
--- a/test/keystrokes/firefox/label_inference_bugzilla_search.py
+++ b/test/keystrokes/firefox/label_inference_bugzilla_search.py
@@ -52,7 +52,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'Classification: multi-select List with 8 items'",
-     "SPEECH OUTPUT: 'Admin'",
+     "SPEECH OUTPUT: 'Admin '",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -232,7 +232,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '<x> check box', cursor=1",
      "BRAILLE LINE:  'Browse mode'",
      "     VISIBLE:  'Browse mode', cursor=0",
-     "SPEECH OUTPUT: 'Email and Numbering panel'",
+     "SPEECH OUTPUT: 'Email and Numbering  panel'",
      "SPEECH OUTPUT: 'the bug assignee check box checked'",
      "SPEECH OUTPUT: 'Browse mode' voice=system"]))
 
@@ -452,8 +452,8 @@ sequence.append(utils.AssertPresentationAction(
     "46. Tab",
     ["BRAILLE LINE:  'Search push button'",
      "     VISIBLE:  'Search push button', cursor=1",
-     "BRAILLE LINE:  '    < > check box and remember these as my default search options'",
-     "     VISIBLE:  '    < > check box and remember t', cursor=0",
+     "BRAILLE LINE:  '< > check box and remember these as my default search options'",
+     "     VISIBLE:  '< > check box and remember these', cursor=0",
      "SPEECH OUTPUT: 'and remember these as my default search options check box not checked'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -468,8 +468,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "48. Tab",
-    ["BRAILLE LINE:  '--- combo box --- combo box  $l Or push button'",
-     "     VISIBLE:  '--- combo box --- combo box  $l ', cursor=0",
+    ["BRAILLE LINE:  '--- combo box --- combo box $l Or push button'",
+     "     VISIBLE:  '--- combo box --- combo box $l O', cursor=0",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: '--- combo box'",
@@ -479,8 +479,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "49. Tab",
-    ["BRAILLE LINE:  '--- combo box --- combo box  $l Or push button'",
-     "     VISIBLE:  '--- combo box --- combo box  $l ', cursor=0",
+    ["BRAILLE LINE:  '--- combo box --- combo box $l Or push button'",
+     "     VISIBLE:  '--- combo box --- combo box $l O', cursor=0",
      "BRAILLE LINE:  '--- combo box'",
      "     VISIBLE:  '--- combo box', cursor=1",
      "SPEECH OUTPUT: '--- combo box'"]))
diff --git a/test/keystrokes/firefox/label_inference_entries.py 
b/test/keystrokes/firefox/label_inference_entries.py
index 588d630..11801bc 100644
--- a/test/keystrokes/firefox/label_inference_entries.py
+++ b/test/keystrokes/firefox/label_inference_entries.py
@@ -25,7 +25,7 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "2. Next form field",
-    ["BRAILLE LINE:  'Amusing numbers fall between  $l and  $l .'",
+    ["BRAILLE LINE:  'Amusing numbers fall between  $l and  $l.'",
      "     VISIBLE:  'Amusing numbers fall between  $l', cursor=0",
      "SPEECH OUTPUT: 'Amusing numbers fall between entry'"]))
 
@@ -36,7 +36,7 @@ sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "3. Next form field",
     ["KNOWN ISSUE: We are not scrolling to the entry",
-     "BRAILLE LINE:  'Amusing numbers fall between  $l and  $l .'",
+     "BRAILLE LINE:  'Amusing numbers fall between  $l and  $l.'",
      "     VISIBLE:  'Amusing numbers fall between  $l', cursor=0",
      "SPEECH OUTPUT: 'and entry'"]))
 
diff --git a/test/keystrokes/firefox/label_inference_mailman.py 
b/test/keystrokes/firefox/label_inference_mailman.py
index 9858b40..b042e38 100644
--- a/test/keystrokes/firefox/label_inference_mailman.py
+++ b/test/keystrokes/firefox/label_inference_mailman.py
@@ -15,8 +15,8 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "1. Next form field",
-    ["BRAILLE LINE:  ' search mozilla:  $l Go push button'",
-     "     VISIBLE:  ' search mozilla:  $l Go push but', cursor=0",
+    ["BRAILLE LINE:  'search mozilla:  $l Go push button'",
+     "     VISIBLE:  'search mozilla:  $l Go push butt', cursor=0",
      "SPEECH OUTPUT: 'search mozilla: entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -26,8 +26,8 @@ sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "2. Next form field",
     ["KNOWN ISSUE: We are not scrolling to the current item",
-     "BRAILLE LINE:  ' search mozilla:  $l Go push button'",
-     "     VISIBLE:  ' search mozilla:  $l Go push but', cursor=0",
+     "BRAILLE LINE:  'search mozilla:  $l Go push button'",
+     "     VISIBLE:  'search mozilla:  $l Go push butt', cursor=0",
      "SPEECH OUTPUT: 'Go push button'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -36,8 +36,8 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "3. Next form field",
-    ["BRAILLE LINE:  'Your email address: $l '",
-     "     VISIBLE:  'Your email address: $l ', cursor=0",
+    ["BRAILLE LINE:  'Your email address: $l'",
+     "     VISIBLE:  'Your email address: $l', cursor=0",
      "SPEECH OUTPUT: 'Your email address: entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -46,8 +46,8 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "4. Next form field",
-    ["BRAILLE LINE:  'Your name (optional): $l '",
-     "     VISIBLE:  'Your name (optional): $l ', cursor=0",
+    ["BRAILLE LINE:  'Your name (optional): $l'",
+     "     VISIBLE:  'Your name (optional): $l', cursor=0",
      "SPEECH OUTPUT: 'Your name (optional): entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -56,8 +56,8 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "5. Next form field",
-    ["BRAILLE LINE:  'Pick a password: $l '",
-     "     VISIBLE:  'Pick a password: $l ', cursor=0",
+    ["BRAILLE LINE:  'Pick a password: $l'",
+     "     VISIBLE:  'Pick a password: $l', cursor=0",
      "SPEECH OUTPUT: 'Pick a password: password text'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -66,8 +66,8 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "6. Next form field",
-    ["BRAILLE LINE:  'Reenter password to confirm: $l '",
-     "     VISIBLE:  'Reenter password to confirm: $l ', cursor=0",
+    ["BRAILLE LINE:  'Reenter password to confirm: $l'",
+     "     VISIBLE:  'Reenter password to confirm: $l', cursor=0",
      "SPEECH OUTPUT: 'Reenter password to confirm: password text'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -106,7 +106,7 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "10. Next form field",
-    ["BRAILLE LINE:  'Admin address:  $l Password:  $l  Visit Subscriber List push button'",
+    ["BRAILLE LINE:  'Admin address:  $l Password:  $l Visit Subscriber List push button'",
      "     VISIBLE:  'Admin address:  $l Password:  $l', cursor=0",
      "SPEECH OUTPUT: 'Admin address: entry'"]))
 
@@ -116,7 +116,7 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "11. Next form field",
-    ["BRAILLE LINE:  'Admin address:  $l Password:  $l  Visit Subscriber List push button'",
+    ["BRAILLE LINE:  'Admin address:  $l Password:  $l Visit Subscriber List push button'",
      "     VISIBLE:  'Admin address:  $l Password:  $l', cursor=0",
      "SPEECH OUTPUT: 'Password: password text'"]))
 
@@ -126,7 +126,7 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "12. Next form field",
-    ["BRAILLE LINE:  'Admin address:  $l Password:  $l  Visit Subscriber List push button'",
+    ["BRAILLE LINE:  'Admin address:  $l Password:  $l Visit Subscriber List push button'",
      "     VISIBLE:  'Admin address:  $l Password:  $l', cursor=0",
      "SPEECH OUTPUT: 'Visit Subscriber List push button'"]))
 
diff --git a/test/keystrokes/firefox/line_nav_bug_546815.py b/test/keystrokes/firefox/line_nav_bug_546815.py
index eff0231..13962e8 100644
--- a/test/keystrokes/firefox/line_nav_bug_546815.py
+++ b/test/keystrokes/firefox/line_nav_bug_546815.py
@@ -332,8 +332,7 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'check box'",
      "SPEECH OUTPUT: 'not checked'",
      "SPEECH OUTPUT: 'wild animal ",
-     "'",
-     "SPEECH OUTPUT: 'separator'"]))
+     "'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_bug_549128.py b/test/keystrokes/firefox/line_nav_bug_549128.py
index 025b0b0..74e3c22 100644
--- a/test/keystrokes/firefox/line_nav_bug_549128.py
+++ b/test/keystrokes/firefox/line_nav_bug_549128.py
@@ -53,9 +53,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
-    ["KNOWN ISSUE: The new smarts for hacking around Gecko AtkText bugs hasn't yet been given to braille.",
-     "BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '2 (5 oz.) Filet Mignons'",
+     "     VISIBLE:  '2 (5 oz.) Filet Mignons', cursor=0",
      "SPEECH OUTPUT: '2 (5 oz.) Filet Mignons",
      "'"]))
 
@@ -63,8 +62,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "7. Line Down",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '2 (5 oz.) Top Sirloins'",
+     "     VISIBLE:  '2 (5 oz.) Top Sirloins', cursor=0",
      "SPEECH OUTPUT: '2 (5 oz.) Top Sirloins",
      "'"]))
 
@@ -72,8 +71,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '4 (4 oz.) Foobar Steaks Burgers'",
+     "     VISIBLE:  '4 (4 oz.) Foobar Steaks Burgers', cursor=0",
      "SPEECH OUTPUT: '4 (4 oz.) Foobar Steaks Burgers",
      "'"]))
 
@@ -81,8 +80,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '6 (5.75 oz.) Stuffed Baked Potatoes'",
+     "     VISIBLE:  '6 (5.75 oz.) Stuffed Baked Potat', cursor=0",
      "SPEECH OUTPUT: '6 (5.75 oz.) Stuffed Baked Potatoes",
      "'"]))
 
@@ -90,8 +89,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '2 (4.5 oz.) Stuffed Sole with Scallops and Crab'",
+     "     VISIBLE:  '2 (4.5 oz.) Stuffed Sole with Sc', cursor=0",
      "SPEECH OUTPUT: '2 (4.5 oz.) Stuffed Sole with Scallops and Crab",
      "'"]))
 
@@ -99,8 +98,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "11. Line Down",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '1 (6 in.) Chocolate Lover's Cake'",
+     "     VISIBLE:  '1 (6 in.) Chocolate Lover's Cake', cursor=0",
      "SPEECH OUTPUT: '1 (6 in.) Chocolate Lover's Cake",
      "'"]))
 
@@ -123,9 +122,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "14. Line Up",
-    ["KNOWN ISSUE: The new smarts for hacking around Gecko AtkText bugs hasn't yet been given to braille.",
-     "BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '1 (6 in.) Chocolate Lover's Cake'",
+     "     VISIBLE:  '1 (6 in.) Chocolate Lover's Cake', cursor=0",
      "SPEECH OUTPUT: '1 (6 in.) Chocolate Lover's Cake",
      "'"]))
 
@@ -133,8 +131,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "15. Line Up",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '2 (4.5 oz.) Stuffed Sole with Scallops and Crab'",
+     "     VISIBLE:  '2 (4.5 oz.) Stuffed Sole with Sc', cursor=0",
      "SPEECH OUTPUT: '2 (4.5 oz.) Stuffed Sole with Scallops and Crab",
      "'"]))
 
@@ -142,8 +140,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "16. Line Up",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '6 (5.75 oz.) Stuffed Baked Potatoes'",
+     "     VISIBLE:  '6 (5.75 oz.) Stuffed Baked Potat', cursor=0",
      "SPEECH OUTPUT: '6 (5.75 oz.) Stuffed Baked Potatoes",
      "'"]))
 
@@ -151,8 +149,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "17. Line Up",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '4 (4 oz.) Foobar Steaks Burgers'",
+     "     VISIBLE:  '4 (4 oz.) Foobar Steaks Burgers', cursor=0",
      "SPEECH OUTPUT: '4 (4 oz.) Foobar Steaks Burgers",
      "'"]))
 
@@ -160,8 +158,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "18. Line Up",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '2 (5 oz.) Top Sirloins'",
+     "     VISIBLE:  '2 (5 oz.) Top Sirloins', cursor=0",
      "SPEECH OUTPUT: '2 (5 oz.) Top Sirloins",
      "'"]))
 
@@ -169,8 +167,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "19. Line Up",
-    ["BRAILLE LINE:  '\xa0'",
-     "     VISIBLE:  '\xa0', cursor=1",
+    ["BRAILLE LINE:  '2 (5 oz.) Filet Mignons'",
+     "     VISIBLE:  '2 (5 oz.) Filet Mignons', cursor=0",
      "SPEECH OUTPUT: '2 (5 oz.) Filet Mignons",
      "'"]))
 
diff --git a/test/keystrokes/firefox/line_nav_bug_552887a.py b/test/keystrokes/firefox/line_nav_bug_552887a.py
index 8131217..518bbaf 100644
--- a/test/keystrokes/firefox/line_nav_bug_552887a.py
+++ b/test/keystrokes/firefox/line_nav_bug_552887a.py
@@ -12,7 +12,7 @@ sequence.append(KeyComboAction("<Control>Home"))
 sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -46,12 +46,15 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
-    ["BRAILLE LINE:  'The Orca logo image'",
-     "     VISIBLE:  'The Orca logo image', cursor=0",
+    ["BRAILLE LINE:  'The Orca logo image '",
+     "     VISIBLE:  'The Orca logo image ', cursor=0",
      "SPEECH OUTPUT: 'The Orca logo'",
      "SPEECH OUTPUT: 'image'",
      "SPEECH OUTPUT: 'link'",
-     "SPEECH OUTPUT: 'Hey, look, it's our logo!'"]))
+     "SPEECH OUTPUT: 'Hey, look, it's our logo!'",
+     "SPEECH OUTPUT: '",
+     "'",
+     "SPEECH OUTPUT: 'link image'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -188,7 +191,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "22. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -236,12 +239,15 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "28. Line Up",
-    ["BRAILLE LINE:  'The Orca logo image'",
-     "     VISIBLE:  'The Orca logo image', cursor=0",
+    ["BRAILLE LINE:  'The Orca logo image '",
+     "     VISIBLE:  'The Orca logo image ', cursor=0",
      "SPEECH OUTPUT: 'The Orca logo'",
      "SPEECH OUTPUT: 'image'",
      "SPEECH OUTPUT: 'link'",
-     "SPEECH OUTPUT: 'Hey, look, it's our logo!'"]))
+     "SPEECH OUTPUT: 'Hey, look, it's our logo!'",
+     "SPEECH OUTPUT: '",
+     "'",
+     "SPEECH OUTPUT: 'link image'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -278,7 +284,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "32. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 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 869fea0..dc2909d 100644
--- a/test/keystrokes/firefox/line_nav_bug_555055.py
+++ b/test/keystrokes/firefox/line_nav_bug_555055.py
@@ -55,7 +55,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -87,7 +87,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -119,15 +119,15 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "14. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "15. Line Up",
-    ["BRAILLE LINE:  ' '",
-     "     VISIBLE:  ' ', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -158,8 +158,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "19. Line Up",
-    ["BRAILLE LINE:  ' '",
-     "     VISIBLE:  ' ', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -167,15 +167,15 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "20. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "21. Line Up",
-    ["BRAILLE LINE:  ' '",
-     "     VISIBLE:  ' ', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -214,8 +214,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "26. Line Up",
-    ["BRAILLE LINE:  ' '",
-     "     VISIBLE:  ' ', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/line_nav_bugzilla_search_down.py 
b/test/keystrokes/firefox/line_nav_bugzilla_search_down.py
index 5c91efc..8efc269 100644
--- a/test/keystrokes/firefox/line_nav_bugzilla_search_down.py
+++ b/test/keystrokes/firefox/line_nav_bugzilla_search_down.py
@@ -44,8 +44,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
-    ["BRAILLE LINE:  ' Short Bug Search Form Complicated Bug Search Form  '",
-     "     VISIBLE:  ' Short Bug Search Form Complicat', cursor=1",
+    ["BRAILLE LINE:  'Short Bug Search Form Complicated Bug Search Form'",
+     "     VISIBLE:  'Short Bug Search Form Complicate', cursor=0",
      "SPEECH OUTPUT: 'Short Bug Search Form '",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: 'Complicated Bug Search Form '"]))
@@ -87,10 +87,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
-    ["BRAILLE LINE:  'Admin list box'",
-     "     VISIBLE:  'Admin list box', cursor=0",
+    ["BRAILLE LINE:  'Admin  list box'",
+     "     VISIBLE:  'Admin  list box', cursor=0",
      "SPEECH OUTPUT: 'Classification:'",
-     "SPEECH OUTPUT: 'Admin'",
+     "SPEECH OUTPUT: 'Admin '",
      "SPEECH OUTPUT: 'multi-select'",
      "SPEECH OUTPUT: 'List with 8 items'"]))
 
@@ -180,27 +180,25 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "15. Line Down",
-    ["BRAILLE LINE:  'A Comment: contains the string combo box $l table cell'",
+    ["BRAILLE LINE:  'A Comment: contains the string combo box $l'",
      "     VISIBLE:  'A Comment: contains the string c', cursor=1",
      "SPEECH OUTPUT: 'A Comment:'",
      "SPEECH OUTPUT: 'row header'",
      "SPEECH OUTPUT: 'contains the string'",
      "SPEECH OUTPUT: 'combo box'",
-     "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "16. Line Down",
-    ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings combo box $l table cell'",
+    ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings combo box $l'",
      "     VISIBLE:  'Whiteboard: contains all of the ', cursor=1",
      "SPEECH OUTPUT: 'Whiteboard:'",
      "SPEECH OUTPUT: 'row header'",
      "SPEECH OUTPUT: 'contains all of the words/strings'",
      "SPEECH OUTPUT: 'combo box'",
-     "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -510,9 +508,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "48. Line Down",
-    ["BRAILLE LINE:  'table cell \(comma-separated list\)'",
-     "     VISIBLE:  'table cell \(comma-separated list', cursor=0",
-     "SPEECH OUTPUT: 'blank'",
+    ["BRAILLE LINE:  '(comma-separated list)'",
+     "     VISIBLE:  '(comma-separated list)', cursor=0",
      "SPEECH OUTPUT: '(comma-separated list)'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -535,8 +532,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "51. Line Down",
-    ["BRAILLE LINE:  ' $l '",
-     "     VISIBLE:  ' $l ', cursor=0",
+    ["BRAILLE LINE:  ' $l and'",
+     "     VISIBLE:  ' $l and', cursor=0",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'and '",
      "SPEECH OUTPUT: 'entry'",
@@ -648,8 +645,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "63. Line Down",
-    ["BRAILLE LINE:  '    < > check box and remember these as my default search options'",
-     "     VISIBLE:  '    < > check box and remember t', cursor=1",
+    ["BRAILLE LINE:  '< > check box and remember these as my default search options'",
+     "     VISIBLE:  '< > check box and remember these', cursor=0",
      "SPEECH OUTPUT: 'check box'",
      "SPEECH OUTPUT: 'not checked'",
      "SPEECH OUTPUT: ' and remember these as my default search options '"]))
@@ -684,8 +681,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "67. Line Down",
-    ["BRAILLE LINE:  '--- combo box --- combo box  $l Or push button'",
-     "     VISIBLE:  '--- combo box --- combo box  $l ', cursor=0",
+    ["BRAILLE LINE:  '--- combo box --- combo box $l Or push button'",
+     "     VISIBLE:  '--- combo box --- combo box $l O', cursor=0",
      "SPEECH OUTPUT: '---'",
      "SPEECH OUTPUT: 'combo box'",
      "SPEECH OUTPUT: '---'",
@@ -698,8 +695,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "68. Line Down",
-    ["BRAILLE LINE:  'And push button       Add another boolean chart push button      '",
-     "     VISIBLE:  'And push button       Add anothe', cursor=1",
+    ["BRAILLE LINE:  'And push button Add another boolean chart push button'",
+     "     VISIBLE:  'And push button Add another bool', cursor=1",
      "SPEECH OUTPUT: 'And'",
      "SPEECH OUTPUT: 'push button'",
      "SPEECH OUTPUT: 'Add another boolean chart'",
diff --git a/test/keystrokes/firefox/line_nav_bugzilla_search_up.py 
b/test/keystrokes/firefox/line_nav_bugzilla_search_up.py
index a3f8c1f..4d3f474 100644
--- a/test/keystrokes/firefox/line_nav_bugzilla_search_up.py
+++ b/test/keystrokes/firefox/line_nav_bugzilla_search_up.py
@@ -22,8 +22,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "2. Line Up",
-    ["BRAILLE LINE:  'And push button       Add another boolean chart push button      '",
-     "     VISIBLE:  'And push button       Add anothe', cursor=1",
+    ["BRAILLE LINE:  'And push button Add another boolean chart push button'",
+     "     VISIBLE:  'And push button Add another bool', cursor=1",
      "SPEECH OUTPUT: 'And'",
      "SPEECH OUTPUT: 'push button'",
      "SPEECH OUTPUT: 'Add another boolean chart'",
@@ -33,8 +33,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "3. Line Up",
-    ["BRAILLE LINE:  '--- combo box --- combo box  $l Or push button'",
-     "     VISIBLE:  '--- combo box --- combo box  $l ', cursor=0",
+    ["BRAILLE LINE:  '--- combo box --- combo box $l Or push button'",
+     "     VISIBLE:  '--- combo box --- combo box $l O', cursor=0",
      "SPEECH OUTPUT: '---'",
      "SPEECH OUTPUT: 'combo box'",
      "SPEECH OUTPUT: '---'",
@@ -47,7 +47,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "4. Line Up",
-    ["BRAILLE LINE:  '< > check box Not \(negate this whole chart\)'",
+    ["BRAILLE LINE:  '< > check box Not (negate this whole chart)'",
      "     VISIBLE:  '< > check box Not \(negate this w', cursor=0",
      "SPEECH OUTPUT: 'check box'",
      "SPEECH OUTPUT: 'not checked'",
@@ -73,8 +73,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "7. Line Up",
-    ["BRAILLE LINE:  '    < > check box and remember these as my default search options'",
-     "     VISIBLE:  '    < > check box and remember t', cursor=1",
+    ["BRAILLE LINE:  '< > check box and remember these as my default search options'",
+     "     VISIBLE:  '< > check box and remember these', cursor=0",
      "SPEECH OUTPUT: 'check box'",
      "SPEECH OUTPUT: 'not checked'",
      "SPEECH OUTPUT: ' and remember these as my default search options '"]))
@@ -185,8 +185,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "19. Line Up",
-    ["BRAILLE LINE:  ' $l '",
-     "     VISIBLE:  ' $l ', cursor=0",
+    ["BRAILLE LINE:  ' $l and'",
+     "     VISIBLE:  ' $l and', cursor=0",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'and '",
      "SPEECH OUTPUT: 'entry'",
@@ -212,10 +212,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "22. Line Up",
-    ["BRAILLE LINE:  'table cell \(comma-separated list\)'",
-     "     VISIBLE:  'table cell \(comma-separated list', cursor=0",
-     "SPEECH OUTPUT: 'blank'",
-     "SPEECH OUTPUT: '\(comma-separated list\)'"]))
+    ["BRAILLE LINE:  '(comma-separated list)'",
+     "     VISIBLE:  '(comma-separated list)', cursor=0",
+     "SPEECH OUTPUT: '(comma-separated list)'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -257,8 +256,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "27. Line Up",
-    ["BRAILLE LINE:  '< > check box '",
-     "     VISIBLE:  '< > check box ', cursor=0",
+    ["BRAILLE LINE:  '< > check box a commenter'",
+     "     VISIBLE:  '< > check box a commenter', cursor=0",
      "SPEECH OUTPUT: 'check box'",
      "SPEECH OUTPUT: 'not checked'",
      "SPEECH OUTPUT: 'a commenter '"]))
@@ -332,8 +331,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "35. Line Up",
-    ["BRAILLE LINE:  '< > check box '",
-     "     VISIBLE:  '< > check box ', cursor=0",
+    ["BRAILLE LINE:  '< > check box a commenter'",
+     "     VISIBLE:  '< > check box a commenter', cursor=0",
      "SPEECH OUTPUT: 'check box'",
      "SPEECH OUTPUT: 'not checked'",
      "SPEECH OUTPUT: 'a commenter '"]))
@@ -524,27 +523,25 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "54. Line Up",
-    ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings combo box $l table cell'",
+    ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings combo box $l'",
      "     VISIBLE:  'Whiteboard: contains all of the ', cursor=1",
      "SPEECH OUTPUT: 'Whiteboard:'",
      "SPEECH OUTPUT: 'row header'",
      "SPEECH OUTPUT: 'contains all of the words/strings'",
      "SPEECH OUTPUT: 'combo box'",
-     "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "55. Line Up",
-    ["BRAILLE LINE:  'A Comment: contains the string combo box $l table cell'",
+    ["BRAILLE LINE:  'A Comment: contains the string combo box $l'",
      "     VISIBLE:  'A Comment: contains the string c', cursor=1",
      "SPEECH OUTPUT: 'A Comment:'",
      "SPEECH OUTPUT: 'row header'",
      "SPEECH OUTPUT: 'contains the string'",
      "SPEECH OUTPUT: 'combo box'",
-     "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -632,10 +629,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "64. Line Up",
-    ["BRAILLE LINE:  'Admin list box'",
-     "     VISIBLE:  'Admin list box', cursor=0",
+    ["BRAILLE LINE:  'Admin  list box'",
+     "     VISIBLE:  'Admin  list box', cursor=0",
      "SPEECH OUTPUT: 'Classification:'",
-     "SPEECH OUTPUT: 'Admin'",
+     "SPEECH OUTPUT: 'Admin '",
      "SPEECH OUTPUT: 'multi-select'",
      "SPEECH OUTPUT: 'List with 8 items'"]))
 
@@ -676,8 +673,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "68. Line Up",
-    ["BRAILLE LINE:  ' Short Bug Search Form Complicated Bug Search Form  '",
-     "     VISIBLE:  ' Short Bug Search Form Complicat', cursor=1",
+    ["BRAILLE LINE:  'Short Bug Search Form Complicated Bug Search Form'",
+     "     VISIBLE:  'Short Bug Search Form Complicate', cursor=0",
      "SPEECH OUTPUT: 'Short Bug Search Form '",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: 'Complicated Bug Search Form '"]))
diff --git a/test/keystrokes/firefox/line_nav_empty_anchor.py 
b/test/keystrokes/firefox/line_nav_empty_anchor.py
index c3264e0..ad2c319 100644
--- a/test/keystrokes/firefox/line_nav_empty_anchor.py
+++ b/test/keystrokes/firefox/line_nav_empty_anchor.py
@@ -11,8 +11,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Home"))
 sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
-    ["BRAILLE LINE:  'FAQ h1'",
-     "     VISIBLE:  'FAQ h1', cursor=1",
+    ["BRAILLE LINE:  'FAQ  h1'",
+     "     VISIBLE:  'FAQ  h1', cursor=1",
      "SPEECH OUTPUT: 'FAQ '",
      "SPEECH OUTPUT: 'heading level 1'"]))
 
@@ -258,8 +258,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "29. Line Up",
-    ["BRAILLE LINE:  'FAQ h1'",
-     "     VISIBLE:  'FAQ h1', cursor=1",
+    ["BRAILLE LINE:  'FAQ  h1'",
+     "     VISIBLE:  'FAQ  h1', cursor=1",
      "SPEECH OUTPUT: 'FAQ '",
      "SPEECH OUTPUT: 'heading level 1'"]))
 
diff --git a/test/keystrokes/firefox/line_nav_empty_textarea.py 
b/test/keystrokes/firefox/line_nav_empty_textarea.py
index 28937e4..4d04959 100644
--- a/test/keystrokes/firefox/line_nav_empty_textarea.py
+++ b/test/keystrokes/firefox/line_nav_empty_textarea.py
@@ -19,8 +19,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
-    ["BRAILLE LINE:  'Label :'",
-     "     VISIBLE:  'Label :', cursor=1",
+    ["BRAILLE LINE:  'Label:'",
+     "     VISIBLE:  'Label:', cursor=1",
      "SPEECH OUTPUT: 'Label'",
      "SPEECH OUTPUT: ': ",
      "'"]))
@@ -55,8 +55,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "6. Line Up",
-    ["BRAILLE LINE:  'Label :'",
-     "     VISIBLE:  'Label :', cursor=1",
+    ["BRAILLE LINE:  'Label:'",
+     "     VISIBLE:  'Label:', cursor=1",
      "SPEECH OUTPUT: 'Label'",
      "SPEECH OUTPUT: ': ",
      "'"]))
diff --git a/test/keystrokes/firefox/line_nav_enter_bug.py b/test/keystrokes/firefox/line_nav_enter_bug.py
index 0e173b1..6d03b83 100644
--- a/test/keystrokes/firefox/line_nav_enter_bug.py
+++ b/test/keystrokes/firefox/line_nav_enter_bug.py
@@ -52,7 +52,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
-    ["BRAILLE LINE:  'Enter Bug: orca – This page lets you enter a new bug h1'",
+    ["BRAILLE LINE:  'Enter Bug: orca – This page lets you enter a new bug  h1'",
      "     VISIBLE:  'Enter Bug: orca – This page lets', cursor=1",
      "SPEECH OUTPUT: 'Enter Bug: orca – This page lets you enter a new bug '",
      "SPEECH OUTPUT: 'heading level 1'"]))
@@ -70,16 +70,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -121,8 +121,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -148,10 +148,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "13. Line Down",
-    ["BRAILLE LINE:  '2.21.x list box'",
-     "     VISIBLE:  '2.21.x list box', cursor=0",
+    ["BRAILLE LINE:  '2.21.x  list box'",
+     "     VISIBLE:  '2.21.x  list box', cursor=0",
      "SPEECH OUTPUT: 'Version:'",
-     "SPEECH OUTPUT: '2.21.x'",
+     "SPEECH OUTPUT: '2.21.x '",
      "SPEECH OUTPUT: 'List with 9 items'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -168,18 +168,18 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "15. Line Down",
-    ["BRAILLE LINE:  'braille list box'",
-     "     VISIBLE:  'braille list box', cursor=0",
+    ["BRAILLE LINE:  'braille  list box'",
+     "     VISIBLE:  'braille  list box', cursor=0",
      "SPEECH OUTPUT: 'Component:'",
-     "SPEECH OUTPUT: 'braille'",
+     "SPEECH OUTPUT: 'braille '",
      "SPEECH OUTPUT: 'List with 5 items'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "16. Line Down",
-    ["BRAILLE LINE:  ' table cell'",
-     "     VISIBLE:  ' table cell', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -238,8 +238,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "22. Line Down",
-    ["BRAILLE LINE:  ' table cell'",
-     "     VISIBLE:  ' table cell', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -271,8 +271,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "26. Line Down",
-    ["BRAILLE LINE:  ' table cell'",
-     "     VISIBLE:  ' table cell', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -341,8 +341,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "34. Line Up",
-    ["BRAILLE LINE:  ' table cell'",
-     "     VISIBLE:  ' table cell', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -375,8 +375,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "38. Line Up",
-    ["BRAILLE LINE:  ' table cell'",
-     "     VISIBLE:  ' table cell', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -436,18 +436,18 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "44. Line Up",
-    ["BRAILLE LINE:  ' table cell'",
-     "     VISIBLE:  ' table cell', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "45. Line Up",
-    ["BRAILLE LINE:  'braille list box'",
-     "     VISIBLE:  'braille list box', cursor=0",
+    ["BRAILLE LINE:  'braille  list box'",
+     "     VISIBLE:  'braille  list box', cursor=0",
      "SPEECH OUTPUT: 'Component:'",
-     "SPEECH OUTPUT: 'braille'",
+     "SPEECH OUTPUT: 'braille '",
      "SPEECH OUTPUT: 'List with 5 items'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -464,10 +464,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "47. Line Up",
-    ["BRAILLE LINE:  '2.21.x list box'",
-     "     VISIBLE:  '2.21.x list box', cursor=0",
+    ["BRAILLE LINE:  '2.21.x  list box'",
+     "     VISIBLE:  '2.21.x  list box', cursor=0",
      "SPEECH OUTPUT: 'Version:'",
-     "SPEECH OUTPUT: '2.21.x'",
+     "SPEECH OUTPUT: '2.21.x '",
      "SPEECH OUTPUT: 'List with 9 items'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -493,8 +493,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "50. Line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -536,16 +536,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "54. Line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "55. Line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -561,7 +561,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "57. Line Up",
-    ["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  h1'",
      "     VISIBLE:  'Enter Bug: orca – This page lets', cursor=1",
      "SPEECH OUTPUT: 'Enter Bug: orca \u2013 This page lets you enter a new bug '",
      "SPEECH OUTPUT: 'heading level 1'"]))
diff --git a/test/keystrokes/firefox/line_nav_entries.py b/test/keystrokes/firefox/line_nav_entries.py
index 0bcac37..34649b3 100644
--- a/test/keystrokes/firefox/line_nav_entries.py
+++ b/test/keystrokes/firefox/line_nav_entries.py
@@ -38,7 +38,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
-    ["BRAILLE LINE:  'Amusing numbers fall between  $l and  $l .'",
+    ["BRAILLE LINE:  'Amusing numbers fall between  $l and  $l.'",
      "     VISIBLE:  'Amusing numbers fall between  $l', cursor=1",
      "SPEECH OUTPUT: 'Amusing numbers fall between '",
      "SPEECH OUTPUT: 'entry'",
@@ -522,7 +522,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "57. Line Up",
-    ["BRAILLE LINE:  'Amusing numbers fall between  $l and  $l .'",
+    ["BRAILLE LINE:  'Amusing numbers fall between  $l and  $l.'",
      "     VISIBLE:  'Amusing numbers fall between  $l', cursor=1",
      "SPEECH OUTPUT: 'Amusing numbers fall between '",
      "SPEECH OUTPUT: 'entry'",
diff --git a/test/keystrokes/firefox/line_nav_follow_same_page_link_2.py 
b/test/keystrokes/firefox/line_nav_follow_same_page_link_2.py
index fcad316..a445d2b 100644
--- a/test/keystrokes/firefox/line_nav_follow_same_page_link_2.py
+++ b/test/keystrokes/firefox/line_nav_follow_same_page_link_2.py
@@ -7,6 +7,7 @@ import utils
 
 sequence = MacroSequence()
 
+sequence.append(PauseAction(3000))
 sequence.append(KeyComboAction("<Control>Home"))
 for i in range(25):
     sequence.append(KeyComboAction("Tab"))
@@ -16,8 +17,8 @@ sequence.append(KeyComboAction("Return"))
 sequence.append(utils.AssertPresentationAction(
     "Return to activate the same-page link for the About heading",
     ["KNOWN ISSUE: We are not speaking this.",
-     "BRAILLE LINE:  '2.About'",
-     "     VISIBLE:  '2.About', cursor=3"]))
+     "BRAILLE LINE:  '2. About'",
+     "     VISIBLE:  '2. About', cursor=4"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
diff --git a/test/keystrokes/firefox/line_nav_home_end_on_blank_line.py 
b/test/keystrokes/firefox/line_nav_home_end_on_blank_line.py
index 066dbf4..3b07e0d 100644
--- a/test/keystrokes/firefox/line_nav_home_end_on_blank_line.py
+++ b/test/keystrokes/firefox/line_nav_home_end_on_blank_line.py
@@ -15,7 +15,7 @@ sequence.append(KeyComboAction("End"))
 sequence.append(utils.AssertPresentationAction(
     "1. End",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'newline'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -23,7 +23,7 @@ sequence.append(KeyComboAction("Home"))
 sequence.append(utils.AssertPresentationAction(
     "2. Home",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'newline'"]))
 
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/firefox/line_nav_iframes_in_inline_block.py 
b/test/keystrokes/firefox/line_nav_iframes_in_inline_block.py
index 5e2112d..888c2d0 100644
--- a/test/keystrokes/firefox/line_nav_iframes_in_inline_block.py
+++ b/test/keystrokes/firefox/line_nav_iframes_in_inline_block.py
@@ -19,38 +19,35 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
-    ["BRAILLE LINE:  ' $l'",
-     "     VISIBLE:  ' $l', cursor=0",
-     "SPEECH OUTPUT: 'document frame'"]))
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
-    ["BRAILLE LINE:  ' $l'",
-     "     VISIBLE:  ' $l', cursor=0",
-     "SPEECH OUTPUT: 'document frame'",
-     "SPEECH OUTPUT: 'document frame'"]))
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["KNOWN ISSUE: We're stuck here",
-     "BRAILLE LINE:  ' $l'",
-     "     VISIBLE:  ' $l', cursor=0",
-     "SPEECH OUTPUT: 'document frame'",
-     "SPEECH OUTPUT: 'document frame'"]))
+     "BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["KNOWN ISSUE: We're stuck here",
-     "BRAILLE LINE:  ' $l'",
-     "     VISIBLE:  ' $l', cursor=0",
-     "SPEECH OUTPUT: 'document frame'",
-     "SPEECH OUTPUT: 'document frame'"]))
+     "BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>End"))
@@ -64,10 +61,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "7. Line Up",
-    ["BRAILLE LINE:  ' $l'",
-     "     VISIBLE:  ' $l', cursor=0",
-     "SPEECH OUTPUT: 'document frame'",
-     "SPEECH OUTPUT: 'document frame'"]))
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
+     "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_nested_tables.py 
b/test/keystrokes/firefox/line_nav_nested_tables.py
index 43d5187..3d8f8e5 100644
--- a/test/keystrokes/firefox/line_nav_nested_tables.py
+++ b/test/keystrokes/firefox/line_nav_nested_tables.py
@@ -21,7 +21,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "2. line Down",
-    ["BRAILLE LINE:  'Campus  .  Classroom  .  Communicate  .  Reports '",
+    ["BRAILLE LINE:  'Campus  .  Classroom  .  Communicate  .  Reports'",
      "     VISIBLE:  'Campus  .  Classroom  .  Communi', cursor=1",
      "SPEECH OUTPUT: 'Campus'",
      "SPEECH OUTPUT: 'link'",
@@ -63,9 +63,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "6. line Down",
-    ["KNOWN ISSUE: We are now finding and moving to useless table cells.",
-     "BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -81,16 +80,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "8. line Down",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "9. line Down",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -121,8 +120,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "13. line Down",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -138,16 +137,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "15. line Down",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "16. line Down",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -178,16 +177,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "20. line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "21. line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -203,16 +202,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "23. line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "24. line Up",
-    ["BRAILLE LINE:  ' '",
-     "     VISIBLE:  ' ', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -243,16 +242,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "28. line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "29. line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -268,16 +267,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "31. line Up",
-    ["BRAILLE LINE:  'table cell'",
-     "     VISIBLE:  'table cell', cursor=0",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "32. line Up",
-    ["BRAILLE LINE:  ' '",
-     "     VISIBLE:  ' ', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -292,8 +291,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "34. line Up",
-    ["BRAILLE LINE:  ' '",
-     "     VISIBLE:  ' ', cursor=1",
+    ["BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -316,7 +315,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "27. line Up",
-    ["BRAILLE LINE:  'Campus  .  Classroom  .  Communicate  .  Reports '",
+    ["BRAILLE LINE:  'Campus  .  Classroom  .  Communicate  .  Reports'",
      "     VISIBLE:  'Campus  .  Classroom  .  Communi', cursor=1",
      "SPEECH OUTPUT: 'Campus'",
      "SPEECH OUTPUT: 'link'",
diff --git a/test/keystrokes/firefox/line_nav_pre_lines.py b/test/keystrokes/firefox/line_nav_pre_lines.py
index c41a14c..7f5bbf1 100644
--- a/test/keystrokes/firefox/line_nav_pre_lines.py
+++ b/test/keystrokes/firefox/line_nav_pre_lines.py
@@ -20,7 +20,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -28,7 +28,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -72,7 +72,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -88,7 +88,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "10. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -96,7 +96,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "11. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -140,7 +140,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "16. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -148,7 +148,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "17. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/line_nav_pre_links.py b/test/keystrokes/firefox/line_nav_pre_links.py
index 3b6e898..6339e70 100644
--- a/test/keystrokes/firefox/line_nav_pre_links.py
+++ b/test/keystrokes/firefox/line_nav_pre_links.py
@@ -54,7 +54,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "6. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -79,7 +79,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "9. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/line_nav_simple_form.py b/test/keystrokes/firefox/line_nav_simple_form.py
index 565856a..95b2e50 100644
--- a/test/keystrokes/firefox/line_nav_simple_form.py
+++ b/test/keystrokes/firefox/line_nav_simple_form.py
@@ -82,7 +82,9 @@ sequence.append(utils.AssertPresentationAction(
     "8. line Down",
     ["BRAILLE LINE:  '      $l'",
      "     VISIBLE:  '      $l', cursor=1",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'Tell me a little more about yourself:'",
+     "SPEECH OUTPUT: 'entry'",
+     "SPEECH OUTPUT: '     '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -216,7 +218,9 @@ sequence.append(utils.AssertPresentationAction(
     "20. line Up",
     ["BRAILLE LINE:  '      $l'",
      "     VISIBLE:  '      $l', cursor=1",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'Tell me a little more about yourself:'",
+     "SPEECH OUTPUT: 'entry'",
+     "SPEECH OUTPUT: '     '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_slash_test.py b/test/keystrokes/firefox/line_nav_slash_test.py
index ef3d286..203292c 100644
--- a/test/keystrokes/firefox/line_nav_slash_test.py
+++ b/test/keystrokes/firefox/line_nav_slash_test.py
@@ -82,8 +82,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
-    ["BRAILLE LINE:  'Nickname  $l Password  $l Log in push button'",
-     "     VISIBLE:  'Nickname  $l Password  $l Log in', cursor=1",
+    ["BRAILLE LINE:  'Nickname $l Password $l Log in push button'",
+     "     VISIBLE:  'Nickname $l Password $l Log in p', cursor=1",
      "SPEECH OUTPUT: 'Nickname'",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'Password'",
@@ -167,8 +167,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "16. Line Up",
-    ["BRAILLE LINE:  'Nickname  $l Password  $l Log in push button'",
-     "     VISIBLE:  'Nickname  $l Password  $l Log in', cursor=1",
+    ["BRAILLE LINE:  'Nickname $l Password $l Log in push button'",
+     "     VISIBLE:  'Nickname $l Password $l Log in p', cursor=1",
      "SPEECH OUTPUT: 'Nickname'",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'Password'",
diff --git a/test/keystrokes/firefox/line_nav_sun_java.py b/test/keystrokes/firefox/line_nav_sun_java.py
index 2887e3b..88355c1 100644
--- a/test/keystrokes/firefox/line_nav_sun_java.py
+++ b/test/keystrokes/firefox/line_nav_sun_java.py
@@ -15,8 +15,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "1. Line Down",
-    ["BRAILLE LINE:  '\xbb\xa0search tips\xa0  $l Submit Search push button'",
-     "     VISIBLE:  '\xbb\xa0search tips\xa0  $l Submit Search', cursor=1",
+    ["BRAILLE LINE:  '\xbb\xa0search tips $l Submit Search push button'",
+     "     VISIBLE:  '\xbb\xa0search tips $l Submit Search p', cursor=1",
      "SPEECH OUTPUT: '\xbb\xa0'",
      "SPEECH OUTPUT: 'search tips'",
      "SPEECH OUTPUT: 'link'",
@@ -126,8 +126,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "12. Line Down",
-    ["BRAILLE LINE:  '\xa0Installation of Self-Extracting Binary'",
-     "     VISIBLE:  '\xa0Installation of Self-Extracting', cursor=1",
+    ["BRAILLE LINE:  'Installation of Self-Extracting Binary'",
+     "     VISIBLE:  'Installation of Self-Extracting ', cursor=0",
      "SPEECH OUTPUT: 'Installation of Self-Extracting Binary'",
      "SPEECH OUTPUT: 'link'"]))
 
@@ -135,8 +135,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "13. Line Down",
-    ["BRAILLE LINE:  '\xa0\xa0\xa0Installation of RPM File'",
-     "     VISIBLE:  '\xa0\xa0\xa0Installation of RPM File', cursor=1",
+    ["BRAILLE LINE:  'Installation of RPM File'",
+     "     VISIBLE:  'Installation of RPM File', cursor=0",
      "SPEECH OUTPUT: 'Installation of RPM File'",
      "SPEECH OUTPUT: 'link'"]))
 
@@ -318,7 +318,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "33. Line Down",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -343,7 +343,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "36. Line Down",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -368,7 +368,7 @@ sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "39. Line Down",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/line_nav_table_cell_links.py 
b/test/keystrokes/firefox/line_nav_table_cell_links.py
index 1a4b277..4c63f17 100644
--- a/test/keystrokes/firefox/line_nav_table_cell_links.py
+++ b/test/keystrokes/firefox/line_nav_table_cell_links.py
@@ -110,7 +110,7 @@ sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "12. Line Up",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'blank'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/line_nav_wiki_down.py b/test/keystrokes/firefox/line_nav_wiki_down.py
index 1bc4926..44bfcf0 100644
--- a/test/keystrokes/firefox/line_nav_wiki_down.py
+++ b/test/keystrokes/firefox/line_nav_wiki_down.py
@@ -35,8 +35,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
-    ["BRAILLE LINE:  'live.gnome.org h1  $l Titles push button Text push button'",
-     "     VISIBLE:  'live.gnome.org h1  $l Titles pus', cursor=1",
+    ["BRAILLE LINE:  'live.gnome.org  h1 $l Titles push button Text push button'",
+     "     VISIBLE:  'live.gnome.org  h1 $l Titles pus', cursor=1",
      "SPEECH OUTPUT: 'live.gnome.org '",
      "SPEECH OUTPUT: 'heading level 1'",
      "SPEECH OUTPUT: 'entry'",
@@ -78,7 +78,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
-    ["BRAILLE LINE:  'Home | Download/Installation | Configuration/Use | Accessible Applications | Mailing 
List ('",
+    ["BRAILLE LINE:  'Home | Download/Installation | Configuration/Use | Accessible Applications | Mailing 
List \('",
      "     VISIBLE:  'Home | Download/Installation | C', cursor=1",
      "SPEECH OUTPUT: 'Home'",
      "SPEECH OUTPUT: 'link'",
@@ -100,8 +100,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
-    ["BRAILLE LINE:  'Archives) | FAQ | DocIndex'",
-     "     VISIBLE:  'Archives) | FAQ | DocIndex', cursor=1",
+    ["BRAILLE LINE:  'Archives\) | FAQ | DocIndex'",
+     "     VISIBLE:  'Archives\) | FAQ | DocIndex', cursor=1",
      "SPEECH OUTPUT: 'Archives'",
      "SPEECH OUTPUT: 'link image'",
      "SPEECH OUTPUT: ') | '",
@@ -150,8 +150,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "11. Line Down",
-    ["BRAILLE LINE:  '1.Welcome to Orca!'",
-     "     VISIBLE:  '1.Welcome to Orca!', cursor=1",
+    ["BRAILLE LINE:  '1. Welcome to Orca!'",
+     "     VISIBLE:  '1. Welcome to Orca!', cursor=1",
      "SPEECH OUTPUT: '1.'",
      "SPEECH OUTPUT: 'Welcome to Orca!'",
      "SPEECH OUTPUT: 'link'"]))
@@ -160,8 +160,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "12. Line Down",
-    ["BRAILLE LINE:  '2.About'",
-     "     VISIBLE:  '2.About', cursor=1",
+    ["BRAILLE LINE:  '2. About'",
+     "     VISIBLE:  '2. About', cursor=1",
      "SPEECH OUTPUT: '2.'",
      "SPEECH OUTPUT: 'About'",
      "SPEECH OUTPUT: 'link'"]))
@@ -170,8 +170,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "13. Line Down",
-    ["BRAILLE LINE:  '3.Audio Guides'",
-     "     VISIBLE:  '3.Audio Guides', cursor=1",
+    ["BRAILLE LINE:  '3. Audio Guides'",
+     "     VISIBLE:  '3. Audio Guides', cursor=1",
      "SPEECH OUTPUT: '3.'",
      "SPEECH OUTPUT: 'Audio Guides'",
      "SPEECH OUTPUT: 'link'"]))
@@ -180,8 +180,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "14. Line Down",
-    ["BRAILLE LINE:  '4.Download/Installation'",
-     "     VISIBLE:  '4.Download/Installation', cursor=1",
+    ["BRAILLE LINE:  '4. Download/Installation'",
+     "     VISIBLE:  '4. Download/Installation', cursor=1",
      "SPEECH OUTPUT: '4.'",
      "SPEECH OUTPUT: 'Download/Installation'",
      "SPEECH OUTPUT: 'link'"]))
@@ -190,8 +190,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "15. Line Down",
-    ["BRAILLE LINE:  '5.Configuration/Use'",
-     "     VISIBLE:  '5.Configuration/Use', cursor=1",
+    ["BRAILLE LINE:  '5. Configuration/Use'",
+     "     VISIBLE:  '5. Configuration/Use', cursor=1",
      "SPEECH OUTPUT: '5.'",
      "SPEECH OUTPUT: 'Configuration/Use'",
      "SPEECH OUTPUT: 'link'"]))
@@ -200,8 +200,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "16. Line Down",
-    ["BRAILLE LINE:  '6.Accessible Applications'",
-     "     VISIBLE:  '6.Accessible Applications', cursor=1",
+    ["BRAILLE LINE:  '6. Accessible Applications'",
+     "     VISIBLE:  '6. Accessible Applications', cursor=1",
      "SPEECH OUTPUT: '6.'",
      "SPEECH OUTPUT: 'Accessible Applications'",
      "SPEECH OUTPUT: 'link'"]))
@@ -210,8 +210,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "17. Line Down",
-    ["BRAILLE LINE:  '7.How Can I Help?'",
-     "     VISIBLE:  '7.How Can I Help?', cursor=1",
+    ["BRAILLE LINE:  '7. How Can I Help?'",
+     "     VISIBLE:  '7. How Can I Help?', cursor=1",
      "SPEECH OUTPUT: '7.'",
      "SPEECH OUTPUT: 'How Can I Help?'",
      "SPEECH OUTPUT: 'link'"]))
@@ -220,8 +220,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "18. Line Down",
-    ["BRAILLE LINE:  '8.More Information'",
-     "     VISIBLE:  '8.More Information', cursor=1",
+    ["BRAILLE LINE:  '8. More Information'",
+     "     VISIBLE:  '8. More Information', cursor=1",
      "SPEECH OUTPUT: '8.'",
      "SPEECH OUTPUT: 'More Information'",
      "SPEECH OUTPUT: 'link'"]))
@@ -297,9 +297,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "27. Line Down",
-    ["KNOWN ISSUE: Braille has lost the 'with'",
-     "BRAILLE LINE:  'Microsystems, Inc. contributions from many'",
-     "     VISIBLE:  'Microsystems, Inc. contributions', cursor=1",
+    ["BRAILLE LINE:  'Microsystems, Inc. with contributions from many'",
+     "     VISIBLE:  'Microsystems, Inc. with contribu', cursor=1",
      "SPEECH OUTPUT: 'Microsystems, Inc.'",
      "SPEECH OUTPUT: 'link image'",
      "SPEECH OUTPUT: 'with '",
@@ -402,8 +401,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "37. Line Down",
-    ["BRAILLE LINE:  '/linuxat.asp '",
-     "     VISIBLE:  '/linuxat.asp ', cursor=1",
+    ["BRAILLE LINE:  '/linuxat.asp and include the following:'",
+     "     VISIBLE:  '/linuxat.asp and include the fol', cursor=1",
      "SPEECH OUTPUT: '/linuxat.asp'",
      "SPEECH OUTPUT: 'link image'",
      "SPEECH OUTPUT: 'and include the following: '"]))
@@ -562,8 +561,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "54. Line Down",
-    ["BRAILLE LINE:  'GUI '",
-     "     VISIBLE:  'GUI ', cursor=1",
+    ["BRAILLE LINE:  'GUI (accessed by pressing Insert+Space when Orca is running) and for using flat 
review'",
+     "     VISIBLE:  'GUI (accessed by pressing Insert', cursor=1",
      "SPEECH OUTPUT: 'GUI'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: '(accessed by pressing Insert+Space when Orca is running) and for using flat review 
'"]))
@@ -777,8 +776,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "77. Line Down",
-    ["BRAILLE LINE:  '• Frequently Asked Questions: FAQ'",
-     "     VISIBLE:  '• Frequently Asked Questions: FA', cursor=1",
+    ["BRAILLE LINE:  '•Frequently Asked Questions: FAQ'",
+     "     VISIBLE:  '•Frequently Asked Questions: FAQ', cursor=1",
      "SPEECH OUTPUT: '•'",
      "SPEECH OUTPUT: 'Frequently Asked Questions: '",
      "SPEECH OUTPUT: 'FAQ'",
@@ -788,8 +787,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "78. Line Down",
-    ["BRAILLE LINE:  '• Mailing list: orca-list gnome org (Archives)'",
-     "     VISIBLE:  '• Mailing list: orca-list gnome ', cursor=1",
+    ["BRAILLE LINE:  '•Mailing list: orca-list gnome org (Archives)'",
+     "     VISIBLE:  '•Mailing list: orca-list gnome o', cursor=1",
      "SPEECH OUTPUT: '•'",
      "SPEECH OUTPUT: 'Mailing list: '",
      "SPEECH OUTPUT: 'orca-list gnome org'",
@@ -803,8 +802,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "79. Line Down",
-    ["BRAILLE LINE:  '• Bug database: GNOME Bug Tracking System (Bugzilla) (current bug list)'",
-     "     VISIBLE:  '• Bug database: GNOME Bug Tracki', cursor=1",
+    ["BRAILLE LINE:  '•Bug database: GNOME Bug Tracking System (Bugzilla) (current bug list)'",
+     "     VISIBLE:  '•Bug database: GNOME Bug Trackin', cursor=1",
      "SPEECH OUTPUT: '•'",
      "SPEECH OUTPUT: 'Bug database: '",
      "SPEECH OUTPUT: 'GNOME Bug Tracking System (Bugzilla)'",
@@ -818,8 +817,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "80. Line Down",
-    ["BRAILLE LINE:  '• Design documents: Orca Documentation Series'",
-     "     VISIBLE:  '• Design documents: Orca Documen', cursor=1",
+    ["BRAILLE LINE:  '•Design documents: Orca Documentation Series'",
+     "     VISIBLE:  '•Design documents: Orca Document', cursor=1",
      "SPEECH OUTPUT: '•'",
      "SPEECH OUTPUT: 'Design documents: '",
      "SPEECH OUTPUT: 'Orca Documentation Series'",
@@ -981,8 +980,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "98. Line Down",
-    ["BRAILLE LINE:  'GNOME World h3'",
-     "     VISIBLE:  'GNOME World h3', cursor=1",
+    ["BRAILLE LINE:  'GNOME World  h3'",
+     "     VISIBLE:  'GNOME World  h3', cursor=1",
      "SPEECH OUTPUT: 'GNOME World '",
      "SPEECH OUTPUT: 'heading level 3'"]))
 
diff --git a/test/keystrokes/firefox/line_nav_wiki_up.py b/test/keystrokes/firefox/line_nav_wiki_up.py
index c51ec02..432c955 100644
--- a/test/keystrokes/firefox/line_nav_wiki_up.py
+++ b/test/keystrokes/firefox/line_nav_wiki_up.py
@@ -56,8 +56,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "5. Line Up",
-    ["BRAILLE LINE:  'GNOME World h3'",
-     "     VISIBLE:  'GNOME World h3', cursor=1",
+    ["BRAILLE LINE:  'GNOME World  h3'",
+     "     VISIBLE:  'GNOME World  h3', cursor=1",
      "SPEECH OUTPUT: 'GNOME World '",
      "SPEECH OUTPUT: 'heading level 3'"]))
 
@@ -217,8 +217,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "23. Line Up",
-    ["BRAILLE LINE:  '• Design documents: Orca Documentation Series'",
-     "     VISIBLE:  '• Design documents: Orca Documen', cursor=1",
+    ["BRAILLE LINE:  '•Design documents: Orca Documentation Series'",
+     "     VISIBLE:  '•Design documents: Orca Document', cursor=1",
      "SPEECH OUTPUT: '•'",
      "SPEECH OUTPUT: 'Design documents: '",
      "SPEECH OUTPUT: 'Orca Documentation Series'",
@@ -228,8 +228,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "24. Line Up",
-    ["BRAILLE LINE:  '• Bug database: GNOME Bug Tracking System (Bugzilla) (current bug list)'",
-     "     VISIBLE:  '• Bug database: GNOME Bug Tracki', cursor=1",
+    ["BRAILLE LINE:  '•Bug database: GNOME Bug Tracking System (Bugzilla) (current bug list)'",
+     "     VISIBLE:  '•Bug database: GNOME Bug Trackin', cursor=1",
      "SPEECH OUTPUT: '•'",
      "SPEECH OUTPUT: 'Bug database: '",
      "SPEECH OUTPUT: 'GNOME Bug Tracking System (Bugzilla)'",
@@ -243,8 +243,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "25. Line Up",
-    ["BRAILLE LINE:  '• Mailing list: orca-list gnome org (Archives)'",
-     "     VISIBLE:  '• Mailing list: orca-list gnome ', cursor=1",
+    ["BRAILLE LINE:  '•Mailing list: orca-list gnome org (Archives)'",
+     "     VISIBLE:  '•Mailing list: orca-list gnome o', cursor=1",
      "SPEECH OUTPUT: '•'",
      "SPEECH OUTPUT: 'Mailing list: '",
      "SPEECH OUTPUT: 'orca-list gnome org'",
@@ -258,8 +258,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "26. Line Up",
-    ["BRAILLE LINE:  '• Frequently Asked Questions: FAQ'",
-     "     VISIBLE:  '• Frequently Asked Questions: FA', cursor=1",
+    ["BRAILLE LINE:  '•Frequently Asked Questions: FAQ'",
+     "     VISIBLE:  '•Frequently Asked Questions: FAQ', cursor=1",
      "SPEECH OUTPUT: '•'",
      "SPEECH OUTPUT: 'Frequently Asked Questions: '",
      "SPEECH OUTPUT: 'FAQ'",
@@ -474,8 +474,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "49. Line Up",
-    ["BRAILLE LINE:  'GUI '",
-     "     VISIBLE:  'GUI ', cursor=1",
+    ["BRAILLE LINE:  'GUI (accessed by pressing Insert+Space when Orca is running) and for using flat 
review'",
+     "     VISIBLE:  'GUI (accessed by pressing Insert', cursor=1",
      "SPEECH OUTPUT: 'GUI'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: '(accessed by pressing Insert+Space when Orca is running) and for using flat review 
'"]))
@@ -634,8 +634,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "66. Line Up",
-    ["BRAILLE LINE:  '/linuxat.asp '",
-     "     VISIBLE:  '/linuxat.asp ', cursor=1",
+    ["BRAILLE LINE:  '/linuxat.asp and include the following:'",
+     "     VISIBLE:  '/linuxat.asp and include the fol', cursor=1",
      "SPEECH OUTPUT: '/linuxat.asp'",
      "SPEECH OUTPUT: 'link image'",
      "SPEECH OUTPUT: 'and include the following: '"]))
@@ -736,8 +736,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "76. Line Up",
-    ["BRAILLE LINE:  'Microsystems, Inc. contributions from many'",
-     "     VISIBLE:  'Microsystems, Inc. contributions', cursor=1",
+    ["BRAILLE LINE:  'Microsystems, Inc. with contributions from many'",
+     "     VISIBLE:  'Microsystems, Inc. with contribu', cursor=1",
      "SPEECH OUTPUT: 'Microsystems, Inc.'",
      "SPEECH OUTPUT: 'link image'",
      "SPEECH OUTPUT: 'with '",
@@ -815,8 +815,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "85. Line Up",
-    ["BRAILLE LINE:  '8.More Information'",
-     "     VISIBLE:  '8.More Information', cursor=1",
+    ["BRAILLE LINE:  '8. More Information'",
+     "     VISIBLE:  '8. More Information', cursor=1",
      "SPEECH OUTPUT: '8.'",
      "SPEECH OUTPUT: 'More Information'",
      "SPEECH OUTPUT: 'link'"]))
@@ -825,8 +825,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "86. Line Up",
-    ["BRAILLE LINE:  '7.How Can I Help?'",
-     "     VISIBLE:  '7.How Can I Help?', cursor=1",
+    ["BRAILLE LINE:  '7. How Can I Help?'",
+     "     VISIBLE:  '7. How Can I Help?', cursor=1",
      "SPEECH OUTPUT: '7.'",
      "SPEECH OUTPUT: 'How Can I Help?'",
      "SPEECH OUTPUT: 'link'"]))
@@ -835,8 +835,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "87. Line Up",
-    ["BRAILLE LINE:  '6.Accessible Applications'",
-     "     VISIBLE:  '6.Accessible Applications', cursor=1",
+    ["BRAILLE LINE:  '6. Accessible Applications'",
+     "     VISIBLE:  '6. Accessible Applications', cursor=1",
      "SPEECH OUTPUT: '6.'",
      "SPEECH OUTPUT: 'Accessible Applications'",
      "SPEECH OUTPUT: 'link'"]))
@@ -845,8 +845,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "88. Line Up",
-    ["BRAILLE LINE:  '5.Configuration/Use'",
-     "     VISIBLE:  '5.Configuration/Use', cursor=1",
+    ["BRAILLE LINE:  '5. Configuration/Use'",
+     "     VISIBLE:  '5. Configuration/Use', cursor=1",
      "SPEECH OUTPUT: '5.'",
      "SPEECH OUTPUT: 'Configuration/Use'",
      "SPEECH OUTPUT: 'link'"]))
@@ -855,8 +855,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "89. Line Up",
-    ["BRAILLE LINE:  '4.Download/Installation'",
-     "     VISIBLE:  '4.Download/Installation', cursor=1",
+    ["BRAILLE LINE:  '4. Download/Installation'",
+     "     VISIBLE:  '4. Download/Installation', cursor=1",
      "SPEECH OUTPUT: '4.'",
      "SPEECH OUTPUT: 'Download/Installation'",
      "SPEECH OUTPUT: 'link'"]))
@@ -865,8 +865,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "90. Line Up",
-    ["BRAILLE LINE:  '3.Audio Guides'",
-     "     VISIBLE:  '3.Audio Guides', cursor=1",
+    ["BRAILLE LINE:  '3. Audio Guides'",
+     "     VISIBLE:  '3. Audio Guides', cursor=1",
      "SPEECH OUTPUT: '3.'",
      "SPEECH OUTPUT: 'Audio Guides'",
      "SPEECH OUTPUT: 'link'"]))
@@ -875,8 +875,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "91. Line Up",
-    ["BRAILLE LINE:  '2.About'",
-     "     VISIBLE:  '2.About', cursor=1",
+    ["BRAILLE LINE:  '2. About'",
+     "     VISIBLE:  '2. About', cursor=1",
      "SPEECH OUTPUT: '2.'",
      "SPEECH OUTPUT: 'About'",
      "SPEECH OUTPUT: 'link'"]))
@@ -885,8 +885,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "92. Line Up",
-    ["BRAILLE LINE:  '1.Welcome to Orca!'",
-     "     VISIBLE:  '1.Welcome to Orca!', cursor=1",
+    ["BRAILLE LINE:  '1. Welcome to Orca!'",
+     "     VISIBLE:  '1. Welcome to Orca!', cursor=1",
      "SPEECH OUTPUT: '1.'",
      "SPEECH OUTPUT: 'Welcome to Orca!'",
      "SPEECH OUTPUT: 'link'"]))
@@ -945,7 +945,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "98. Line Up",
-    ["BRAILLE LINE:  'Home | Download/Installation | Configuration/Use | Accessible Applications | Mailing 
List ('",
+    ["BRAILLE LINE:  'Home | Download/Installation | Configuration/Use | Accessible Applications | Mailing 
List \('",
      "     VISIBLE:  'Home | Download/Installation | C', cursor=1",
      "SPEECH OUTPUT: 'Home'",
      "SPEECH OUTPUT: 'link'",
@@ -993,8 +993,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "101. Line Up",
-    ["BRAILLE LINE:  'live.gnome.org h1  $l Titles push button Text push button'",
-     "     VISIBLE:  'live.gnome.org h1  $l Titles pus', cursor=1",
+    ["BRAILLE LINE:  'live.gnome.org  h1 $l Titles push button Text push button'",
+     "     VISIBLE:  'live.gnome.org  h1 $l Titles pus', cursor=1",
      "SPEECH OUTPUT: 'live.gnome.org '",
      "SPEECH OUTPUT: 'heading level 1'",
      "SPEECH OUTPUT: 'entry'",
diff --git a/test/keystrokes/firefox/link_where_am_i.py b/test/keystrokes/firefox/link_where_am_i.py
index 330f882..5e18147 100644
--- a/test/keystrokes/firefox/link_where_am_i.py
+++ b/test/keystrokes/firefox/link_where_am_i.py
@@ -13,7 +13,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "1. Where Am I on Product summary link", 
-    ["BRAILLE LINE:  '3.Product summary (designed for maintainers)'",
+    ["BRAILLE LINE:  '3. Product summary (designed for maintainers)'",
      "     VISIBLE:  'Product summary (designed for ma', cursor=1",
      "SPEECH OUTPUT: 'http link Product summary different site'"]))
 
diff --git a/test/keystrokes/firefox/longdesc_6.py b/test/keystrokes/firefox/longdesc_6.py
index a73d790..bb34700 100644
--- a/test/keystrokes/firefox/longdesc_6.py
+++ b/test/keystrokes/firefox/longdesc_6.py
@@ -12,7 +12,6 @@ sequence.append(utils.AssertPresentationAction(
     ["KNOWN ISSUE: 'Empty images are exposed to us as text, without AtspiAction, and the Firefox right-click 
menu lacks View Description",
      "BRAILLE LINE:  'the image'",
      "     VISIBLE:  'the image', cursor=0",
-     "SPEECH OUTPUT: 'text'",
      "SPEECH OUTPUT: 'the image'"]))
 
 #sequence.append(PauseAction(3000))
diff --git a/test/keystrokes/firefox/longdesc_8.py b/test/keystrokes/firefox/longdesc_8.py
index fff69ba..505d4d0 100644
--- a/test/keystrokes/firefox/longdesc_8.py
+++ b/test/keystrokes/firefox/longdesc_8.py
@@ -10,7 +10,7 @@ sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "1. Where Am I on image",
     ["BRAILLE LINE:  'the image image'",
-     "     VISIBLE:  'the image image', cursor=0",
+     "     VISIBLE:  'the image image', cursor=(0|1)",
      "SPEECH OUTPUT: 'the image'",
      "SPEECH OUTPUT: 'image has long description'"]))
 
diff --git a/test/keystrokes/firefox/say_all_bugzilla_search.py 
b/test/keystrokes/firefox/say_all_bugzilla_search.py
index cf7be6c..5a6f69f 100644
--- a/test/keystrokes/firefox/say_all_bugzilla_search.py
+++ b/test/keystrokes/firefox/say_all_bugzilla_search.py
@@ -72,12 +72,10 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'row header'",
      "SPEECH OUTPUT: 'contains the string combo box'",
      "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Whiteboard:'",
      "SPEECH OUTPUT: 'row header'",
      "SPEECH OUTPUT: 'contains all of the words/strings combo box'",
      "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Keywords'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: ': '",
@@ -135,7 +133,6 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'Only include combo box'",
      "SPEECH OUTPUT: 'bugs numbered:'",
      "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: '(comma-separated list)'",
      "SPEECH OUTPUT: 'Bug Changes'",
      "SPEECH OUTPUT: 'Only bugs changed between:'",
diff --git a/test/keystrokes/firefox/say_all_enter_bug.py b/test/keystrokes/firefox/say_all_enter_bug.py
index 725b765..0b57998 100644
--- a/test/keystrokes/firefox/say_all_enter_bug.py
+++ b/test/keystrokes/firefox/say_all_enter_bug.py
@@ -38,8 +38,6 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: 'Enter Bug: orca \u2013 This page lets you enter a new bug into Bugzilla.'",
      "SPEECH OUTPUT: 'heading level 1'",
-     "SPEECH OUTPUT: 'blank'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Before reporting a bug, please read the '",
      "SPEECH OUTPUT: 'bug writing guidelines'",
      "SPEECH OUTPUT: 'link'",
@@ -53,7 +51,6 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'browse'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: ' for the bug.'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Reporter:'",
      "SPEECH OUTPUT: 'joanmarie diggs gmail com'",
      "SPEECH OUTPUT: 'Product:'",
@@ -64,7 +61,6 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: ':'",
      "SPEECH OUTPUT: 'Component: braille List with 5 items'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'GNOME version'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: ':'",
@@ -77,12 +73,10 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: ':'",
      "SPEECH OUTPUT: 'normal combo box'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Summary:'",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'Description:'",
      "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Optional Fields'",
      "SPEECH OUTPUT: 'Cc:'",
      "SPEECH OUTPUT: 'entry'",
@@ -94,10 +88,8 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'Blocks:'",
      "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Commit push button'",
      "SPEECH OUTPUT: 'Remember values as bookmarkable template push button'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: '",
      "We've made a guess at your operating system. Please check it and, if we got it wrong, email bugmaster 
gnome org '",
      "SPEECH OUTPUT: 'Saved Searches: '",
diff --git a/test/keystrokes/firefox/say_all_imagemap.py b/test/keystrokes/firefox/say_all_imagemap.py
index 4c4e69f..d975d99 100644
--- a/test/keystrokes/firefox/say_all_imagemap.py
+++ b/test/keystrokes/firefox/say_all_imagemap.py
@@ -11,8 +11,7 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Add"))
 sequence.append(utils.AssertPresentationAction(
     "1. KP_Add to do a SayAll",
-    ["KNOWN ISSUE: Due to a test-timing, flakiness issue we do not always speak the urls for the last 
imagemap links",
-     "SPEECH OUTPUT: 'This looks like A to Z, but it's really Z to A.'",
+    ["SPEECH OUTPUT: 'This looks like A to Z, but it's really Z to A.'",
      "SPEECH OUTPUT: 'Test:'",
      "SPEECH OUTPUT: 'z image map link rect'",
      "SPEECH OUTPUT: 'y image map link rect'",
@@ -42,16 +41,10 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'a image map link rect'",
      "SPEECH OUTPUT: 'Here is some text.'",
      "SPEECH OUTPUT: 'Safeway had some interesting (and problematic) image maps. I didn't steal the images, 
but if you tab and look at the status bar, you should be able to see the URI for each region. We should also 
be speaking and brailling it correctly now -- at least as best as we can given what they gave us.'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'wk09_frozenmovie image link'",
      "SPEECH OUTPUT: 'image'",
-     "SPEECH OUTPUT: 'blank'",
-     "SPEECH OUTPUT: 'blank'",
-     "SPEECH OUTPUT: 'shop.safeway.com link shop.safeway.com image map link'",
-     "SPEECH OUTPUT: 'Rancher's Reserve link Rancher's Reserve image map link'",
      "SPEECH OUTPUT: 'image'",
-     "SPEECH OUTPUT: 'blank'",
-     "SPEECH OUTPUT: 'blank'"]))
+     "SPEECH OUTPUT: 'image'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/say_all_nested_tables.py 
b/test/keystrokes/firefox/say_all_nested_tables.py
index 6edf9f0..43926d1 100644
--- a/test/keystrokes/firefox/say_all_nested_tables.py
+++ b/test/keystrokes/firefox/say_all_nested_tables.py
@@ -26,19 +26,13 @@ sequence.append(utils.AssertPresentationAction(
      "SPEECH OUTPUT: 'Your Learning Plan'",
      "SPEECH OUTPUT: 'Below is a list of the courses that make up your learning plan.'",
      "SPEECH OUTPUT: 'UNIX 2007'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Take Course'",
      "SPEECH OUTPUT: 'link'",
-     "SPEECH OUTPUT: 'blank'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'You have completed 87 of the 87 modules in this course.'",
      "SPEECH OUTPUT: 'separator'",
      "SPEECH OUTPUT: 'SQL Plus'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'Take Course'",
      "SPEECH OUTPUT: 'link'",
-     "SPEECH OUTPUT: 'blank'",
-     "SPEECH OUTPUT: 'blank'",
      "SPEECH OUTPUT: 'You have completed 59 of the 184 modules in this course.'",
      "SPEECH OUTPUT: 'separator'"]))
 
diff --git a/test/keystrokes/firefox/ui_role_tree.py b/test/keystrokes/firefox/ui_role_tree.py
index 4b4d196..9227ae4 100644
--- a/test/keystrokes/firefox/ui_role_tree.py
+++ b/test/keystrokes/firefox/ui_role_tree.py
@@ -116,9 +116,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
 sequence.append(utils.AssertPresentationAction(
     "13. Tab back to tree table",
-    ["BRAILLE LINE:  'Firefox application Library frame tree table Tags column header Bookmarks Toolbar 
table row TREE LEVEL 1'",
-     "     VISIBLE:  'Bookmarks Toolbar table row TREE', cursor=1",
-     "SPEECH OUTPUT: 'Bookmarks Toolbar table row'"]))
+    ["BRAILLE LINE:  'Firefox application Library frame tree table Tags column header Bookmarks Toolbar   
table row TREE LEVEL 1'",
+     "     VISIBLE:  'Bookmarks Toolbar   table row TR', cursor=1",
+     "SPEECH OUTPUT: 'Bookmarks Toolbar   table row'"]))
 
 sequence.append(KeyComboAction("<Alt>F4"))
 
diff --git a/test/keystrokes/firefox/ui_role_tree_table.py b/test/keystrokes/firefox/ui_role_tree_table.py
index a56f60c..08cd975 100644
--- a/test/keystrokes/firefox/ui_role_tree_table.py
+++ b/test/keystrokes/firefox/ui_role_tree_table.py
@@ -14,26 +14,26 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "1. Down Arrow in tree table",
-    ["BRAILLE LINE:  'Firefox application Library frame tree table Location column header Bookmarks Menu 
table row TREE LEVEL 1'",
-     "     VISIBLE:  'Bookmarks Menu table row TREE LE', cursor=1",
-     "SPEECH OUTPUT: 'Bookmarks Menu table row'"]))
+    ["BRAILLE LINE:  'Firefox application Library frame tree table Location column header Bookmarks Menu   
table row TREE LEVEL 1'",
+     "     VISIBLE:  'Bookmarks Menu   table row TREE ', cursor=1",
+     "SPEECH OUTPUT: 'Bookmarks Menu   table row'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "2. Basic Where Am I",
-    ["BRAILLE LINE:  'Firefox application Library frame tree table Location column header Bookmarks Menu 
table row TREE LEVEL 1'",
-     "     VISIBLE:  'Bookmarks Menu table row TREE LE', cursor=1",
-     "SPEECH OUTPUT: 'Bookmarks Menu'",
+    ["BRAILLE LINE:  'Firefox application Library frame tree table Location column header Bookmarks Menu   
table row TREE LEVEL 1'",
+     "     VISIBLE:  'Bookmarks Menu   table row TREE ', cursor=1",
+     "SPEECH OUTPUT: 'Bookmarks Menu  '",
      "SPEECH OUTPUT: 'table row'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "3. Up Arrow in tree table",
-    ["BRAILLE LINE:  'Firefox application Library frame tree table Tags column header Bookmarks Toolbar 
table row TREE LEVEL 1'",
-     "     VISIBLE:  'Bookmarks Toolbar table row TREE', cursor=1",
-     "SPEECH OUTPUT: 'Bookmarks Toolbar table row'"]))
+    ["BRAILLE LINE:  'Firefox application Library frame tree table Tags column header Bookmarks Toolbar   
table row TREE LEVEL 1'",
+     "     VISIBLE:  'Bookmarks Toolbar   table row TR', cursor=1",
+     "SPEECH OUTPUT: 'Bookmarks Toolbar   table row'"]))
 
 sequence.append(KeyComboAction("<Alt>F4"))
 
diff --git a/test/keystrokes/firefox/word_nav_links.py b/test/keystrokes/firefox/word_nav_links.py
index c5cc7fb..4c36629 100644
--- a/test/keystrokes/firefox/word_nav_links.py
+++ b/test/keystrokes/firefox/word_nav_links.py
@@ -14,16 +14,16 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Right"))
 sequence.append(utils.AssertPresentationAction(
     "1. Next Word",
-    ["BRAILLE LINE:  'Hello W o r ld. Goodbye world.'",
-     "     VISIBLE:  'Hello W o r ld. Goodbye world.', cursor=6",
+    ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
+     "     VISIBLE:  'Hello W o r l d. Go odbye w orld', cursor=6",
      "SPEECH OUTPUT: 'Hello '"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Right"))
 sequence.append(utils.AssertPresentationAction(
     "2. Next Word",
-    ["BRAILLE LINE:  'Hello W o r ld. Goodbye world.'",
-     "     VISIBLE:  'Hello W o r ld. Goodbye world.', cursor=16",
+    ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
+     "     VISIBLE:  'd. Go odbye w orld.', cursor=3",
      "SPEECH OUTPUT: 'W'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: 'o'",
@@ -38,8 +38,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Right"))
 sequence.append(utils.AssertPresentationAction(
     "3. Next Word",
-    ["BRAILLE LINE:  'Hello W o r ld. Goodbye world.'",
-     "     VISIBLE:  'Hello W o r ld. Goodbye world.', cursor=19",
+    ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
+     "     VISIBLE:  'odbye w orld.', cursor=1",
      "SPEECH OUTPUT: 'Go'",
      "SPEECH OUTPUT: 'odbye '",
      "SPEECH OUTPUT: 'link'"]))
@@ -49,7 +49,7 @@ sequence.append(KeyComboAction("<Control>Right"))
 sequence.append(utils.AssertPresentationAction(
     "4. Next Word",
     ["BRAILLE LINE:  ''",
-     "     VISIBLE:  '', cursor=1",
+     "     VISIBLE:  '', cursor=0",
      "SPEECH OUTPUT: 'w'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: 'orld.'"]))
@@ -94,8 +94,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
 sequence.append(utils.AssertPresentationAction(
     "9. Previous Word",
-    ["BRAILLE LINE:  'Hello W o r ld. Goodbye world.'",
-     "     VISIBLE:  'Hello W o r ld. Goodbye world.', cursor=19",
+    ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
+     "     VISIBLE:  'odbye w orld.', cursor=1",
      "SPEECH OUTPUT: 'w'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: 'orld.'"]))
@@ -104,8 +104,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
 sequence.append(utils.AssertPresentationAction(
     "10. Previous Word",
-    ["BRAILLE LINE:  'Hello W o r ld. Goodbye world.'",
-     "     VISIBLE:  'Hello W o r ld. Goodbye world.', cursor=17",
+    ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
+     "     VISIBLE:  'd. Go odbye w orld.', cursor=4",
      "SPEECH OUTPUT: 'Go'",
      "SPEECH OUTPUT: 'odbye '",
      "SPEECH OUTPUT: 'link'"]))
@@ -114,8 +114,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
 sequence.append(utils.AssertPresentationAction(
     "11. Previous Word",
-    ["BRAILLE LINE:  'Hello W o r ld. Goodbye world.'",
-     "     VISIBLE:  'Hello W o r ld. Goodbye world.', cursor=7",
+    ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
+     "     VISIBLE:  'W o r l d. Go odbye w orld.', cursor=1",
      "SPEECH OUTPUT: 'W'",
      "SPEECH OUTPUT: 'link'",
      "SPEECH OUTPUT: 'o'",
@@ -130,8 +130,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
 sequence.append(utils.AssertPresentationAction(
     "12. Previous Word",
-    ["BRAILLE LINE:  'Hello W o r ld. Goodbye world.'",
-     "     VISIBLE:  'Hello W o r ld. Goodbye world.', cursor=1",
+    ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
+     "     VISIBLE:  'Hello W o r l d. Go odbye w orld', cursor=1",
      "SPEECH OUTPUT: 'Hello '"]))
 
 sequence.append(utils.AssertionSummaryAction())



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