[orca] New and updated regression tests



commit b18858e3bdb2a80b86742ac3ecc4ee238f5366cd
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Tue Aug 11 15:18:05 2015 -0400

    New and updated regression tests

 test/harness/orca-customizations.py.in             |    6 -
 test/html/math-fraction.html                       |    1 +
 test/html/math-mathvariant.html                    |    3 +
 test/html/math-menclose.html                       |    1 +
 test/html/math-mfenced.html                        |    1 +
 test/html/math-mroot.html                          |    1 +
 test/html/math-mrow.html                           |    2 +
 test/html/math-scripts.html                        |    1 +
 test/html/math-table.html                          |    1 +
 test/html/math-torture-test.html                   |    1 +
 test/keystrokes/firefox/aria_alert.py              |    4 +-
 test/keystrokes/firefox/aria_button_dojo.py        |   25 +-
 test/keystrokes/firefox/aria_combobox_dojo.py      |   17 +-
 test/keystrokes/firefox/aria_dialog_dojo.py        |    6 +-
 .../firefox/aria_editor_navigation_dojo.py         |    3 +-
 test/keystrokes/firefox/aria_list.py               |    9 +-
 test/keystrokes/firefox/aria_menu.py               |   31 +-
 test/keystrokes/firefox/aria_radiobutton.py        |   23 +-
 test/keystrokes/firefox/aria_tabcontainer_dojo.py  |    8 +-
 test/keystrokes/firefox/aria_tabpanel.py           |   17 +-
 test/keystrokes/firefox/aria_tabpanel2.py          |   15 +-
 test/keystrokes/firefox/aria_tabpanel_text_dojo.py |    6 +-
 test/keystrokes/firefox/aria_tree.py               |   42 ++-
 test/keystrokes/firefox/aria_tree_dojo.py          |   35 +-
 test/keystrokes/firefox/aria_treegrid.py           |   30 +-
 test/keystrokes/firefox/find_wiki.py               |    2 +-
 .../firefox/focus_tracking_descriptions.py         |    9 +-
 test/keystrokes/firefox/focus_tracking_imagemap.py |   11 +-
 .../firefox/focus_tracking_link_child_of_body.py   |    4 +-
 test/keystrokes/firefox/focus_tracking_links.py    |    8 +-
 test/keystrokes/firefox/html_page_summary.py       |    3 +-
 test/keystrokes/firefox/html_role_combo_box.py     |   28 +-
 test/keystrokes/firefox/html_role_links.py         |   16 +-
 .../firefox/html_role_list_item_where_am_i.py      |   23 +-
 .../firefox/html_struct_nav_activate_link.py       |    2 +-
 .../firefox/html_struct_nav_bug_554616.py          |   32 +-
 .../firefox/html_struct_nav_bug_556470.py          |    6 +-
 .../firefox/html_struct_nav_bug_567984.py          |   12 +-
 .../firefox/html_struct_nav_descriptions.py        |    9 +-
 .../html_struct_nav_heading_in_div_with_text.py    |   12 +-
 .../html_struct_nav_heading_with_clickable.py      |    3 +-
 .../html_struct_nav_link_with_child_text.py        |    2 +-
 test/keystrokes/firefox/html_struct_nav_links.py   |   20 +-
 .../firefox/html_struct_nav_list_item.py           |   38 +-
 test/keystrokes/firefox/html_struct_nav_lists.py   |   76 ++--
 .../firefox/label_inference_bug_546815.py          |   15 +-
 .../firefox/label_inference_bugzilla_search.py     |   50 +-
 test/keystrokes/firefox/label_inference_entries.py |   11 +-
 test/keystrokes/firefox/label_inference_mailman.py |    6 +-
 test/keystrokes/firefox/line_nav_bug_546815.py     |   27 +-
 test/keystrokes/firefox/line_nav_bug_549128.py     |   34 +-
 test/keystrokes/firefox/line_nav_bug_554616.py     |   44 +-
 test/keystrokes/firefox/line_nav_bug_555055.py     |    6 +-
 test/keystrokes/firefox/line_nav_bug_570757.py     |    6 +-
 test/keystrokes/firefox/line_nav_bug_577239.py     |   25 +-
 .../firefox/line_nav_bugzilla_search_down.py       |  109 +++--
 .../firefox/line_nav_bugzilla_search_up.py         |   99 +++--
 test/keystrokes/firefox/line_nav_descriptions.py   |    6 +-
 .../firefox/line_nav_display_table_cell.py         |    2 +-
 test/keystrokes/firefox/line_nav_empty_anchor.py   |   20 +-
 test/keystrokes/firefox/line_nav_enter_bug.py      |  180 ++++----
 test/keystrokes/firefox/line_nav_entries.py        |   68 ++--
 test/keystrokes/firefox/line_nav_focused_link.py   |    4 +-
 .../firefox/line_nav_follow_same_page_link.py      |    4 +-
 test/keystrokes/firefox/line_nav_hidden_links.py   |    8 +-
 test/keystrokes/firefox/line_nav_image_in_link.py  |    4 +-
 test/keystrokes/firefox/line_nav_imagemap.py       |  108 +++---
 .../keystrokes/firefox/line_nav_images_in_links.py |   42 +-
 .../line_nav_link_position_relative_on_focus.py    |    4 +-
 test/keystrokes/firefox/line_nav_lists.py          |   26 +-
 .../keystrokes/firefox/line_nav_multi_line_text.py |   80 ++--
 test/keystrokes/firefox/line_nav_nested_tables.py  |   32 +-
 test/keystrokes/firefox/line_nav_pre_links.py      |    8 +-
 test/keystrokes/firefox/line_nav_simple_form.py    |   16 +-
 test/keystrokes/firefox/line_nav_slash_test.py     |   16 +-
 test/keystrokes/firefox/line_nav_sun_java.py       |   64 ++--
 test/keystrokes/firefox/line_nav_table_captions.py |   36 +-
 .../firefox/line_nav_table_cell_links.py           |   22 +-
 test/keystrokes/firefox/line_nav_wiki_down.py      |  180 ++++----
 test/keystrokes/firefox/line_nav_wiki_up.py        |  180 ++++----
 test/keystrokes/firefox/link_where_am_i.py         |    6 +-
 test/keystrokes/firefox/longdesc_1.py              |    3 +-
 test/keystrokes/firefox/longdesc_10.py             |    3 +-
 test/keystrokes/firefox/longdesc_11.py             |    3 +-
 test/keystrokes/firefox/longdesc_12.py             |    3 +-
 test/keystrokes/firefox/longdesc_13.py             |    3 +-
 test/keystrokes/firefox/longdesc_14.py             |    3 +-
 test/keystrokes/firefox/longdesc_15.py             |    3 +-
 test/keystrokes/firefox/longdesc_2.py              |    3 +-
 test/keystrokes/firefox/longdesc_3.py              |    3 +-
 test/keystrokes/firefox/longdesc_7.py              |    3 +-
 test/keystrokes/firefox/longdesc_8.py              |    3 +-
 test/keystrokes/firefox/longdesc_9.py              |    3 +-
 .../firefox/math_line_nav_fraction.params          |    1 +
 test/keystrokes/firefox/math_line_nav_fraction.py  |   54 +++
 .../firefox/math_line_nav_mathvariant.params       |    1 +
 .../firefox/math_line_nav_mathvariant.py           |   70 +++
 .../firefox/math_line_nav_menclose.params          |    1 +
 test/keystrokes/firefox/math_line_nav_menclose.py  |  177 +++++++
 .../firefox/math_line_nav_mfenced.params           |    1 +
 test/keystrokes/firefox/math_line_nav_mfenced.py   |   67 +++
 test/keystrokes/firefox/math_line_nav_mroot.params |    1 +
 test/keystrokes/firefox/math_line_nav_mroot.py     |  136 ++++++
 test/keystrokes/firefox/math_line_nav_mrow.params  |    1 +
 test/keystrokes/firefox/math_line_nav_mrow.py      |   59 +++
 .../firefox/math_line_nav_scripts.params           |    1 +
 test/keystrokes/firefox/math_line_nav_scripts.py   |  131 ++++++
 test/keystrokes/firefox/math_line_nav_table.params |    1 +
 test/keystrokes/firefox/math_line_nav_table.py     |   42 ++
 .../firefox/math_line_nav_torture_test.params      |    1 +
 .../firefox/math_line_nav_torture_test.py          |  482 ++++++++++++++++++++
 .../firefox/object_nav_descriptions_down.py        |    6 +-
 .../firefox/object_nav_descriptions_up.py          |    6 +-
 .../firefox/object_nav_link_in_quotes.py           |    4 +-
 .../keystrokes/firefox/object_nav_links_in_text.py |   38 +-
 .../keystrokes/firefox/object_nav_links_on_line.py |   30 +-
 .../firefox/object_nav_simple_form_down.py         |    9 +-
 .../firefox/object_nav_simple_form_up.py           |    9 +-
 test/keystrokes/firefox/spelling_errors.py         |   12 +-
 test/keystrokes/firefox/ui_doc_tabs.py             |   26 +-
 test/keystrokes/firefox/ui_role_accel_label.py     |    9 +-
 test/keystrokes/firefox/ui_role_check_box.py       |    4 +-
 test/keystrokes/firefox/ui_role_check_menu_item.py |    6 +-
 test/keystrokes/firefox/ui_role_menu_bar.py        |   11 +-
 test/keystrokes/firefox/ui_role_page_tab.py        |   10 +-
 test/keystrokes/firefox/ui_role_radio_button.py    |   10 +-
 test/keystrokes/firefox/ui_role_tree.py            |   36 ++-
 test/keystrokes/firefox/word_nav_links.py          |   30 +-
 test/keystrokes/firefox/word_nav_list_items.py     |   14 +-
 129 files changed, 2549 insertions(+), 1137 deletions(-)
---
diff --git a/test/harness/orca-customizations.py.in b/test/harness/orca-customizations.py.in
index f251981..208c9d0 100644
--- a/test/harness/orca-customizations.py.in
+++ b/test/harness/orca-customizations.py.in
@@ -7,7 +7,6 @@ import orca.debug
 orca.debug.debugLevel = orca.debug.LEVEL_ALL
 
 import orca.settings
-orca.settings.useExperimentalSpeechProsody = False
 orca.settings.enableRemoteLogging = True
 orca.settings.enableSpeech = True
 orca.settings.speechFactoryModules = []
@@ -15,8 +14,3 @@ orca.settings.speechServerFactory = None
 orca.settings.asyncMode = False
 orca.settings.enableProgressBarUpdates = True
 orca.settings.progressBarUpdateInterval = 0
-orca.settings.commFailureAttemptLimit = 0
-
-import orca.scripts.toolkits.Gecko
-orca.scripts.toolkits.Gecko.sayAllOnLoad = False
-orca.scripts.toolkits.Gecko.script_settings.grabFocusOnAncestor = False
diff --git a/test/html/math-fraction.html b/test/html/math-fraction.html
index 5bcf0d6..92bc38a 100644
--- a/test/html/math-fraction.html
+++ b/test/html/math-fraction.html
@@ -5,5 +5,6 @@
    <math display="block"><mfrac><mi>a</mi><mi>b</mi></mfrac></math>
    <math display="block" alttext="This is the alttext for 
a/b"><semantics><mfrac><mi>a</mi><mi>b</mi></mfrac><annotation encoding="application/x-tex">\frac a 
b</annotation></semantics></math>
    <math display="block"><mfrac linethickness="0px"><mi>a</mi><mi>b</mi></mfrac></math>
+   <div>End of test</div>
 </body>
 </html>
diff --git a/test/html/math-mathvariant.html b/test/html/math-mathvariant.html
index 46158ac..f474586 100644
--- a/test/html/math-mathvariant.html
+++ b/test/html/math-mathvariant.html
@@ -3,7 +3,10 @@
 <body>
    <div>MathML mathvariant test cases</div>
    <math display="block" 
mathvariant="script"><mi>A</mi><mi>B</mi><mi>C</mi><mi>D</mi><mi>E</mi><mi>F</mi><mi>G</mi><mi>H</mi><mi>I</mi><mi>J</mi><mi>K</mi><mi>L</mi><mi>M</mi><mi>N</mi><mi>O</mi><mi>P</mi><mi>Q</mi><mi>R</mi><mi>S</mi><mi>T</mi><mi>U</mi><mi>V</mi><mi>W</mi><mi>X</mi><mi>Y</mi><mi>Z</mi><mi>a</mi><mi>b</mi><mi>c</mi><mi>d</mi><mi>e</mi><mi>f</mi><mi>g</mi><mi>h</mi><mi>i</mi><mi>j</mi><mi>k</mi><mi>l</mi><mi>m</mi><mi>n</mi><mi>o</mi><mi>p</mi><mi>q</mi><mi>r</mi><mi>s</mi><mi>t</mi><mi>u</mi><mi>v</mi><mi>w</mi><mi>x</mi><mi>y</mi><mi>z</mi></math>
+   <div>End of first case</div>
    <math display="block" 
mathvariant="fraktur"><mi>A</mi><mi>B</mi><mi>C</mi><mi>D</mi><mi>E</mi><mi>F</mi><mi>G</mi><mi>H</mi><mi>I</mi><mi>J</mi><mi>K</mi><mi>L</mi><mi>M</mi><mi>N</mi><mi>O</mi><mi>P</mi><mi>Q</mi><mi>R</mi><mi>S</mi><mi>T</mi><mi>U</mi><mi>V</mi><mi>W</mi><mi>X</mi><mi>Y</mi><mi>Z</mi><mi>a</mi><mi>b</mi><mi>c</mi><mi>d</mi><mi>e</mi><mi>f</mi><mi>g</mi><mi>h</mi><mi>i</mi><mi>j</mi><mi>k</mi><mi>l</mi><mi>m</mi><mi>n</mi><mi>o</mi><mi>p</mi><mi>q</mi><mi>r</mi><mi>s</mi><mi>t</mi><mi>u</mi><mi>v</mi><mi>w</mi><mi>x</mi><mi>y</mi><mi>z</mi></math>
+   <div>End of second case</div>
    <math display="block" 
mathvariant="double-struck"><mi>A</mi><mi>B</mi><mi>C</mi><mi>D</mi><mi>E</mi><mi>F</mi><mi>G</mi><mi>H</mi><mi>I</mi><mi>J</mi><mi>K</mi><mi>L</mi><mi>M</mi><mi>N</mi><mi>O</mi><mi>P</mi><mi>Q</mi><mi>R</mi><mi>S</mi><mi>T</mi><mi>U</mi><mi>V</mi><mi>W</mi><mi>X</mi><mi>Y</mi><mi>Z</mi><mi>a</mi><mi>b</mi><mi>c</mi><mi>d</mi><mi>e</mi><mi>f</mi><mi>g</mi><mi>h</mi><mi>i</mi><mi>j</mi><mi>k</mi><mi>l</mi><mi>m</mi><mi>n</mi><mi>o</mi><mi>p</mi><mi>q</mi><mi>r</mi><mi>s</mi><mi>t</mi><mi>u</mi><mi>v</mi><mi>w</mi><mi>x</mi><mi>y</mi><mi>z</mi></math>
+   <div>End of test</div>
 </body>
 </html>
diff --git a/test/html/math-menclose.html b/test/html/math-menclose.html
index abe2e9d..5d03603 100644
--- a/test/html/math-menclose.html
+++ b/test/html/math-menclose.html
@@ -21,5 +21,6 @@
    <math display="block"><menclose notation="verticalstrike"><mi>x</mi><mo>+</mo><mi>y</mi></menclose></math>
    <math display="block"><menclose 
notation="horizontalstrike"><mi>x</mi><mo>+</mo><mi>y</mi></menclose></math>
    <math display="block"><menclose notation="madruwb"><mi>x</mi><mo>+</mo><mi>y</mi></menclose></math>
+   <div>End of test</div>
 </body>
 </html>
diff --git a/test/html/math-mfenced.html b/test/html/math-mfenced.html
index b9865f6..28df63e 100644
--- a/test/html/math-mfenced.html
+++ b/test/html/math-mfenced.html
@@ -5,5 +5,6 @@
    <math display="block"><mfenced><mi>a</mi><mi>b</mi><mi>c</mi><mi>d</mi> <mi>e</mi></mfenced></math>
    <math display="block"><mfenced open="{" separators=";" close="}"><mi>a</mi><mi>b</mi><mi>c</mi><mi>d</mi> 
<mi>e</mi></mfenced></math>
    <math display="block"><mfenced open="{" separators=";;," 
close="}"><mi>a</mi><mi>b</mi><mi>c</mi><mi>d</mi><mi>e</mi></mfenced></math>
+   <div>End of test</div>
 </body>
 </html>
diff --git a/test/html/math-mroot.html b/test/html/math-mroot.html
index 53f3c86..2aaa26e 100644
--- a/test/html/math-mroot.html
+++ b/test/html/math-mroot.html
@@ -13,5 +13,6 @@
    <math display="block"><mroot><mfrac><mi>a</mi><mi>b</mi></mfrac><mi>3</mi></mroot></math>
    <math 
display="block"><mroot><mfrac><mi>a</mi><mi>b</mi></mfrac><mrow><mi>c</mi><mo>+</mo><mi>d</mi></mrow></mroot></math>
    <math display="block"><mroot><mi>a</mi><mi>b</mi></mroot></math>
+   <div>End of test</div>
 </body>
 </html>
diff --git a/test/html/math-mrow.html b/test/html/math-mrow.html
index 93850b5..e20eb97 100644
--- a/test/html/math-mrow.html
+++ b/test/html/math-mrow.html
@@ -3,6 +3,8 @@
 <body>
    <div>MathML mrow test cases</div>
    <math display="block"><mrow><mi>x</mi><mo>+</mo><mn>2</mn></mrow></math>
+   <div>End of first case</div>
    <math 
display="block"><mrow><mo>(</mo><mi>x</mi><mo>≪̸</mo><mi>y</mi><mo>)</mo></mrow><mo>∧</mo><mrow><mo>(</mo><mi>X</mi><mo>⊂⃒</mo><mi>Y</mi><mo>)</mo></mrow></math>
+   <div>End of test</div>
 </body>
 </html>
diff --git a/test/html/math-scripts.html b/test/html/math-scripts.html
index d8bdc94..41249ec 100644
--- a/test/html/math-scripts.html
+++ b/test/html/math-scripts.html
@@ -12,5 +12,6 @@
    <math display="block"> <mmultiscripts> <mi>a</mi> <mi>b</mi> <mi>c</mi> <mi>d</mi> <mi>e</mi> 
</mmultiscripts> </math>
    <math display="block"> <mmultiscripts> <mi>a</mi> <mprescripts></mprescripts> <mi>b</mi> <mi>c</mi> 
<mi>d</mi> <mi>e</mi> </mmultiscripts> </math>
    <math display="block"> <mmultiscripts> <mi>a</mi> <mi>b</mi> <none></none> <mi>c</mi> <mi>d</mi> 
<mprescripts></mprescripts> <mi>e</mi> <mi>f</mi> <none></none> <mi>g</mi> </mmultiscripts> </math>
+   <div>End of test</div>
 </body>
 </html>
diff --git a/test/html/math-table.html b/test/html/math-table.html
index 6b99a8b..afdd96b 100644
--- a/test/html/math-table.html
+++ b/test/html/math-table.html
@@ -3,5 +3,6 @@
 <body>
    <div>MathML table test cases (beyond all the torture-test test cases)</div>
    <math 
display="block"><mtable><mtr><mtd><mi>a</mi></mtd><mtd><mi>b</mi></mtd><mtd><mi>c</mi></mtd></mtr><mtr><mtd><mi>d</mi></mtd><mtd><mi>e</mi></mtd><mtd><mi>f</mi></mtd></mtr></mtable></math>
+   <div>End of test</div>
 </body>
 </html>
diff --git a/test/html/math-torture-test.html b/test/html/math-torture-test.html
index ea309b4..3b58003 100644
--- a/test/html/math-torture-test.html
+++ b/test/html/math-torture-test.html
@@ -30,5 +30,6 @@
 <math display="block"> <mrow> <msubsup> <mi>x</mi> <mn>92</mn> <mn>31415</mn> </msubsup> <mo>+</mo> 
<mi>π</mi> </mrow> </math>
 <math display="block"> <msubsup> <mi>x</mi> <msubsup> <mi>y</mi> <mi>b</mi> <mi>a</mi> </msubsup> <msubsup> 
<mi>z</mi> <mi>c</mi> <mi>d</mi> </msubsup> </msubsup> </math>
 <math display="block"> <msubsup> <mi>y</mi> <mn>3</mn> <mo>‴</mo> </msubsup> </math>
+<div>End of test</div>
 </body>
 </html>
diff --git a/test/keystrokes/firefox/aria_alert.py b/test/keystrokes/firefox/aria_alert.py
index 6f31e4b..2c06d8b 100644
--- a/test/keystrokes/firefox/aria_alert.py
+++ b/test/keystrokes/firefox/aria_alert.py
@@ -27,7 +27,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'close'",
      "     VISIBLE:  'close', cursor=1",
      "SPEECH OUTPUT: 'This popup is created as a div in the HTML content, rather than being created in the 
DOM at the time of use. The display style is changed from \"none\" to \"block\" to hide and show it. close'",
-     "SPEECH OUTPUT: 'close link'"]))
+     "SPEECH OUTPUT: 'close link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -140,7 +140,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Down Arrow",
     ["BRAILLE LINE:  'close'",
      "     VISIBLE:  'close', cursor=1",
-     "SPEECH OUTPUT: 'close link'"]))
+     "SPEECH OUTPUT: 'close link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
diff --git a/test/keystrokes/firefox/aria_button_dojo.py b/test/keystrokes/firefox/aria_button_dojo.py
index b283455..86745d7 100644
--- a/test/keystrokes/firefox/aria_button_dojo.py
+++ b/test/keystrokes/firefox/aria_button_dojo.py
@@ -89,7 +89,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Create blank', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'Create blank'",
+     "SPEECH OUTPUT: 'Create blank.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -100,7 +100,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Create blank', cursor=1",
      "BRAILLE LINE:  'Create from template'",
      "     VISIBLE:  'Create from template', cursor=1",
-     "SPEECH OUTPUT: 'Create from template'"]))
+     "SPEECH OUTPUT: 'Create from template.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Escape"))
@@ -134,7 +134,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'Edit! menu'",
-     "SPEECH OUTPUT: 'Cut'",
+     "SPEECH OUTPUT: 'Cut.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -145,7 +145,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Cut', cursor=1",
      "BRAILLE LINE:  'Copy'",
      "     VISIBLE:  'Copy', cursor=1",
-     "SPEECH OUTPUT: 'Copy'"]))
+     "SPEECH OUTPUT: 'Copy.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -153,7 +153,7 @@ sequence.append(utils.AssertPresentationAction(
     "16. Go to Paste",
     ["BRAILLE LINE:  'Paste'",
      "     VISIBLE:  'Paste', cursor=1",
-     "SPEECH OUTPUT: 'Paste'"]))
+     "SPEECH OUTPUT: 'Paste.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -161,7 +161,7 @@ sequence.append(utils.AssertPresentationAction(
     "17. Go to Submenu",
     ["BRAILLE LINE:  'Submenu menu'",
      "     VISIBLE:  'Submenu menu', cursor=1",
-     "SPEECH OUTPUT: 'Submenu menu'"]))
+     "SPEECH OUTPUT: 'Submenu menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("space"))
@@ -170,7 +170,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Submenu Item One'",
      "     VISIBLE:  'Submenu Item One', cursor=1",
      "SPEECH OUTPUT: 'Submenu menu'",
-     "SPEECH OUTPUT: 'Submenu Item One'"]))
+     "SPEECH OUTPUT: 'Submenu Item One.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -178,7 +178,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. Down to Submenu Item Two",
     ["BRAILLE LINE:  'Submenu Item Two'",
      "     VISIBLE:  'Submenu Item Two', cursor=1",
-     "SPEECH OUTPUT: 'Submenu Item Two'"]))
+     "SPEECH OUTPUT: 'Submenu Item Two.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -186,7 +186,7 @@ sequence.append(utils.AssertPresentationAction(
     "20. Down to Deeper Submenu",
     ["BRAILLE LINE:  'Deeper Submenu menu'",
      "     VISIBLE:  'Deeper Submenu menu', cursor=1",
-     "SPEECH OUTPUT: 'Deeper Submenu menu'"]))
+     "SPEECH OUTPUT: 'Deeper Submenu menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Escape"))
@@ -194,7 +194,7 @@ sequence.append(utils.AssertPresentationAction(
     "21. Close the Submenu",
     ["BRAILLE LINE:  'Submenu menu'",
      "     VISIBLE:  'Submenu menu', cursor=1",
-     "SPEECH OUTPUT: 'Submenu menu'"]))
+     "SPEECH OUTPUT: 'Submenu menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Escape"))
@@ -227,7 +227,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'white table cell', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'white'",
+     "SPEECH OUTPUT: 'colorPalette panel'",
+     "SPEECH OUTPUT: 'white.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -238,7 +239,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'white table cell', cursor=1",
      "BRAILLE LINE:  'lime table cell'",
      "     VISIBLE:  'lime table cell', cursor=1",
-     "SPEECH OUTPUT: 'lime'"]))
+     "SPEECH OUTPUT: 'lime.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Escape"))
diff --git a/test/keystrokes/firefox/aria_combobox_dojo.py b/test/keystrokes/firefox/aria_combobox_dojo.py
index 0eb9c72..958b6d3 100644
--- a/test/keystrokes/firefox/aria_combobox_dojo.py
+++ b/test/keystrokes/firefox/aria_combobox_dojo.py
@@ -43,7 +43,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'C alifornia (CA)'",
      "     VISIBLE:  'C alifornia (CA)', cursor=1",
      "SPEECH OUTPUT: 'California menu'",
-     "SPEECH OUTPUT: 'C alifornia (CA)'"]))
+     "SPEECH OUTPUT: 'C alifornia (CA).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -51,7 +51,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Down Arrow",
     ["BRAILLE LINE:  'C olorado (CO)'",
      "     VISIBLE:  'C olorado (CO)', cursor=1",
-     "SPEECH OUTPUT: 'C olorado (CO)'"]))
+     "SPEECH OUTPUT: 'C olorado (CO).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -59,7 +59,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Down Arrow",
     ["BRAILLE LINE:  'C onnecticut (CT)'",
      "     VISIBLE:  'C onnecticut (CT)', cursor=1",
-     "SPEECH OUTPUT: 'C onnecticut (CT)'"]))
+     "SPEECH OUTPUT: 'C onnecticut (CT).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -67,7 +67,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Down Arrow",
     ["BRAILLE LINE:  'C alifornia (CA)'",
      "     VISIBLE:  'C alifornia (CA)', cursor=1",
-     "SPEECH OUTPUT: 'C alifornia (CA)'"]))
+     "SPEECH OUTPUT: 'C alifornia (CA).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -75,7 +75,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Up Arrow",
     ["BRAILLE LINE:  'C onnecticut (CT)'",
      "     VISIBLE:  'C onnecticut (CT)', cursor=1",
-     "SPEECH OUTPUT: 'C onnecticut (CT)'"]))
+     "SPEECH OUTPUT: 'C onnecticut (CT).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -83,7 +83,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Up Arrow",
     ["BRAILLE LINE:  'C olorado (CO)'",
      "     VISIBLE:  'C olorado (CO)', cursor=1",
-     "SPEECH OUTPUT: 'C olorado (CO)'"]))
+     "SPEECH OUTPUT: 'C olorado (CO).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -91,7 +91,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Up Arrow",
     ["BRAILLE LINE:  'C alifornia (CA)'",
      "     VISIBLE:  'C alifornia (CA)', cursor=1",
-     "SPEECH OUTPUT: 'C alifornia (CA)'"]))
+     "SPEECH OUTPUT: 'C alifornia (CA).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -100,7 +100,8 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'C alifornia (CA)'",
      "     VISIBLE:  'C alifornia (CA)', cursor=1",
      "SPEECH OUTPUT: 'California menu'",
-     "SPEECH OUTPUT: 'panel C alifornia (CA) 1 of 3'"]))
+     "SPEECH OUTPUT: 'C alifornia (CA).'",
+     "SPEECH OUTPUT: '1 of 3'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Escape"))
diff --git a/test/keystrokes/firefox/aria_dialog_dojo.py b/test/keystrokes/firefox/aria_dialog_dojo.py
index e42dee8..16cffa8 100644
--- a/test/keystrokes/firefox/aria_dialog_dojo.py
+++ b/test/keystrokes/firefox/aria_dialog_dojo.py
@@ -23,7 +23,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'TabContainer Dialog This is the first tab.  Lorem ipsum dolor sit amet, consectetuer 
adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum 
lacus. Etiam consequat scelerisque quam. Nulla facilisi. Maecenas luctus venenatis nulla. In sit amet dui non 
mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae risus.'",
-     "SPEECH OUTPUT: 'First tab page tab'",
+     "SPEECH OUTPUT: 'First tab page tab.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -34,7 +34,9 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'First tab page tab', cursor=1",
      "BRAILLE LINE:  'First tab page tab'",
      "     VISIBLE:  'First tab page tab', cursor=1",
-     "SPEECH OUTPUT: 'page tab list First tab page tab 1 of 2'"]))
+     "SPEECH OUTPUT: 'page tab list.",
+     "SPEECH OUTPUT: 'First tab page tab.",
+     "SPEECH OUTPUT: '1 of 2'"]))
 
 sequence.append(KeyComboAction("Escape"))
 
diff --git a/test/keystrokes/firefox/aria_editor_navigation_dojo.py 
b/test/keystrokes/firefox/aria_editor_navigation_dojo.py
index 111144b..46d8ff8 100644
--- a/test/keystrokes/firefox/aria_editor_navigation_dojo.py
+++ b/test/keystrokes/firefox/aria_editor_navigation_dojo.py
@@ -13,7 +13,8 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "1. Up Arrow in Focus Mode - which should do nothing",
-    [""]))
+    ["BRAILLE LINE:  ' $l'",
+     "     VISIBLE:  ' $l', cursor=1"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
diff --git a/test/keystrokes/firefox/aria_list.py b/test/keystrokes/firefox/aria_list.py
index 29a9761..a5f03b1 100644
--- a/test/keystrokes/firefox/aria_list.py
+++ b/test/keystrokes/firefox/aria_list.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Down Arrow",
     ["BRAILLE LINE:  'cat'",
      "     VISIBLE:  'cat', cursor=1",
-     "SPEECH OUTPUT: 'cat'"]))
+     "SPEECH OUTPUT: 'cat.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -23,7 +23,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Down Arrow",
     ["BRAILLE LINE:  'sparrow'",
      "     VISIBLE:  'sparrow', cursor=1",
-     "SPEECH OUTPUT: 'sparrow'"]))
+     "SPEECH OUTPUT: 'sparrow.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -31,7 +31,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Basic whereAmI",
     ["BRAILLE LINE:  'sparrow'",
      "     VISIBLE:  'sparrow', cursor=1",
-     "SPEECH OUTPUT: 'list item sparrow'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: 'sparrow.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -39,7 +40,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Up Arrow",
     ["BRAILLE LINE:  'cat'",
      "     VISIBLE:  'cat', cursor=1",
-     "SPEECH OUTPUT: 'cat'"]))
+     "SPEECH OUTPUT: 'cat.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/aria_menu.py b/test/keystrokes/firefox/aria_menu.py
index fdf3409..c8043e5 100644
--- a/test/keystrokes/firefox/aria_menu.py
+++ b/test/keystrokes/firefox/aria_menu.py
@@ -19,7 +19,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'table', cursor=1",
      "BRAILLE LINE:  'Edit menu'",
      "     VISIBLE:  'Edit menu', cursor=1",
-     "SPEECH OUTPUT: 'Edit menu'"]))
+     "SPEECH OUTPUT: 'Edit menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -28,7 +28,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. basic whereAmI",
     ["BRAILLE LINE:  'Edit menu'",
      "     VISIBLE:  'Edit menu', cursor=1",
-     "SPEECH OUTPUT: 'Edit menu 1 of 1'"]))
+     "SPEECH OUTPUT: 'Edit menu.'",
+     "SPEECH OUTPUT: '1 of 1'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -36,7 +37,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Move to View",
     ["BRAILLE LINE:  'View menu'",
      "     VISIBLE:  'View menu', cursor=1",
-     "SPEECH OUTPUT: 'View menu'"]))
+     "SPEECH OUTPUT: 'View menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -44,7 +45,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Move to Themes",
     ["BRAILLE LINE:  'Themes          > menu'",
      "     VISIBLE:  'Themes          > menu', cursor=1",
-     "SPEECH OUTPUT: 'Themes          > menu'"]))
+     "SPEECH OUTPUT: 'Themes          > menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -52,7 +53,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Move to basic grey",
     ["BRAILLE LINE:  'Basic Grey'",
      "     VISIBLE:  'Basic Grey', cursor=1",
-     "SPEECH OUTPUT: 'Basic Grey'"]))
+     "SPEECH OUTPUT: 'Basic Grey.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -60,7 +61,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Move to the blues",
     ["BRAILLE LINE:  'The Blues'",
      "     VISIBLE:  'The Blues', cursor=1",
-     "SPEECH OUTPUT: 'The Blues'"]))
+     "SPEECH OUTPUT: 'The Blues.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -68,7 +69,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Move to garden",
     ["BRAILLE LINE:  'Garden'",
      "     VISIBLE:  'Garden', cursor=1",
-     "SPEECH OUTPUT: 'Garden'"]))
+     "SPEECH OUTPUT: 'Garden.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -76,7 +77,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Move to in the pink",
     ["BRAILLE LINE:  'In the Pink grayed'",
      "     VISIBLE:  'In the Pink grayed', cursor=1",
-     "SPEECH OUTPUT: 'In the Pink grayed'"]))
+     "SPEECH OUTPUT: 'In the Pink grayed.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -84,7 +85,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Move to rose",
     ["BRAILLE LINE:  'Rose'",
      "     VISIBLE:  'Rose', cursor=1",
-     "SPEECH OUTPUT: 'Rose'"]))
+     "SPEECH OUTPUT: 'Rose.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
@@ -92,7 +93,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Move back to Themes",
     ["BRAILLE LINE:  'Themes          > menu'",
      "     VISIBLE:  'Themes          > menu', cursor=1",
-     "SPEECH OUTPUT: 'Themes          > menu'"]))
+     "SPEECH OUTPUT: 'Themes          > menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -100,7 +101,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Move to hide",
     ["BRAILLE LINE:  'Hide'",
      "     VISIBLE:  'Hide', cursor=1",
-     "SPEECH OUTPUT: 'Hide'"]))
+     "SPEECH OUTPUT: 'Hide.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -108,7 +109,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Move to show",
     ["BRAILLE LINE:  'Show'",
      "     VISIBLE:  'Show', cursor=1",
-     "SPEECH OUTPUT: 'Show'"]))
+     "SPEECH OUTPUT: 'Show.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -116,7 +117,7 @@ sequence.append(utils.AssertPresentationAction(
     "13. Move to more",
     ["BRAILLE LINE:  'More                > menu'",
      "     VISIBLE:  'More                > menu', cursor=1",
-     "SPEECH OUTPUT: 'More                > menu'"]))
+     "SPEECH OUTPUT: 'More                > menu.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -124,7 +125,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. Move to one",
     ["BRAILLE LINE:  'one'",
      "     VISIBLE:  'one', cursor=1",
-     "SPEECH OUTPUT: 'one'"]))
+     "SPEECH OUTPUT: 'one.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -132,7 +133,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Move to two",
     ["BRAILLE LINE:  'two'",
      "     VISIBLE:  'two', cursor=1",
-     "SPEECH OUTPUT: 'two'"]))
+     "SPEECH OUTPUT: 'two.'"]))
 
 sequence.append(KeyComboAction("Escape"))
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/firefox/aria_radiobutton.py b/test/keystrokes/firefox/aria_radiobutton.py
index 7d56a26..e2e6548 100644
--- a/test/keystrokes/firefox/aria_radiobutton.py
+++ b/test/keystrokes/firefox/aria_radiobutton.py
@@ -12,7 +12,8 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '&=y Radio Maria radio button'",
      "     VISIBLE:  '&=y Radio Maria radio button', cursor=1",
      "SPEECH OUTPUT: 'Lunch Options panel'",
-     "SPEECH OUTPUT: 'Radio Maria selected radio button'"]))
+     "SPEECH OUTPUT: 'Radio Maria.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -20,7 +21,9 @@ sequence.append(utils.AssertPresentationAction(
     "2. Basic whereamI",
     ["BRAILLE LINE:  '&=y Radio Maria radio button'",
      "     VISIBLE:  '&=y Radio Maria radio button', cursor=1",
-     "SPEECH OUTPUT: 'Lunch Options Radio Maria radio button selected'"]))
+     "SPEECH OUTPUT: 'Lunch Options.'",
+     "SPEECH OUTPUT: 'Radio Maria radio button.'",
+     "SPEECH OUTPUT: 'selected.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -28,7 +31,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Move to next radio button",
     ["BRAILLE LINE:  '&=y Rainbow Gardens radio button'",
      "     VISIBLE:  '&=y Rainbow Gardens radio button', cursor=1",
-     "SPEECH OUTPUT: 'Rainbow Gardens selected radio button'"]))
+     "SPEECH OUTPUT: 'Rainbow Gardens.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -36,7 +40,9 @@ sequence.append(utils.AssertPresentationAction(
     "4. Basic whereamI",
     ["BRAILLE LINE:  '&=y Rainbow Gardens radio button'",
      "     VISIBLE:  '&=y Rainbow Gardens radio button', cursor=1",
-     "SPEECH OUTPUT: 'Lunch Options Rainbow Gardens radio button selected'"]))
+     "SPEECH OUTPUT: 'Lunch Options.'",
+     "SPEECH OUTPUT: 'Rainbow Gardens radio button.'",
+     "SPEECH OUTPUT: 'selected.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -53,7 +59,8 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '&=y Water radio button'",
      "     VISIBLE:  '&=y Water radio button', cursor=1",
      "SPEECH OUTPUT: 'Drink Options panel'",
-     "SPEECH OUTPUT: 'Water selected radio button'"]))
+     "SPEECH OUTPUT: 'Water.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -61,7 +68,8 @@ sequence.append(utils.AssertPresentationAction(
     "7. Move to next radio button",
     ["BRAILLE LINE:  '&=y Tea radio button'",
      "     VISIBLE:  '&=y Tea radio button', cursor=1",
-     "SPEECH OUTPUT: 'Tea selected radio button'"]))
+     "SPEECH OUTPUT: 'Tea.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -69,7 +77,8 @@ sequence.append(utils.AssertPresentationAction(
     "8. Move back to previous radio button",
     ["BRAILLE LINE:  '&=y Water radio button'",
      "     VISIBLE:  '&=y Water radio button', cursor=1",
-     "SPEECH OUTPUT: 'Water selected radio button'"]))
+     "SPEECH OUTPUT: 'Water.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/aria_tabcontainer_dojo.py 
b/test/keystrokes/firefox/aria_tabcontainer_dojo.py
index e2ce2c1..fb2801e 100644
--- a/test/keystrokes/firefox/aria_tabcontainer_dojo.py
+++ b/test/keystrokes/firefox/aria_tabcontainer_dojo.py
@@ -18,7 +18,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Tab 2 page tab', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'Tab 2 page tab'",
+     "SPEECH OUTPUT: 'Tab 2 page tab.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -29,7 +29,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Tab 2 page tab', cursor=1",
      "BRAILLE LINE:  'Tab 3 page tab'",
      "     VISIBLE:  'Tab 3 page tab', cursor=1",
-     "SPEECH OUTPUT: 'Tab 3 page tab'"]))
+     "SPEECH OUTPUT: 'Tab 3 page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -37,7 +37,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Right arrow to next tab",
     ["BRAILLE LINE:  'Inlined Sub TabContainer page tab'",
      "     VISIBLE:  'Inlined Sub TabContainer page ta', cursor=1",
-     "SPEECH OUTPUT: 'Inlined Sub TabContainer page tab'"]))
+     "SPEECH OUTPUT: 'Inlined Sub TabContainer page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -45,7 +45,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Tab to contents",
     ["BRAILLE LINE:  'SubTab 2 page tab'",
      "     VISIBLE:  'SubTab 2 page tab', cursor=1",
-     "SPEECH OUTPUT: 'SubTab 2 page tab'"]))
+     "SPEECH OUTPUT: 'SubTab 2 page tab.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/aria_tabpanel.py b/test/keystrokes/firefox/aria_tabpanel.py
index 26bc015..f1136e3 100644
--- a/test/keystrokes/firefox/aria_tabpanel.py
+++ b/test/keystrokes/firefox/aria_tabpanel.py
@@ -19,7 +19,9 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Tab Zero page tab', cursor=1",
      "BRAILLE LINE:  'Tab Zero page tab'",
      "     VISIBLE:  'Tab Zero page tab', cursor=1",
-     "SPEECH OUTPUT: 'page tab list Tab Zero page tab 1 of 5'"]))
+     "SPEECH OUTPUT: 'page tab list.'",
+     "SPEECH OUTPUT: 'Tab Zero page tab.'",
+     "SPEECH OUTPUT: '1 of 5'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -27,7 +29,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Right arrow to next tab",
     ["BRAILLE LINE:  'Tab One page tab'",
      "     VISIBLE:  'Tab One page tab', cursor=1",
-     "SPEECH OUTPUT: 'Tab One page tab'"]))
+     "SPEECH OUTPUT: 'Tab One page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -35,7 +37,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Right arrow to next tab",
     ["BRAILLE LINE:  'Tab Two page tab'",
      "     VISIBLE:  'Tab Two page tab', cursor=1",
-     "SPEECH OUTPUT: 'Tab Two page tab'"]))
+     "SPEECH OUTPUT: 'Tab Two page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -45,7 +47,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '&=y Internal Portal Bookmark rad', cursor=1",
      "BRAILLE LINE:  'Browse mode'",
      "     VISIBLE:  'Browse mode', cursor=0",
-     "SPEECH OUTPUT: 'Internal Portal Bookmark selected radio button'",
+     "SPEECH OUTPUT: 'Internal Portal Bookmark.'",
+     "SPEECH OUTPUT: 'selected radio button'",
      "SPEECH OUTPUT: 'Browse mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -58,7 +61,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Tab Two page tab', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'Tab Two page tab'",
+     "SPEECH OUTPUT: 'Tab Two page tab.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -69,7 +72,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Tab Two page tab', cursor=1",
      "BRAILLE LINE:  'Tab Three page tab'",
      "     VISIBLE:  'Tab Three page tab', cursor=1",
-     "SPEECH OUTPUT: 'Tab Three page tab'"]))
+     "SPEECH OUTPUT: 'Tab Three page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -77,7 +80,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Right arrow to next tab",
     ["BRAILLE LINE:  'Tab Four page tab'",
      "     VISIBLE:  'Tab Four page tab', cursor=1",
-     "SPEECH OUTPUT: 'Tab Four page tab'"]))
+     "SPEECH OUTPUT: 'Tab Four page tab.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/aria_tabpanel2.py b/test/keystrokes/firefox/aria_tabpanel2.py
index 6e27635..4105b25 100644
--- a/test/keystrokes/firefox/aria_tabpanel2.py
+++ b/test/keystrokes/firefox/aria_tabpanel2.py
@@ -15,7 +15,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. Give focus to a widget in the first Tab",
     ["BRAILLE LINE:  '&=y Thick and cheesy radio button'",
      "     VISIBLE:  '&=y Thick and cheesy radio butto', cursor=1",
-     "SPEECH OUTPUT: 'Thick and cheesy selected radio button'"]))
+     "SPEECH OUTPUT: 'Thick and cheesy.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Page_Down"))
@@ -25,7 +26,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Veggies page tab', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'Veggies page tab'",
+     "SPEECH OUTPUT: 'Veggies page tab.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -36,7 +37,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Veggies page tab', cursor=1",
      "BRAILLE LINE:  'Carnivore page tab'",
      "     VISIBLE:  'Carnivore page tab', cursor=1",
-     "SPEECH OUTPUT: 'Carnivore page tab'"]))
+     "SPEECH OUTPUT: 'Carnivore page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -44,7 +45,9 @@ sequence.append(utils.AssertPresentationAction(
     "4. basic whereAmI",
     ["BRAILLE LINE:  'Carnivore page tab'",
      "     VISIBLE:  'Carnivore page tab', cursor=1",
-     "SPEECH OUTPUT: 'page tab list Carnivore page tab 3 of 4'"]))
+     "SPEECH OUTPUT: 'page tab list.'",
+     "SPEECH OUTPUT: 'Carnivore page tab.'",
+     "SPEECH OUTPUT: '3 of 4'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -52,7 +55,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Right arrow to fourth tab",
     ["BRAILLE LINE:  'Delivery page tab'",
      "     VISIBLE:  'Delivery page tab', cursor=1",
-     "SPEECH OUTPUT: 'Delivery page tab'"]))
+     "SPEECH OUTPUT: 'Delivery page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
@@ -60,7 +63,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Left arrow back to third tab",
     ["BRAILLE LINE:  'Carnivore page tab'",
      "     VISIBLE:  'Carnivore page tab', cursor=1",
-     "SPEECH OUTPUT: 'Carnivore page tab'"]))
+     "SPEECH OUTPUT: 'Carnivore page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
diff --git a/test/keystrokes/firefox/aria_tabpanel_text_dojo.py 
b/test/keystrokes/firefox/aria_tabpanel_text_dojo.py
index b73eb09..c98bf36 100644
--- a/test/keystrokes/firefox/aria_tabpanel_text_dojo.py
+++ b/test/keystrokes/firefox/aria_tabpanel_text_dojo.py
@@ -24,7 +24,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'TabContainer Dialog This is the first tab.  Lorem ipsum dolor sit amet, consectetuer 
adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum 
lacus. Etiam consequat scelerisque quam. Nulla facilisi. Maecenas luctus venenatis nulla. In sit amet dui non 
mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae risus.'",
-     "SPEECH OUTPUT: 'First tab page tab'",
+     "SPEECH OUTPUT: 'First tab page tab.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -35,7 +35,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'First tab page tab', cursor=1",
      "BRAILLE LINE:  'Second tab page tab'",
      "     VISIBLE:  'Second tab page tab', cursor=1",
-     "SPEECH OUTPUT: 'Second tab page tab'"]))
+     "SPEECH OUTPUT: 'Second tab page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -47,7 +47,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Browse mode', cursor=0",
      "BRAILLE LINE:  'ipsum dolor sit amet'",
      "     VISIBLE:  'ipsum dolor sit amet', cursor=1",
-     "SPEECH OUTPUT: 'ipsum dolor sit amet link'",
+     "SPEECH OUTPUT: 'ipsum dolor sit amet link.'",
      "SPEECH OUTPUT: 'Browse mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/aria_tree.py b/test/keystrokes/firefox/aria_tree.py
index 526830a..d904da8 100644
--- a/test/keystrokes/firefox/aria_tree.py
+++ b/test/keystrokes/firefox/aria_tree.py
@@ -17,7 +17,9 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Fruits expanded list item', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'Fruits expanded tree level 1'",
+     "SPEECH OUTPUT: 'Fruits.'",
+     "SPEECH OUTPUT: 'expanded.'",
+     "SPEECH OUTPUT: 'tree level 1'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -28,7 +30,10 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Fruits expanded list item', cursor=1",
      "BRAILLE LINE:  'Fruits expanded list item'",
      "     VISIBLE:  'Fruits expanded list item', cursor=1",
-     "SPEECH OUTPUT: 'list item Fruits 1 of 2 expanded tree level 1'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: 'Fruits.'",
+     "SPEECH OUTPUT: '1 of 2.'",
+     "SPEECH OUTPUT: 'expanded tree level 1.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -36,7 +41,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Down arrow to oranges",
     ["BRAILLE LINE:  'Oranges list item'",
      "     VISIBLE:  'Oranges list item', cursor=1",
-     "SPEECH OUTPUT: 'Oranges tree level 2'"]))
+     "SPEECH OUTPUT: 'Oranges.'",
+     "SPEECH OUTPUT: 'tree level 2'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -44,7 +50,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Down arrow to pineapples",
     ["BRAILLE LINE:  'Pineapples list item'",
      "     VISIBLE:  'Pineapples list item', cursor=1",
-     "SPEECH OUTPUT: 'Pineapples'"]))
+     "SPEECH OUTPUT: 'Pineapples.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -52,7 +58,8 @@ sequence.append(utils.AssertPresentationAction(
     "5. Down arrow to apples",
     ["BRAILLE LINE:  'Apples collapsed list item'",
      "     VISIBLE:  'Apples collapsed list item', cursor=1",
-     "SPEECH OUTPUT: 'Apples collapsed'"]))
+     "SPEECH OUTPUT: 'Apples.'",
+     "SPEECH OUTPUT: 'collapsed.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -68,7 +75,8 @@ sequence.append(utils.AssertPresentationAction(
     "7. Down arrow to macintosh",
     ["BRAILLE LINE:  'Macintosh list item'",
      "     VISIBLE:  'Macintosh list item', cursor=1",
-     "SPEECH OUTPUT: 'Macintosh tree level 3'"]))
+     "SPEECH OUTPUT: 'Macintosh.'",
+     "SPEECH OUTPUT: 'tree level 3'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -76,7 +84,8 @@ sequence.append(utils.AssertPresentationAction(
     "8. Down arrow to granny smith",
     ["BRAILLE LINE:  'Granny Smith collapsed list item'",
      "     VISIBLE:  'Granny Smith collapsed list item', cursor=1",
-     "SPEECH OUTPUT: 'Granny Smith collapsed'"]))
+     "SPEECH OUTPUT: 'Granny Smith.'",
+     "SPEECH OUTPUT: 'collapsed.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -92,7 +101,8 @@ sequence.append(utils.AssertPresentationAction(
     "10. Down arrow to washington state",
     ["BRAILLE LINE:  'Washington State list item'",
      "     VISIBLE:  'Washington State list item', cursor=1",
-     "SPEECH OUTPUT: 'Washington State tree level 4'"]))
+     "SPEECH OUTPUT: 'Washington State.'",
+     "SPEECH OUTPUT: 'tree level 4'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -100,7 +110,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Down arrow to michigan",
     ["BRAILLE LINE:  'Michigan list item'",
      "     VISIBLE:  'Michigan list item', cursor=1",
-     "SPEECH OUTPUT: 'Michigan'"]))
+     "SPEECH OUTPUT: 'Michigan.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -108,7 +118,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Down arrow to new york",
     ["BRAILLE LINE:  'New York list item'",
      "     VISIBLE:  'New York list item', cursor=1",
-     "SPEECH OUTPUT: 'New York'"]))
+     "SPEECH OUTPUT: 'New York.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -116,7 +126,8 @@ sequence.append(utils.AssertPresentationAction(
     "13. Down arrow to fuji",
     ["BRAILLE LINE:  'Fuji list item'",
      "     VISIBLE:  'Fuji list item', cursor=1",
-     "SPEECH OUTPUT: 'Fuji tree level 3'"]))
+     "SPEECH OUTPUT: 'Fuji.'",
+     "SPEECH OUTPUT: 'tree level 3'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -124,7 +135,8 @@ sequence.append(utils.AssertPresentationAction(
     "14. Down arrow to bananas",
     ["BRAILLE LINE:  'Bananas list item'",
      "     VISIBLE:  'Bananas list item', cursor=1",
-     "SPEECH OUTPUT: 'Bananas tree level 2'"]))
+     "SPEECH OUTPUT: 'Bananas.'",
+     "SPEECH OUTPUT: 'tree level 2'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -132,7 +144,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Down arrow to pears",
     ["BRAILLE LINE:  'Pears list item'",
      "     VISIBLE:  'Pears list item', cursor=1",
-     "SPEECH OUTPUT: 'Pears'"]))
+     "SPEECH OUTPUT: 'Pears.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -140,7 +152,9 @@ sequence.append(utils.AssertPresentationAction(
     "16. Down arrow to vegetables",
     ["BRAILLE LINE:  'Vegetables expanded list item'",
      "     VISIBLE:  'Vegetables expanded list item', cursor=1",
-     "SPEECH OUTPUT: 'Vegetables expanded tree level 1'"]))
+     "SPEECH OUTPUT: 'Vegetables.'",
+     "SPEECH OUTPUT: 'expanded.'",
+     "SPEECH OUTPUT: 'tree level 1'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
diff --git a/test/keystrokes/firefox/aria_tree_dojo.py b/test/keystrokes/firefox/aria_tree_dojo.py
index 86626db..0560c6a 100644
--- a/test/keystrokes/firefox/aria_tree_dojo.py
+++ b/test/keystrokes/firefox/aria_tree_dojo.py
@@ -18,7 +18,9 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'before:  $l', cursor=9",
      "BRAILLE LINE:  'Continents expanded list item'",
      "     VISIBLE:  'Continents expanded list item', cursor=1",
-     "SPEECH OUTPUT: 'Continents expanded tree level 1'"]))
+     "SPEECH OUTPUT: 'Continents.'",
+     "SPEECH OUTPUT: 'expanded.'",
+     "SPEECH OUTPUT: 'tree level 1'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -26,7 +28,9 @@ sequence.append(utils.AssertPresentationAction(
     "2. Down arrow to Africa",
     ["BRAILLE LINE:  'Africa collapsed list item'",
      "     VISIBLE:  'Africa collapsed list item', cursor=1",
-     "SPEECH OUTPUT: 'Africa collapsed tree level 2'"]))
+     "SPEECH OUTPUT: 'Africa.'",
+     "SPEECH OUTPUT: 'collapsed.'",
+     "SPEECH OUTPUT: 'tree level 2'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -34,7 +38,10 @@ sequence.append(utils.AssertPresentationAction(
     "3. Basic whereAmI",
     ["BRAILLE LINE:  'Africa collapsed list item'",
      "     VISIBLE:  'Africa collapsed list item', cursor=1",
-     "SPEECH OUTPUT: 'list item Africa 1 of 6 collapsed tree level 2'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: 'Africa.'",
+     "SPEECH OUTPUT: '1 of 6.'",
+     "SPEECH OUTPUT: 'collapsed tree level 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -50,7 +57,8 @@ sequence.append(utils.AssertPresentationAction(
     "5. Down arrow to Egypt",
     ["BRAILLE LINE:  'Egypt list item'",
      "     VISIBLE:  'Egypt list item', cursor=1",
-     "SPEECH OUTPUT: 'Egypt tree level 3'"]))
+     "SPEECH OUTPUT: 'Egypt.'",
+     "SPEECH OUTPUT: 'tree level 3'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -58,7 +66,8 @@ sequence.append(utils.AssertPresentationAction(
     "6. Down arrow to Kenya",
     ["BRAILLE LINE:  'Kenya collapsed list item'",
      "     VISIBLE:  'Kenya collapsed list item', cursor=1",
-     "SPEECH OUTPUT: 'Kenya collapsed'"]))
+     "SPEECH OUTPUT: 'Kenya.'",
+     "SPEECH OUTPUT: 'collapsed.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -82,7 +91,8 @@ sequence.append(utils.AssertPresentationAction(
     "9. Down arrow to Sudan",
     ["BRAILLE LINE:  'Sudan collapsed list item'",
      "     VISIBLE:  'Sudan collapsed list item', cursor=1",
-     "SPEECH OUTPUT: 'Sudan collapsed'"]))
+     "SPEECH OUTPUT: 'Sudan.'",
+     "SPEECH OUTPUT: 'collapsed.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -90,7 +100,9 @@ sequence.append(utils.AssertPresentationAction(
     "10. Down arrow to Asia",
     ["BRAILLE LINE:  'Asia collapsed list item'",
      "     VISIBLE:  'Asia collapsed list item', cursor=1",
-     "SPEECH OUTPUT: 'Asia collapsed tree level 2'"]))
+     "SPEECH OUTPUT: 'Asia.'",
+     "SPEECH OUTPUT: 'collapsed.'",
+     "SPEECH OUTPUT: 'tree level 2'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -106,7 +118,8 @@ sequence.append(utils.AssertPresentationAction(
     "12. Down arrow to China",
     ["BRAILLE LINE:  'China list item'",
      "     VISIBLE:  'China list item', cursor=1",
-     "SPEECH OUTPUT: 'China tree level 3'"]))
+     "SPEECH OUTPUT: 'China.'",
+     "SPEECH OUTPUT: 'tree level 3'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -114,7 +127,7 @@ sequence.append(utils.AssertPresentationAction(
     "13. Down arrow to India",
     ["BRAILLE LINE:  'India list item'",
      "     VISIBLE:  'India list item', cursor=1",
-     "SPEECH OUTPUT: 'India'"]))
+     "SPEECH OUTPUT: 'India.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -122,7 +135,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. Down arrow to Russia",
     ["BRAILLE LINE:  'Russia list item'",
      "     VISIBLE:  'Russia list item', cursor=1",
-     "SPEECH OUTPUT: 'Russia'"]))
+     "SPEECH OUTPUT: 'Russia.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -130,7 +143,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Down arrow to Mongolia",
     ["BRAILLE LINE:  'Mongolia list item'",
      "     VISIBLE:  'Mongolia list item', cursor=1",
-     "SPEECH OUTPUT: 'Mongolia'"]))
+     "SPEECH OUTPUT: 'Mongolia.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/aria_treegrid.py b/test/keystrokes/firefox/aria_treegrid.py
index 6cd5534..dca642f 100644
--- a/test/keystrokes/firefox/aria_treegrid.py
+++ b/test/keystrokes/firefox/aria_treegrid.py
@@ -16,7 +16,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'collapsed'",
-     "SPEECH OUTPUT: '+A Question of Love'",
+     "SPEECH OUTPUT: '+A Question of Love.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -28,7 +28,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  '+ Piece of Peace table cell'",
      "     VISIBLE:  '+ Piece of Peace table cell', cursor=1",
      "SPEECH OUTPUT: 'collapsed'",
-     "SPEECH OUTPUT: '+ Piece of Peace'"]))
+     "SPEECH OUTPUT: '+ Piece of Peace.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -37,7 +37,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '+ International Law table cell'",
      "     VISIBLE:  '+ International Law table cell', cursor=1",
      "SPEECH OUTPUT: 'collapsed'",
-     "SPEECH OUTPUT: '+ International Law'"]))
+     "SPEECH OUTPUT: '+ International Law.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -46,7 +46,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '+ Piece of Peace table cell'",
      "     VISIBLE:  '+ Piece of Peace table cell', cursor=1",
      "SPEECH OUTPUT: 'collapsed'",
-     "SPEECH OUTPUT: '+ Piece of Peace'"]))
+     "SPEECH OUTPUT: '+ Piece of Peace.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -55,7 +55,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '+A Question of Love table cell'",
      "     VISIBLE:  '+A Question of Love table cell', cursor=1",
      "SPEECH OUTPUT: 'collapsed'",
-     "SPEECH OUTPUT: '+A Question of Love'"]))
+     "SPEECH OUTPUT: '+A Question of Love.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -63,7 +63,9 @@ sequence.append(utils.AssertPresentationAction(
     "6. basic whereAmI",
     ["BRAILLE LINE:  '+A Question of Love table cell'",
      "     VISIBLE:  '+A Question of Love table cell', cursor=1",
-     "SPEECH OUTPUT: 'table row ISBN +A Question of Love'"]))
+     "SPEECH OUTPUT: 'table row.'",
+     "SPEECH OUTPUT: 'ISBN.'",
+     "SPEECH OUTPUT: '+A Question of Love.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(TypeAction(" "))
@@ -79,7 +81,9 @@ sequence.append(utils.AssertPresentationAction(
     "8. basic whereAmI",
     ["BRAILLE LINE:  '-A Question of Love table cell'",
      "     VISIBLE:  '-A Question of Love table cell', cursor=1",
-     "SPEECH OUTPUT: 'table row ISBN -A Question of Love'"]))
+     "SPEECH OUTPUT: 'table row.'",
+     "SPEECH OUTPUT: 'ISBN.'",
+     "SPEECH OUTPUT: '-A Question of Love.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -87,7 +91,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Down Arrow into child",
     ["BRAILLE LINE:  '978-3-453-40540-0 table cell'",
      "     VISIBLE:  '978-3-453-40540-0 table cell', cursor=1",
-     "SPEECH OUTPUT: '978-3-453-40540-0'"]))
+     "SPEECH OUTPUT: '978-3-453-40540-0.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -95,7 +99,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Right Arrow in child",
     ["BRAILLE LINE:  'Nora Roberts table cell'",
      "     VISIBLE:  'Nora Roberts table cell', cursor=1",
-     "SPEECH OUTPUT: 'Nora Roberts'"]))
+     "SPEECH OUTPUT: 'Nora Roberts.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -103,7 +107,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Right Arrow in child",
     ["BRAILLE LINE:  '$ 9.99 table cell'",
      "     VISIBLE:  '$ 9.99 table cell', cursor=1",
-     "SPEECH OUTPUT: '$ 9.99'"]))
+     "SPEECH OUTPUT: '$ 9.99.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
@@ -111,7 +115,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Left Arrow in child",
     ["BRAILLE LINE:  'Nora Roberts table cell'",
      "     VISIBLE:  'Nora Roberts table cell', cursor=1",
-     "SPEECH OUTPUT: 'Nora Roberts'"]))
+     "SPEECH OUTPUT: 'Nora Roberts.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
@@ -119,7 +123,7 @@ sequence.append(utils.AssertPresentationAction(
     "13. Left Arrow in child",
     ["BRAILLE LINE:  '978-3-453-40540-0 table cell'",
      "     VISIBLE:  '978-3-453-40540-0 table cell', cursor=1",
-     "SPEECH OUTPUT: '978-3-453-40540-0'"]))
+     "SPEECH OUTPUT: '978-3-453-40540-0.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -128,7 +132,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '-A Question of Love table cell'",
      "     VISIBLE:  '-A Question of Love table cell', cursor=1",
      "SPEECH OUTPUT: 'expanded'",
-     "SPEECH OUTPUT: '-A Question of Love'"]))
+     "SPEECH OUTPUT: '-A Question of Love.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/find_wiki.py b/test/keystrokes/firefox/find_wiki.py
index 74a7168..0bedf69 100644
--- a/test/keystrokes/firefox/find_wiki.py
+++ b/test/keystrokes/firefox/find_wiki.py
@@ -27,7 +27,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Welcome to Orca!'",
      "     VISIBLE:  'Welcome to Orca!', cursor=1",
      "SPEECH OUTPUT: '1.'",
-     "SPEECH OUTPUT: 'Welcome to Orca! link'"]))
+     "SPEECH OUTPUT: 'Welcome to Orca! link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
diff --git a/test/keystrokes/firefox/focus_tracking_descriptions.py 
b/test/keystrokes/firefox/focus_tracking_descriptions.py
index 6bc479d..30745dd 100644
--- a/test/keystrokes/firefox/focus_tracking_descriptions.py
+++ b/test/keystrokes/firefox/focus_tracking_descriptions.py
@@ -17,7 +17,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Foo', cursor=1",
      "BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
-     "SPEECH OUTPUT: 'Foo link Title of the Foo link.'"]))
+     "SPEECH OUTPUT: 'Foo link.'",
+     "SPEECH OUTPUT: 'Title of the Foo link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -27,7 +28,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Bar', cursor=1",
      "BRAILLE LINE:  'Bar'",
      "     VISIBLE:  'Bar', cursor=1",
-     "SPEECH OUTPUT: 'Bar link ARIA description text.'"]))
+     "SPEECH OUTPUT: 'Bar link.'",
+     "SPEECH OUTPUT: 'ARIA description text.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -37,7 +39,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Baz', cursor=1",
      "BRAILLE LINE:  'Baz'",
      "     VISIBLE:  'Baz', cursor=1",
-     "SPEECH OUTPUT: 'Baz link Title of the Baz link.'"]))
+     "SPEECH OUTPUT: 'Baz link.'",
+     "SPEECH OUTPUT: 'Title of the Baz link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
diff --git a/test/keystrokes/firefox/focus_tracking_imagemap.py 
b/test/keystrokes/firefox/focus_tracking_imagemap.py
index 819dfe7..0d0f3a2 100644
--- a/test/keystrokes/firefox/focus_tracking_imagemap.py
+++ b/test/keystrokes/firefox/focus_tracking_imagemap.py
@@ -17,7 +17,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. Tab",
     ["BRAILLE LINE:  'z image map link'",
      "     VISIBLE:  'z image map link', cursor=1",
-     "SPEECH OUTPUT: 'z image map link rect'"]))
+     "SPEECH OUTPUT: 'z image map link.'",
+     "SPEECH OUTPUT: 'rect'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -25,7 +26,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Tab",
     ["BRAILLE LINE:  'y image map link'",
      "     VISIBLE:  'y image map link', cursor=1",
-     "SPEECH OUTPUT: 'y image map link rect'"]))
+     "SPEECH OUTPUT: 'y image map link.'",
+     "SPEECH OUTPUT: 'rect'"]))
 
 sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyComboAction("Tab"))
@@ -57,7 +59,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Tab",
     ["BRAILLE LINE:  'a image map link'",
      "     VISIBLE:  'a image map link', cursor=1",
-     "SPEECH OUTPUT: 'a image map link rect'"]))
+     "SPEECH OUTPUT: 'a image map link.'",
+     "SPEECH OUTPUT: 'rect'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -65,7 +68,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Tab",
     ["BRAILLE LINE:  'wk09_frozenmovie'",
      "     VISIBLE:  'wk09_frozenmovie', cursor=1",
-     "SPEECH OUTPUT: 'wk09_frozenmovie link'"]))
+     "SPEECH OUTPUT: 'wk09_frozenmovie link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/focus_tracking_link_child_of_body.py 
b/test/keystrokes/firefox/focus_tracking_link_child_of_body.py
index d3f7582..aa03fde 100644
--- a/test/keystrokes/firefox/focus_tracking_link_child_of_body.py
+++ b/test/keystrokes/firefox/focus_tracking_link_child_of_body.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
     ["BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
-     "SPEECH OUTPUT: 'Foo link'"]))
+     "SPEECH OUTPUT: 'Foo link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>Tab"))
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Foo', cursor=1",
      "BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
-     "SPEECH OUTPUT: 'Foo link'"]))
+     "SPEECH OUTPUT: 'Foo link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/focus_tracking_links.py b/test/keystrokes/firefox/focus_tracking_links.py
index 0b40e7e..eda92d4 100644
--- a/test/keystrokes/firefox/focus_tracking_links.py
+++ b/test/keystrokes/firefox/focus_tracking_links.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
     ["BRAILLE LINE:  'Hello world, this is a test.'",
      "     VISIBLE:  'Hello world, this is a test.', cursor=1",
-     "SPEECH OUTPUT: 'Hello world link'",
+     "SPEECH OUTPUT: 'Hello world link.'",
      "SPEECH OUTPUT: ', this is a test.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -24,7 +24,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down to the Foo link",
     ["BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
-     "SPEECH OUTPUT: 'Foo link'"]))
+     "SPEECH OUTPUT: 'Foo link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -34,7 +34,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Bar', cursor=1",
      "BRAILLE LINE:  'Bar'",
      "     VISIBLE:  'Bar', cursor=1",
-     "SPEECH OUTPUT: 'Bar link'"]))
+     "SPEECH OUTPUT: 'Bar link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>Tab"))
@@ -44,7 +44,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Foo', cursor=1",
      "BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
-     "SPEECH OUTPUT: 'Foo link'"]))
+     "SPEECH OUTPUT: 'Foo link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_page_summary.py b/test/keystrokes/firefox/html_page_summary.py
index 78063c5..ceb8ba8 100644
--- a/test/keystrokes/firefox/html_page_summary.py
+++ b/test/keystrokes/firefox/html_page_summary.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'This is a Heading 6. h6', cursor=1",
      "BRAILLE LINE:  'This is a Heading 6. h6'",
      "     VISIBLE:  'This is a Heading 6. h6', cursor=1",
-     "SPEECH OUTPUT: 'heading level 6 This is a Heading 6.'",
+     "SPEECH OUTPUT: 'heading level 6.'",
+     "SPEECH OUTPUT: 'This is a Heading 6.'",
      "SPEECH OUTPUT: '14 headings 3 forms 43 tables'",
      "SPEECH OUTPUT: '19 unvisited links'"]))
 
diff --git a/test/keystrokes/firefox/html_role_combo_box.py b/test/keystrokes/firefox/html_role_combo_box.py
index d9f00b7..090da26 100644
--- a/test/keystrokes/firefox/html_role_combo_box.py
+++ b/test/keystrokes/firefox/html_role_combo_box.py
@@ -17,18 +17,20 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Severity normal combo box', cursor=10",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'Severity normal combo box'",
+     "SPEECH OUTPUT: 'Severity normal combo box.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
 sequence.append(utils.AssertPresentationAction(
     "2. Basic Where Am I",
-    ["BRAILLE LINE:  'Severity normal combo box'",
+    ["KNOWN ISSUE: The count is wrong.",
+     "BRAILLE LINE:  'Severity normal combo box'",
      "     VISIBLE:  'Severity normal combo box', cursor=10",
      "BRAILLE LINE:  'Severity normal combo box'",
      "     VISIBLE:  'Severity normal combo box', cursor=10",
-     "SPEECH OUTPUT: 'Severity combo box normal 4 of 7'"]))
+     "SPEECH OUTPUT: 'Severity combo box.'",
+     "SPEECH OUTPUT: 'normal 2 of 2'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -40,7 +42,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Browse mode', cursor=0",
      "BRAILLE LINE:  'Priority'",
      "     VISIBLE:  'Priority', cursor=1",
-     "SPEECH OUTPUT: 'Priority link'",
+     "SPEECH OUTPUT: 'Priority link.'",
      "SPEECH OUTPUT: 'Browse mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -51,7 +53,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Priority: Normal combo box', cursor=11",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'Priority: Normal combo box'",
+     "SPEECH OUTPUT: 'Priority: Normal combo box.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -62,15 +64,15 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Priority: Normal combo box', cursor=11",
      "BRAILLE LINE:  'Resolution: FIXED combo box'",
      "     VISIBLE:  'Resolution: FIXED combo box', cursor=13",
-     "SPEECH OUTPUT: 'Resolution: FIXED combo box'"]))
+     "SPEECH OUTPUT: 'Resolution: FIXED combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "6. Change selection Down: WONTFIX",
     ["BRAILLE LINE:  'Resolution: WONTFIX combo box'",
-     "     VISIBLE:  'Resolution: WONTFIX combo box', cursor=1",
-     "SPEECH OUTPUT: 'WONTFIX'"]))
+     "     VISIBLE:  'Resolution: WONTFIX combo box', cursor=13",
+     "SPEECH OUTPUT: 'WONTFIX.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -78,7 +80,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Change selection Up: FIXED",
     ["BRAILLE LINE:  'Resolution: FIXED combo box'",
      "     VISIBLE:  'Resolution: FIXED combo box', cursor=13",
-     "SPEECH OUTPUT: 'FIXED'"]))
+     "SPEECH OUTPUT: 'FIXED.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Alt>Down"))
@@ -93,7 +95,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Change selection Down: WONTFIX",
     ["BRAILLE LINE:  'Resolution: WONTFIX combo box'",
      "     VISIBLE:  'Resolution: WONTFIX combo box', cursor=13",
-     "SPEECH OUTPUT: 'WONTFIX'"]))
+     "SPEECH OUTPUT: 'WONTFIX.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
@@ -103,7 +105,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Resolution: WONTFIX combo box', cursor=13",
      "BRAILLE LINE:  'Resolution: WONTFIX combo box'",
      "     VISIBLE:  'Resolution: WONTFIX combo box', cursor=13",
-     "SPEECH OUTPUT: 'Resolution: WONTFIX combo box'",
+     "SPEECH OUTPUT: 'Resolution: WONTFIX combo box.'",
      "SPEECH OUTPUT: 'collapsed'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -112,7 +114,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Tab to Version combo box",
     ["BRAILLE LINE:  'Version 2.16 combo box'",
      "     VISIBLE:  'Version 2.16 combo box', cursor=9",
-     "SPEECH OUTPUT: 'Version 2.16 combo box'"]))
+     "SPEECH OUTPUT: 'Version 2.16 combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -140,7 +142,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. Line Down",
     ["BRAILLE LINE:  'Component'",
      "     VISIBLE:  'Component', cursor=1",
-     "SPEECH OUTPUT: 'Component'"]))
+     "SPEECH OUTPUT: 'Component.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_role_links.py b/test/keystrokes/firefox/html_role_links.py
index 024252c..291d0bb 100644
--- a/test/keystrokes/firefox/html_role_links.py
+++ b/test/keystrokes/firefox/html_role_links.py
@@ -23,7 +23,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'anchors.html', cursor=1",
      "BRAILLE LINE:  'anchors.html'",
      "     VISIBLE:  'anchors.html', cursor=1",
-     "SPEECH OUTPUT: 'anchors.html link'"]))
+     "SPEECH OUTPUT: 'anchors.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'blockquotes.html', cursor=1",
      "BRAILLE LINE:  'blockquotes.html'",
      "     VISIBLE:  'blockquotes.html', cursor=1",
-     "SPEECH OUTPUT: 'blockquotes.html link'"]))
+     "SPEECH OUTPUT: 'blockquotes.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -43,7 +43,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'bugzilla_top.html', cursor=1",
      "BRAILLE LINE:  'bugzilla_top.html'",
      "     VISIBLE:  'bugzilla_top.html', cursor=1",
-     "SPEECH OUTPUT: 'bugzilla_top.html link'"]))
+     "SPEECH OUTPUT: 'bugzilla_top.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>Tab"))
@@ -53,7 +53,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'blockquotes.html', cursor=1",
      "BRAILLE LINE:  'blockquotes.html'",
      "     VISIBLE:  'blockquotes.html', cursor=1",
-     "SPEECH OUTPUT: 'blockquotes.html link'"]))
+     "SPEECH OUTPUT: 'blockquotes.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -61,7 +61,9 @@ sequence.append(utils.AssertPresentationAction(
     "6. Basic Where Am I",
     ["BRAILLE LINE:  'blockquotes.html'",
      "     VISIBLE:  'blockquotes.html', cursor=1",
-     "SPEECH OUTPUT: 'file link to blockquotes.html same site 1188 bytes'"]))
+     "SPEECH OUTPUT: 'file link to blockquotes.html.'",
+     "SPEECH OUTPUT: 'same site.'",
+     "SPEECH OUTPUT: '1188 bytes.'"]))
 
 sequence.append(KeyComboAction("Return"))
 sequence.append(WaitForDocLoad())
@@ -75,8 +77,8 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Up to anchors.html",
     ["BRAILLE LINE:  '• anchors.html'",
      "     VISIBLE:  '• anchors.html', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'anchors.html link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'anchors.html link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
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 fd66d6f..d264653 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
@@ -13,7 +13,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
     ["BRAILLE LINE:  '• Not in a paragraph'",
      "     VISIBLE:  '• Not in a paragraph', cursor=1",
-     "SPEECH OUTPUT: '• Not in a paragraph'"]))
+     "SPEECH OUTPUT: '• Not in a paragraph.'"]))
 
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.StartRecordingAction())
@@ -22,7 +22,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Basic Where Am I next item",
     ["BRAILLE LINE:  '• In a paragraph'",
      "     VISIBLE:  '• In a paragraph', cursor=1",
-     "SPEECH OUTPUT: 'list item • In a paragraph'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: '• In a paragraph.'"]))
 
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.StartRecordingAction())
@@ -31,7 +32,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Basic Where Am I next item",
     ["BRAILLE LINE:  '• In a section'",
      "     VISIBLE:  '• In a section', cursor=1",
-     "SPEECH OUTPUT: 'list item • In a section'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: '• In a section.'"]))
 
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.StartRecordingAction())
@@ -40,7 +42,9 @@ sequence.append(utils.AssertPresentationAction(
     "4. Basic Where Am I next item",
     ["BRAILLE LINE:  '1. A nested list item, not in a paragraph LEVEL 1'",
      "     VISIBLE:  '1. A nested list item, not in a ', cursor=1",
-     "SPEECH OUTPUT: 'list item 1. A nested list item, not in a paragraph Nesting level 1'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: '1. A nested list item, not in a paragraph.'",
+     "SPEECH OUTPUT: 'Nesting level 1.'"]))
 
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.StartRecordingAction())
@@ -49,7 +53,9 @@ sequence.append(utils.AssertPresentationAction(
     "5. Basic Where Am I next item",
     ["BRAILLE LINE:  '2. A nested list item, in a paragraph LEVEL 1'",
      "     VISIBLE:  '2. A nested list item, in a para', cursor=1",
-     "SPEECH OUTPUT: 'list item 2. A nested list item, in a paragraph Nesting level 1'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: '2. A nested list item, in a paragraph.'",
+     "SPEECH OUTPUT: 'Nesting level 1.'"]))
 
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.StartRecordingAction())
@@ -58,7 +64,9 @@ sequence.append(utils.AssertPresentationAction(
     "6. Basic Where Am I next item",
     ["BRAILLE LINE:  '3. A nested list item, in a section LEVEL 1'",
      "     VISIBLE:  '3. A nested list item, in a sect', cursor=1",
-     "SPEECH OUTPUT: 'list item 3. A nested list item, in a section Nesting level 1'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: '3. A nested list item, in a section.'",
+     "SPEECH OUTPUT: 'Nesting level 1.'"]))
 
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.StartRecordingAction())
@@ -67,7 +75,8 @@ 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",
-     "SPEECH OUTPUT: 'list item • In a paragraph that's in a section'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: '• In a paragraph that's in a section.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_activate_link.py 
b/test/keystrokes/firefox/html_struct_nav_activate_link.py
index bc4553f..3d76b7a 100644
--- a/test/keystrokes/firefox/html_struct_nav_activate_link.py
+++ b/test/keystrokes/firefox/html_struct_nav_activate_link.py
@@ -17,7 +17,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Anchors2.html h3', cursor=1",
      "BRAILLE LINE:  'Anchors2.html h3'",
      "     VISIBLE:  'Anchors2.html h3', cursor=1",
-     "SPEECH OUTPUT: 'Anchors2.html link heading level 3'"]))
+     "SPEECH OUTPUT: 'Anchors2.html link heading level 3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
diff --git a/test/keystrokes/firefox/html_struct_nav_bug_554616.py 
b/test/keystrokes/firefox/html_struct_nav_bug_554616.py
index c6a1ffe..f4ef6e6 100644
--- a/test/keystrokes/firefox/html_struct_nav_bug_554616.py
+++ b/test/keystrokes/firefox/html_struct_nav_bug_554616.py
@@ -34,7 +34,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'r2477', cursor=1",
      "BRAILLE LINE:  'Row 2, column 1.'",
      "     VISIBLE:  'Row 2, column 1.', cursor=0",
-     "SPEECH OUTPUT: 'r2477'",
+     "SPEECH OUTPUT: 'r2477.'",
      "SPEECH OUTPUT: 'Row 2, column 1.' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -50,7 +50,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Row 2, column 2.'",
      "     VISIBLE:  'Row 2, column 2.', cursor=0",
      "SPEECH OUTPUT: 'Date (UTC)'",
-     "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008'",
+     "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008.'",
      "SPEECH OUTPUT: 'Row 2, column 2.' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -69,10 +69,10 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'installer'",
      "     VISIBLE:  'installer', cursor=1",
      "SPEECH OUTPUT: 'Download'",
-     "SPEECH OUTPUT: 'installer link'",
-     "SPEECH OUTPUT: '(10190 KB)'",
-     "SPEECH OUTPUT: 'portable archive link'",
-     "SPEECH OUTPUT: '(9154 KB)'",
+     "SPEECH OUTPUT: 'installer link.'",
+     "SPEECH OUTPUT: '(10190 KB).'",
+     "SPEECH OUTPUT: 'portable archive link.'",
+     "SPEECH OUTPUT: '(9154 KB).'",
      "SPEECH OUTPUT: 'Row 2, column 3.' voice=system",
      "SPEECH OUTPUT: 'blank' voice=system"]))
 
@@ -86,10 +86,10 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'installer (10193 KB) portable ar', cursor=1",
      "BRAILLE LINE:  'Row 3, column 3.'",
      "     VISIBLE:  'Row 3, column 3.', cursor=0",
-     "SPEECH OUTPUT: 'installer link'",
-     "SPEECH OUTPUT: '(10193 KB)'",
-     "SPEECH OUTPUT: 'portable archive link'",
-     "SPEECH OUTPUT: '(9149 KB)'",
+     "SPEECH OUTPUT: 'installer link.'",
+     "SPEECH OUTPUT: '(10193 KB).'",
+     "SPEECH OUTPUT: 'portable archive link.'",
+     "SPEECH OUTPUT: '(9149 KB).'",
      "SPEECH OUTPUT: 'Row 3, column 3.' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -105,7 +105,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Row 3, column 2.'",
      "     VISIBLE:  'Row 3, column 2.', cursor=0",
      "SPEECH OUTPUT: 'Date (UTC)'",
-     "SPEECH OUTPUT: 'Tue Nov 4 16:39:02 2008'",
+     "SPEECH OUTPUT: 'Tue Nov 4 16:39:02 2008.'",
      "SPEECH OUTPUT: 'Row 3, column 2.' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -120,7 +120,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Wed Nov 5 16:39:00 2008', cursor=1",
      "BRAILLE LINE:  'Row 2, column 2.'",
      "     VISIBLE:  'Row 2, column 2.', cursor=0",
-     "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008'",
+     "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008.'",
      "SPEECH OUTPUT: 'Row 2, column 2.' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -136,10 +136,10 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Row 4, column 3.'",
      "     VISIBLE:  'Row 4, column 3.', cursor=0",
      "SPEECH OUTPUT: 'Download'",
-     "SPEECH OUTPUT: 'installer link'",
-     "SPEECH OUTPUT: '(10186 KB)'",
-     "SPEECH OUTPUT: 'portable archive link'",
-     "SPEECH OUTPUT: '(9146 KB)'",
+     "SPEECH OUTPUT: 'installer link.'",
+     "SPEECH OUTPUT: '(10186 KB).'",
+     "SPEECH OUTPUT: 'portable archive link.'",
+     "SPEECH OUTPUT: '(9146 KB).'",
      "SPEECH OUTPUT: 'Row 4, column 3.' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/html_struct_nav_bug_556470.py 
b/test/keystrokes/firefox/html_struct_nav_bug_556470.py
index d306814..e790082 100644
--- a/test/keystrokes/firefox/html_struct_nav_bug_556470.py
+++ b/test/keystrokes/firefox/html_struct_nav_bug_556470.py
@@ -28,7 +28,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  '1'",
      "     VISIBLE:  '1', cursor=0",
      "SPEECH OUTPUT: 'table with 2 rows 3 columns' voice=system",
-     "SPEECH OUTPUT: '1'"]))
+     "SPEECH OUTPUT: '1.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("t"))
@@ -56,7 +56,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '1', cursor=0",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
      "SPEECH OUTPUT: 'table with 2 rows 3 columns' voice=system",
-     "SPEECH OUTPUT: '1'"]))
+     "SPEECH OUTPUT: '1.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>t"))
@@ -81,7 +81,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '1', cursor=0",
      "SPEECH OUTPUT: 'Wrapping to bottom.'",
      "SPEECH OUTPUT: 'table with 2 rows 3 columns'",
-     "SPEECH OUTPUT: '1'"]))
+     "SPEECH OUTPUT: '1.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_bug_567984.py 
b/test/keystrokes/firefox/html_struct_nav_bug_567984.py
index 9b6c196..b759ffc 100644
--- a/test/keystrokes/firefox/html_struct_nav_bug_567984.py
+++ b/test/keystrokes/firefox/html_struct_nav_bug_567984.py
@@ -35,7 +35,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Izrael bejelentette az  h3', cursor=1",
      "SPEECH OUTPUT: 'Izrael bejelentette az ",
      "egyoldalú tûzszünetet'",
-     "SPEECH OUTPUT: 'link heading level 3'"]))
+     "SPEECH OUTPUT: 'link heading level 3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
@@ -43,7 +43,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. h",
     ["BRAILLE LINE:  'Videók a Hudsonba zuhanó repülõrõl h3'",
      "     VISIBLE:  'Videók a Hudsonba zuhanó repülõr', cursor=1",
-     "SPEECH OUTPUT: 'Videók a Hudsonba zuhanó repülõrõl link heading level 3'"]))
+     "SPEECH OUTPUT: 'Videók a Hudsonba zuhanó repülõrõl link heading level 3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
@@ -51,7 +51,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. h",
     ["BRAILLE LINE:  'Újabb pénzügyi guru tûnt el, pénzzel együtt h3'",
      "     VISIBLE:  'Újabb pénzügyi guru tûnt el, pén', cursor=1",
-     "SPEECH OUTPUT: 'Újabb pénzügyi guru tûnt el, pénzzel együtt link heading level 3'"]))
+     "SPEECH OUTPUT: 'Újabb pénzügyi guru tûnt el, pénzzel együtt link heading level 3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -67,7 +67,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Down",
     ["BRAILLE LINE:  '1150 embert utcára tesz a pécsi Elcoteq h3'",
      "     VISIBLE:  '1150 embert utcára tesz a pécsi ', cursor=1",
-     "SPEECH OUTPUT: '1150 embert utcára tesz a pécsi Elcoteq link heading level 3'"]))
+     "SPEECH OUTPUT: '1150 embert utcára tesz a pécsi Elcoteq link heading level 3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("h"))
@@ -75,7 +75,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. h",
     ["BRAILLE LINE:  'Hamarosan újraindul a gázszállítás h3'",
      "     VISIBLE:  'Hamarosan újraindul a gázszállít', cursor=1",
-     "SPEECH OUTPUT: 'Hamarosan újraindul a gázszállítás link heading level 3'"]))
+     "SPEECH OUTPUT: 'Hamarosan újraindul a gázszállítás link heading level 3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -91,7 +91,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Shift+h",
     ["BRAILLE LINE:  'Hamarosan újraindul a gázszállítás h3'",
      "     VISIBLE:  'Hamarosan újraindul a gázszállít', cursor=1",
-     "SPEECH OUTPUT: 'Hamarosan újraindul a gázszállítás link heading level 3'"]))
+     "SPEECH OUTPUT: 'Hamarosan újraindul a gázszállítás link heading level 3.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_descriptions.py 
b/test/keystrokes/firefox/html_struct_nav_descriptions.py
index 3cb587b..0c3d4bd 100644
--- a/test/keystrokes/firefox/html_struct_nav_descriptions.py
+++ b/test/keystrokes/firefox/html_struct_nav_descriptions.py
@@ -17,7 +17,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Foo', cursor=1",
      "BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
-     "SPEECH OUTPUT: 'Foo link Title of the Foo link.'"]))
+     "SPEECH OUTPUT: 'Foo link.'",
+     "SPEECH OUTPUT: 'Title of the Foo link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("k"))
@@ -25,7 +26,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. k for next link",
     ["BRAILLE LINE:  'Bar'",
      "     VISIBLE:  'Bar', cursor=1",
-     "SPEECH OUTPUT: 'Bar link ARIA description text.'"]))
+     "SPEECH OUTPUT: 'Bar link.'",
+     "SPEECH OUTPUT: 'ARIA description text.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("k"))
@@ -33,7 +35,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. k for next link",
     ["BRAILLE LINE:  'Baz'",
      "     VISIBLE:  'Baz', cursor=1",
-     "SPEECH OUTPUT: 'Baz link Title of the Baz link.'"]))
+     "SPEECH OUTPUT: 'Baz link.'",
+     "SPEECH OUTPUT: 'Title of the Baz link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("x"))
diff --git a/test/keystrokes/firefox/html_struct_nav_heading_in_div_with_text.py 
b/test/keystrokes/firefox/html_struct_nav_heading_in_div_with_text.py
index 15ed2dd..79a5ceb 100644
--- a/test/keystrokes/firefox/html_struct_nav_heading_in_div_with_text.py
+++ b/test/keystrokes/firefox/html_struct_nav_heading_in_div_with_text.py
@@ -17,7 +17,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'First Heading  h2', cursor=1",
      "BRAILLE LINE:  'First Heading  h2'",
      "     VISIBLE:  'First Heading  h2', cursor=1",
-     "SPEECH OUTPUT: 'First Heading  link heading level 2'"]))
+     "SPEECH OUTPUT: 'First Heading  link heading level 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. 2 to move to the next heading",
     ["BRAILLE LINE:  'Second Heading  h2'",
      "     VISIBLE:  'Second Heading  h2', cursor=1",
-     "SPEECH OUTPUT: 'Second Heading  link heading level 2'"]))
+     "SPEECH OUTPUT: 'Second Heading  link heading level 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -49,7 +49,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Shift+2 to move to the previous heading",
     ["BRAILLE LINE:  'Second Heading  h2'",
      "     VISIBLE:  'Second Heading  h2', cursor=1",
-     "SPEECH OUTPUT: 'Second Heading  link heading level 2'"]))
+     "SPEECH OUTPUT: 'Second Heading  link heading level 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -65,7 +65,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Shift+2 to move to the previous heading",
     ["BRAILLE LINE:  'First Heading  h2'",
      "     VISIBLE:  'First Heading  h2', cursor=1",
-     "SPEECH OUTPUT: 'First Heading  link heading level 2'"]))
+     "SPEECH OUTPUT: 'First Heading  link heading level 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>2"))
@@ -76,7 +76,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Second Heading  h2'",
      "     VISIBLE:  'Second Heading  h2', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
-     "SPEECH OUTPUT: 'Second Heading  link heading level 2'"]))
+     "SPEECH OUTPUT: 'Second Heading  link heading level 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("2"))
@@ -87,7 +87,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'First Heading  h2'",
      "     VISIBLE:  'First Heading  h2', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
-     "SPEECH OUTPUT: 'First Heading  link heading level 2'"]))
+     "SPEECH OUTPUT: 'First Heading  link heading level 2.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_heading_with_clickable.py 
b/test/keystrokes/firefox/html_struct_nav_heading_with_clickable.py
index f909b7b..54479dc 100644
--- a/test/keystrokes/firefox/html_struct_nav_heading_with_clickable.py
+++ b/test/keystrokes/firefox/html_struct_nav_heading_with_clickable.py
@@ -15,7 +15,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. h for next heading",
     ["BRAILLE LINE:  'line 2 h1'",
      "     VISIBLE:  'line 2 h1', cursor=1",
-     "SPEECH OUTPUT: 'line 2 link heading level 1 clickable'"]))
+     "SPEECH OUTPUT: 'line 2 link heading level 1.'",
+     "SPEECH OUTPUT: 'clickable'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_link_with_child_text.py 
b/test/keystrokes/firefox/html_struct_nav_link_with_child_text.py
index b6adf32..d74f869 100644
--- a/test/keystrokes/firefox/html_struct_nav_link_with_child_text.py
+++ b/test/keystrokes/firefox/html_struct_nav_link_with_child_text.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'line 2', cursor=1",
      "BRAILLE LINE:  'line 2'",
      "     VISIBLE:  'line 2', cursor=1",
-     "SPEECH OUTPUT: 'line 2 link'"]))
+     "SPEECH OUTPUT: 'line 2 link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_links.py 
b/test/keystrokes/firefox/html_struct_nav_links.py
index a47bd43..d42e113 100644
--- a/test/keystrokes/firefox/html_struct_nav_links.py
+++ b/test/keystrokes/firefox/html_struct_nav_links.py
@@ -17,7 +17,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'anchors.html', cursor=1",
      "BRAILLE LINE:  'anchors.html'",
      "     VISIBLE:  'anchors.html', cursor=1",
-     "SPEECH OUTPUT: 'anchors.html link'"]))
+     "SPEECH OUTPUT: 'anchors.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("u"))
@@ -25,7 +25,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. u to blockquotes.html link",
     ["BRAILLE LINE:  'blockquotes.html'",
      "     VISIBLE:  'blockquotes.html', cursor=1",
-     "SPEECH OUTPUT: 'blockquotes.html link'"]))
+     "SPEECH OUTPUT: 'blockquotes.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>u"))
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. shift + u to anchors.html link",
     ["BRAILLE LINE:  'anchors.html'",
      "     VISIBLE:  'anchors.html', cursor=1",
-     "SPEECH OUTPUT: 'anchors.html link'"]))
+     "SPEECH OUTPUT: 'anchors.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>u"))
@@ -44,7 +44,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'textattributes.html'",
      "     VISIBLE:  'textattributes.html', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
-     "SPEECH OUTPUT: 'textattributes.html link'"]))
+     "SPEECH OUTPUT: 'textattributes.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>u"))
@@ -52,7 +52,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. shift + u to tables.html",
     ["BRAILLE LINE:  'tables.html'",
      "     VISIBLE:  'tables.html', cursor=1",
-     "SPEECH OUTPUT: 'tables.html link'"]))
+     "SPEECH OUTPUT: 'tables.html link.'"]))
 
 sequence.append(KeyComboAction("Return"))
 sequence.append(WaitForDocLoad())
@@ -68,7 +68,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'tables.html', cursor=1",
      "BRAILLE LINE:  'textattributes.html'",
      "     VISIBLE:  'textattributes.html', cursor=1",
-     "SPEECH OUTPUT: 'textattributes.html link'"]))
+     "SPEECH OUTPUT: 'textattributes.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("u"))
@@ -79,7 +79,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'anchors.html'",
      "     VISIBLE:  'anchors.html', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
-     "SPEECH OUTPUT: 'anchors.html link'"]))
+     "SPEECH OUTPUT: 'anchors.html link.'"]))
 
 sequence.append(KeyComboAction("Return"))
 sequence.append(WaitForDocLoad())
@@ -95,7 +95,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'anchors.html', cursor=1",
      "BRAILLE LINE:  'tables.html'",
      "     VISIBLE:  'tables.html', cursor=1",
-     "SPEECH OUTPUT: 'tables.html link'"]))
+     "SPEECH OUTPUT: 'tables.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("v"))
@@ -106,7 +106,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'anchors.html'",
      "     VISIBLE:  'anchors.html', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
-     "SPEECH OUTPUT: 'anchors.html link'"]))
+     "SPEECH OUTPUT: 'anchors.html link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>v"))
@@ -117,7 +117,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'tables.html'",
      "     VISIBLE:  'tables.html', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
-     "SPEECH OUTPUT: 'tables.html link'"]))
+     "SPEECH OUTPUT: 'tables.html link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_list_item.py 
b/test/keystrokes/firefox/html_struct_nav_list_item.py
index 2bde578..01c6a52 100644
--- a/test/keystrokes/firefox/html_struct_nav_list_item.py
+++ b/test/keystrokes/firefox/html_struct_nav_list_item.py
@@ -15,8 +15,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. l to first list",
     ["BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
-     "SPEECH OUTPUT: 'List with 4 items'",
-     "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
+     "SPEECH OUTPUT: 'List with 4 items.'",
+     "SPEECH OUTPUT: '1. remember what the heck we are doing each day.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -25,8 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
      "BRAILLE LINE:  '6. And use roman numerals,'",
      "     VISIBLE:  '6. And use roman numerals,', cursor=1",
-     "SPEECH OUTPUT: 'List with 6 items'",
-     "SPEECH OUTPUT: '6. And use roman numerals,'"]))
+     "SPEECH OUTPUT: 'List with 6 items.'",
+     "SPEECH OUTPUT: '6. And use roman numerals,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -34,8 +34,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. l to third list (3) landing on the first item (3.1)",
     ["BRAILLE LINE:  '• listing item'",
      "     VISIBLE:  '• listing item', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '• listing item'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '• listing item.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -43,7 +43,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. i to next list item, which is nested (3.1.1)",
     ["BRAILLE LINE:  '◦ first sublevel'",
      "     VISIBLE:  '◦ first sublevel', cursor=1",
-     "SPEECH OUTPUT: '◦ first sublevel'"]))
+     "SPEECH OUTPUT: '◦ first sublevel.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -51,7 +51,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. i to next list item, which is nested (3.1.1.1)",
     ["BRAILLE LINE:  '◾ look for the bullet on'",
      "     VISIBLE:  '◾ look for the bullet on', cursor=1",
-     "SPEECH OUTPUT: '◾ look for the bullet on'"]))
+     "SPEECH OUTPUT: '◾ look for the bullet on.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -59,7 +59,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. i to next list item, which is nested (3.1.1.1.1)",
     ["BRAILLE LINE:  '◾ each sublevel'",
      "     VISIBLE:  '◾ each sublevel', cursor=1",
-     "SPEECH OUTPUT: '◾ each sublevel'"]))
+     "SPEECH OUTPUT: '◾ each sublevel.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -75,7 +75,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. i to next list item, moving outside of the innermost list (3.1.1.2)",
     ["BRAILLE LINE:  '◾ second sublevel'",
      "     VISIBLE:  '◾ second sublevel', cursor=1",
-     "SPEECH OUTPUT: '◾ second sublevel'"]))
+     "SPEECH OUTPUT: '◾ second sublevel.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -83,7 +83,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. i to next list item, moving outside of the current nested list (3.1.2)",
     ["BRAILLE LINE:  '◾ or you can specify a square'",
      "     VISIBLE:  '◾ or you can specify a square', cursor=1",
-     "SPEECH OUTPUT: '◾ or you can specify a square'"]))
+     "SPEECH OUTPUT: '◾ or you can specify a square.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -91,7 +91,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. i to next list item, which is nested (3.1.2.1)",
     ["BRAILLE LINE:  '◦ if your TYPE is circle'",
      "     VISIBLE:  '◦ if your TYPE is circle', cursor=1",
-     "SPEECH OUTPUT: '◦ if your TYPE is circle'"]))
+     "SPEECH OUTPUT: '◦ if your TYPE is circle.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -99,7 +99,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. i to next list item, which is further nested (3.1.2.2)",
     ["BRAILLE LINE:  '• or even a disc'",
      "     VISIBLE:  '• or even a disc', cursor=1",
-     "SPEECH OUTPUT: '• or even a disc'"]))
+     "SPEECH OUTPUT: '• or even a disc.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -107,7 +107,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. i to next list item, moving out of the last two levels (3.2)",
     ["BRAILLE LINE:  '◾ Franz Liszt'",
      "     VISIBLE:  '◾ Franz Liszt', cursor=1",
-     "SPEECH OUTPUT: '◾ Franz Liszt'"]))
+     "SPEECH OUTPUT: '◾ Franz Liszt.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -115,7 +115,7 @@ sequence.append(utils.AssertPresentationAction(
     "13. i to next list item which is nested (3.2.1)",
     ["BRAILLE LINE:  '◦ was a composer who was not square'",
      "     VISIBLE:  '◦ was a composer who was not squ', cursor=1",
-     "SPEECH OUTPUT: '◦ was a composer who was not square'"]))
+     "SPEECH OUTPUT: '◦ was a composer who was not square.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -123,7 +123,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. i to next list item which is nested (3.2.2)",
     ["BRAILLE LINE:  '• would have liked the Who'",
      "     VISIBLE:  '• would have liked the Who', cursor=1",
-     "SPEECH OUTPUT: '• would have liked the Who'"]))
+     "SPEECH OUTPUT: '• would have liked the Who.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -139,7 +139,7 @@ sequence.append(utils.AssertPresentationAction(
     "16. i to next list item in the fourth list (4.2)",
     ["BRAILLE LINE:  '◾ blah, blah, blah'",
      "     VISIBLE:  '◾ blah, blah, blah', cursor=1",
-     "SPEECH OUTPUT: '◾ blah, blah, blah'"]))
+     "SPEECH OUTPUT: '◾ blah, blah, blah.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -147,7 +147,7 @@ sequence.append(utils.AssertPresentationAction(
     "17. i to last list item in the fourth list (4.3)",
     ["BRAILLE LINE:  '• whine, whine, whine'",
      "     VISIBLE:  '• whine, whine, whine', cursor=1",
-     "SPEECH OUTPUT: '• whine, whine, whine'"]))
+     "SPEECH OUTPUT: '• whine, whine, whine.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("i"))
@@ -158,7 +158,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
-     "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
+     "SPEECH OUTPUT: '1. remember what the heck we are doing each day.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/html_struct_nav_lists.py 
b/test/keystrokes/firefox/html_struct_nav_lists.py
index 0b924d9..df9b960 100644
--- a/test/keystrokes/firefox/html_struct_nav_lists.py
+++ b/test/keystrokes/firefox/html_struct_nav_lists.py
@@ -16,8 +16,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. l to first list",
     ["BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
-     "SPEECH OUTPUT: 'List with 4 items'",
-     "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
+     "SPEECH OUTPUT: 'List with 4 items.'",
+     "SPEECH OUTPUT: '1. remember what the heck we are doing each day.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -26,8 +26,8 @@ sequence.append(utils.AssertPresentationAction(
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
      "BRAILLE LINE:  '6. And use roman numerals,'",
      "     VISIBLE:  '6. And use roman numerals,', cursor=1",
-     "SPEECH OUTPUT: 'List with 6 items'",
-     "SPEECH OUTPUT: '6. And use roman numerals,'"]))
+     "SPEECH OUTPUT: 'List with 6 items.'",
+     "SPEECH OUTPUT: '6. And use roman numerals,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -35,8 +35,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. l to third list",
     ["BRAILLE LINE:  '• listing item'",
      "     VISIBLE:  '• listing item', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '• listing item'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '• listing item.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -44,8 +44,8 @@ sequence.append(utils.AssertPresentationAction(
     "4. l to third list's first sub list",
     ["BRAILLE LINE:  '◦ first sublevel'",
      "     VISIBLE:  '◦ first sublevel', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◦ first sublevel'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◦ first sublevel.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -53,8 +53,8 @@ sequence.append(utils.AssertPresentationAction(
     "5. l to third list's first sub list's first list",
     ["BRAILLE LINE:  '◾ look for the bullet on'",
      "     VISIBLE:  '◾ look for the bullet on', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◾ look for the bullet on'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◾ look for the bullet on.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -62,8 +62,8 @@ sequence.append(utils.AssertPresentationAction(
     "6. l to third list's inner-most list",
     ["BRAILLE LINE:  '◾ each sublevel'",
      "     VISIBLE:  '◾ each sublevel', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◾ each sublevel'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◾ each sublevel.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -71,8 +71,8 @@ sequence.append(utils.AssertPresentationAction(
     "7. l to next sub list in the third list",
     ["BRAILLE LINE:  '◦ if your TYPE is circle'",
      "     VISIBLE:  '◦ if your TYPE is circle', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◦ if your TYPE is circle'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◦ if your TYPE is circle.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -80,8 +80,8 @@ sequence.append(utils.AssertPresentationAction(
     "8. l to next sub list in the third list",
     ["BRAILLE LINE:  '◦ was a composer who was not square'",
      "     VISIBLE:  '◦ was a composer who was not squ', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◦ was a composer who was not square'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◦ was a composer who was not square.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -89,8 +89,8 @@ sequence.append(utils.AssertPresentationAction(
     "9. l to the fourth list",
     ["BRAILLE LINE:  '◦ feeling listless'",
      "     VISIBLE:  '◦ feeling listless', cursor=1",
-     "SPEECH OUTPUT: 'List with 3 items'",
-     "SPEECH OUTPUT: '◦ feeling listless'"]))
+     "SPEECH OUTPUT: 'List with 3 items.'",
+     "SPEECH OUTPUT: '◦ feeling listless.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("l"))
@@ -101,8 +101,8 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to top.' voice=system",
-     "SPEECH OUTPUT: 'List with 4 items'",
-     "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
+     "SPEECH OUTPUT: 'List with 4 items.'",
+     "SPEECH OUTPUT: '1. remember what the heck we are doing each day.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -113,8 +113,8 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  '◦ feeling listless'",
      "     VISIBLE:  '◦ feeling listless', cursor=1",
      "SPEECH OUTPUT: 'Wrapping to bottom.' voice=system",
-     "SPEECH OUTPUT: 'List with 3 items'",
-     "SPEECH OUTPUT: '◦ feeling listless'"]))
+     "SPEECH OUTPUT: 'List with 3 items.'",
+     "SPEECH OUTPUT: '◦ feeling listless.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -122,8 +122,8 @@ sequence.append(utils.AssertPresentationAction(
     "12. shift + l",
     ["BRAILLE LINE:  '◦ was a composer who was not square'",
      "     VISIBLE:  '◦ was a composer who was not squ', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◦ was a composer who was not square'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◦ was a composer who was not square.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -131,8 +131,8 @@ sequence.append(utils.AssertPresentationAction(
     "13. shift + l",
     ["BRAILLE LINE:  '◦ if your TYPE is circle'",
      "     VISIBLE:  '◦ if your TYPE is circle', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◦ if your TYPE is circle'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◦ if your TYPE is circle.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -140,8 +140,8 @@ sequence.append(utils.AssertPresentationAction(
     "14. shift + l",
     ["BRAILLE LINE:  '◾ each sublevel'",
      "     VISIBLE:  '◾ each sublevel', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◾ each sublevel'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◾ each sublevel.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -149,8 +149,8 @@ sequence.append(utils.AssertPresentationAction(
     "15. shift + l",
     ["BRAILLE LINE:  '◾ look for the bullet on'",
      "     VISIBLE:  '◾ look for the bullet on', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◾ look for the bullet on'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◾ look for the bullet on.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -158,8 +158,8 @@ sequence.append(utils.AssertPresentationAction(
     "16. shift + l",
     ["BRAILLE LINE:  '◦ first sublevel'",
      "     VISIBLE:  '◦ first sublevel', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '◦ first sublevel'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '◦ first sublevel.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -167,8 +167,8 @@ sequence.append(utils.AssertPresentationAction(
     "17. shift + l",
     ["BRAILLE LINE:  '• listing item'",
      "     VISIBLE:  '• listing item', cursor=1",
-     "SPEECH OUTPUT: 'List with 2 items'",
-     "SPEECH OUTPUT: '• listing item'"]))
+     "SPEECH OUTPUT: 'List with 2 items.'",
+     "SPEECH OUTPUT: '• listing item.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -177,8 +177,8 @@ sequence.append(utils.AssertPresentationAction(
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
      "BRAILLE LINE:  '6. And use roman numerals,'",
      "     VISIBLE:  '6. And use roman numerals,', cursor=1",
-     "SPEECH OUTPUT: 'List with 6 items'",
-     "SPEECH OUTPUT: '6. And use roman numerals,'"]))
+     "SPEECH OUTPUT: 'List with 6 items.'",
+     "SPEECH OUTPUT: '6. And use roman numerals,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Shift>l"))
@@ -186,8 +186,8 @@ sequence.append(utils.AssertPresentationAction(
     "19. shift + l",
     ["BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
-     "SPEECH OUTPUT: 'List with 4 items'",
-     "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
+     "SPEECH OUTPUT: 'List with 4 items.'",
+     "SPEECH OUTPUT: '1. remember what the heck we are doing each day.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/label_inference_bug_546815.py 
b/test/keystrokes/firefox/label_inference_bug_546815.py
index a8c98c9..a0df61e 100644
--- a/test/keystrokes/firefox/label_inference_bug_546815.py
+++ b/test/keystrokes/firefox/label_inference_bug_546815.py
@@ -123,7 +123,8 @@ sequence.append(utils.AssertPresentationAction(
     "11. Next form field",
     ["BRAILLE LINE:  '&=y cabernet sauvignon radio button'",
      "     VISIBLE:  '&=y cabernet sauvignon radio but', cursor=1",
-     "SPEECH OUTPUT: 'cabernet sauvignon selected radio button'"]))
+     "SPEECH OUTPUT: 'cabernet sauvignon.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -133,7 +134,8 @@ sequence.append(utils.AssertPresentationAction(
     "12. Next form field",
     ["BRAILLE LINE:  '& y merlot radio button'",
      "     VISIBLE:  '& y merlot radio button', cursor=1",
-     "SPEECH OUTPUT: 'merlot not selected radio button'"]))
+     "SPEECH OUTPUT: 'merlot.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -143,7 +145,8 @@ sequence.append(utils.AssertPresentationAction(
     "13. Next form field",
     ["BRAILLE LINE:  '& y nebbiolo radio button'",
      "     VISIBLE:  '& y nebbiolo radio button', cursor=1",
-     "SPEECH OUTPUT: 'nebbiolo not selected radio button'"]))
+     "SPEECH OUTPUT: 'nebbiolo.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -153,7 +156,8 @@ sequence.append(utils.AssertPresentationAction(
     "14. Next form field",
     ["BRAILLE LINE:  '& y pinot noir radio button'",
      "     VISIBLE:  '& y pinot noir radio button', cursor=1",
-     "SPEECH OUTPUT: 'pinot noir not selected radio button'"]))
+     "SPEECH OUTPUT: 'pinot noir.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -163,7 +167,8 @@ sequence.append(utils.AssertPresentationAction(
     "15. Next form field",
     ["BRAILLE LINE:  '& y don't drink wine radio button'",
      "     VISIBLE:  '& y don't drink wine radio butto', cursor=1",
-     "SPEECH OUTPUT: 'don't drink wine not selected radio button'"]))
+     "SPEECH OUTPUT: 'don't drink wine.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
diff --git a/test/keystrokes/firefox/label_inference_bugzilla_search.py 
b/test/keystrokes/firefox/label_inference_bugzilla_search.py
index a32e37d..d35b4e2 100644
--- a/test/keystrokes/firefox/label_inference_bugzilla_search.py
+++ b/test/keystrokes/firefox/label_inference_bugzilla_search.py
@@ -20,7 +20,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  ' $l', cursor=1",
      "BRAILLE LINE:  'Summary: contains all of the words/strings combo box'",
      "     VISIBLE:  'Summary: contains all of the wor', cursor=10",
-     "SPEECH OUTPUT: 'Summary: contains all of the words/strings combo box'"]))
+     "SPEECH OUTPUT: 'Summary: contains all of the words/strings combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -53,7 +53,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "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())
@@ -66,7 +66,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'accerciser', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'Product: multi-select List with 379 items'",
-     "SPEECH OUTPUT: 'accerciser'"]))
+     "SPEECH OUTPUT: 'accerciser.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -78,7 +78,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Browse mode', cursor=0",
      "BRAILLE LINE:  'Component'",
      "     VISIBLE:  'Component', cursor=1",
-     "SPEECH OUTPUT: 'Component link'",
+     "SPEECH OUTPUT: 'Component link.'",
      "SPEECH OUTPUT: 'Browse mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -90,7 +90,7 @@ sequence.append(utils.AssertPresentationAction(
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
      "SPEECH OUTPUT: 'Component: multi-select List with 1248 items'",
-     "SPEECH OUTPUT: 'abiscan'",
+     "SPEECH OUTPUT: 'abiscan.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -103,7 +103,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '0.0.1', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'Version: multi-select List with 857 items'",
-     "SPEECH OUTPUT: '0.0.1'"]))
+     "SPEECH OUTPUT: '0.0.1.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -113,7 +113,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '---', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'Target Milestone: multi-select List with 555 items'",
-     "SPEECH OUTPUT: '---'"]))
+     "SPEECH OUTPUT: '---.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -121,7 +121,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Tab",
     ["BRAILLE LINE:  'A Comment: contains the string combo box'",
      "     VISIBLE:  'A Comment: contains the string c', cursor=12",
-     "SPEECH OUTPUT: 'A Comment: contains the string combo box'"]))
+     "SPEECH OUTPUT: 'A Comment: contains the string combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -137,7 +137,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Tab",
     ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings combo box'",
      "     VISIBLE:  'Whiteboard: contains all of the ', cursor=13",
-     "SPEECH OUTPUT: 'Whiteboard: contains all of the words/strings combo box'"]))
+     "SPEECH OUTPUT: 'Whiteboard: contains all of the words/strings combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -157,7 +157,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Browse mode', cursor=0",
      "BRAILLE LINE:  'Keywords'",
      "     VISIBLE:  'Keywords', cursor=1",
-     "SPEECH OUTPUT: 'Keywords link'",
+     "SPEECH OUTPUT: 'Keywords link.'",
      "SPEECH OUTPUT: 'Browse mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -168,7 +168,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Keywords: contains all of the ke', cursor=11",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'Keywords: contains all of the keywords combo box'",
+     "SPEECH OUTPUT: 'Keywords: contains all of the keywords combo box.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -189,7 +189,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'UNCONFIRMED', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'Status: multi-select List with 8 items'",
-     "SPEECH OUTPUT: 'UNCONFIRMED'"]))
+     "SPEECH OUTPUT: 'UNCONFIRMED.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -199,7 +199,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'FIXED', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'Resolution: multi-select List with 12 items'",
-     "SPEECH OUTPUT: 'FIXED'"]))
+     "SPEECH OUTPUT: 'FIXED.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -209,7 +209,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'blocker', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'Severity: multi-select List with 7 items'",
-     "SPEECH OUTPUT: 'blocker'"]))
+     "SPEECH OUTPUT: 'blocker.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -219,7 +219,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Immediate', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'Priority: multi-select List with 5 items'",
-     "SPEECH OUTPUT: 'Immediate'"]))
+     "SPEECH OUTPUT: 'Immediate.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -229,7 +229,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'All', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'OS: multi-select List with 21 items'",
-     "SPEECH OUTPUT: 'All'"]))
+     "SPEECH OUTPUT: 'All.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -285,7 +285,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'contains combo box', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'contains combo box'",
+     "SPEECH OUTPUT: 'contains combo box.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -351,7 +351,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'contains combo box', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'contains combo box'",
+     "SPEECH OUTPUT: 'contains combo box.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -370,7 +370,7 @@ sequence.append(utils.AssertPresentationAction(
     "36. Tab",
     ["BRAILLE LINE:  'Only include combo box'",
      "     VISIBLE:  'Only include combo box', cursor=1",
-     "SPEECH OUTPUT: 'Only include combo box'"]))
+     "SPEECH OUTPUT: 'Only include combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -407,7 +407,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '[Bug creation]'",
      "     VISIBLE:  '[Bug creation]', cursor=1",
      "SPEECH OUTPUT: 'where one or more of the following changed: multi-select List with 26 items'",
-     "SPEECH OUTPUT: '[Bug creation]'"]))
+     "SPEECH OUTPUT: '[Bug creation].'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -425,7 +425,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Unspecified', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'GNOME version: multi-select List with 14 items'",
-     "SPEECH OUTPUT: 'Unspecified'"]))
+     "SPEECH OUTPUT: 'Unspecified.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -435,7 +435,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Unspecified', cursor=1",
      "SPEECH OUTPUT: 'table with 2 rows 1 column'",
      "SPEECH OUTPUT: 'GNOME target: multi-select List with 12 items'",
-     "SPEECH OUTPUT: 'Unspecified'"]))
+     "SPEECH OUTPUT: 'Unspecified.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -443,7 +443,7 @@ sequence.append(utils.AssertPresentationAction(
     "44. Tab",
     ["BRAILLE LINE:  'Sort results by: Reuse same sort as last time combo box'",
      "     VISIBLE:  'Sort results by: Reuse same sort', cursor=18",
-     "SPEECH OUTPUT: 'Sort results by: Reuse same sort as last time combo box'"]))
+     "SPEECH OUTPUT: 'Sort results by: Reuse same sort as last time combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -482,7 +482,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '--- combo box', cursor=1",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: '--- combo box'",
+     "SPEECH OUTPUT: '--- combo box.'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -493,7 +493,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '--- combo box', cursor=1",
      "BRAILLE LINE:  '--- combo box'",
      "     VISIBLE:  '--- combo box', cursor=1",
-     "SPEECH OUTPUT: '--- combo box'"]))
+     "SPEECH OUTPUT: '--- combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
diff --git a/test/keystrokes/firefox/label_inference_entries.py 
b/test/keystrokes/firefox/label_inference_entries.py
index ed56576..dc72a91 100644
--- a/test/keystrokes/firefox/label_inference_entries.py
+++ b/test/keystrokes/firefox/label_inference_entries.py
@@ -68,9 +68,9 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "6. Next form field",
-    ["BRAILLE LINE:  'Looking at what follows visually, I'm not sure what I would type/i.e. what the labels 
are.  $l'",
-     "     VISIBLE:  'type/i.e. what the labels are.  ', cursor=32",
-     "SPEECH OUTPUT: 'Looking at what follows visually, I'm not sure what I would type/i.e. what the labels 
are. entry'"]))
+    ["BRAILLE LINE:  ' $l'",
+     "     VISIBLE:  ' $l', cursor=1",
+     "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -379,9 +379,10 @@ sequence.append(KeyComboAction("Tab"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "37. Next form field",
-    ["BRAILLE LINE:  'Magic disappearing text trick:  $l'",
-     "     VISIBLE:  'Magic disappearing text trick:  ', cursor=32",
+    ["KNOWN ISSUE: We're double-displaying the placeholder text.",
      "BRAILLE LINE:  'Magic disappearing text trick:  $l'",
+     "     VISIBLE:  'Magic disappearing text trick:  ', cursor=0",
+     "BRAILLE LINE:  'Magic disappearing text trick: Magic disappearing text trick:  $l'",
      "     VISIBLE:  'Magic disappearing text trick:  ', cursor=32",
      "SPEECH OUTPUT: 'Magic disappearing text trick: entry'"]))
 
diff --git a/test/keystrokes/firefox/label_inference_mailman.py 
b/test/keystrokes/firefox/label_inference_mailman.py
index 201e665..5d8d118 100644
--- a/test/keystrokes/firefox/label_inference_mailman.py
+++ b/test/keystrokes/firefox/label_inference_mailman.py
@@ -77,7 +77,8 @@ sequence.append(utils.AssertPresentationAction(
     "7. Next form field",
     ["BRAILLE LINE:  '&=y No radio button'",
      "     VISIBLE:  '&=y No radio button', cursor=1",
-     "SPEECH OUTPUT: 'No selected radio button'"]))
+     "SPEECH OUTPUT: 'No.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
@@ -87,7 +88,8 @@ sequence.append(utils.AssertPresentationAction(
     "8. Next form field",
     ["BRAILLE LINE:  '& y Yes radio button'",
      "     VISIBLE:  '& y Yes radio button', cursor=1",
-     "SPEECH OUTPUT: 'Yes not selected radio button'"]))
+     "SPEECH OUTPUT: 'Yes.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyPressAction(0, None, "KP_Insert"))
diff --git a/test/keystrokes/firefox/line_nav_bug_546815.py b/test/keystrokes/firefox/line_nav_bug_546815.py
index 0a10726..c56f250 100644
--- a/test/keystrokes/firefox/line_nav_bug_546815.py
+++ b/test/keystrokes/firefox/line_nav_bug_546815.py
@@ -184,7 +184,8 @@ sequence.append(utils.AssertPresentationAction(
     "20. Line Down",
     ["BRAILLE LINE:  '&=y cabernet sauvignon radio button'",
      "     VISIBLE:  '&=y cabernet sauvignon radio but', cursor=1",
-     "SPEECH OUTPUT: 'cabernet sauvignon selected radio button'"]))
+     "SPEECH OUTPUT: 'cabernet sauvignon.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -192,7 +193,8 @@ sequence.append(utils.AssertPresentationAction(
     "21. Line Down",
     ["BRAILLE LINE:  '& y merlot radio button'",
      "     VISIBLE:  '& y merlot radio button', cursor=1",
-     "SPEECH OUTPUT: 'merlot not selected radio button'"]))
+     "SPEECH OUTPUT: 'merlot.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -200,7 +202,8 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Down",
     ["BRAILLE LINE:  '& y nebbiolo radio button'",
      "     VISIBLE:  '& y nebbiolo radio button', cursor=1",
-     "SPEECH OUTPUT: 'nebbiolo not selected radio button'"]))
+     "SPEECH OUTPUT: 'nebbiolo.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -208,7 +211,8 @@ sequence.append(utils.AssertPresentationAction(
     "23. Line Down",
     ["BRAILLE LINE:  '& y pinot noir radio button'",
      "     VISIBLE:  '& y pinot noir radio button', cursor=1",
-     "SPEECH OUTPUT: 'pinot noir not selected radio button'"]))
+     "SPEECH OUTPUT: 'pinot noir.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -216,7 +220,8 @@ sequence.append(utils.AssertPresentationAction(
     "24. Line Down",
     ["BRAILLE LINE:  '& y don't drink wine radio button'",
      "     VISIBLE:  '& y don't drink wine radio butto', cursor=1",
-     "SPEECH OUTPUT: 'don't drink wine not selected radio button'"]))
+     "SPEECH OUTPUT: 'don't drink wine.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -224,7 +229,8 @@ sequence.append(utils.AssertPresentationAction(
     "25. Line Up",
     ["BRAILLE LINE:  '& y pinot noir radio button'",
      "     VISIBLE:  '& y pinot noir radio button', cursor=1",
-     "SPEECH OUTPUT: 'pinot noir not selected radio button'"]))
+     "SPEECH OUTPUT: 'pinot noir.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -232,7 +238,8 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Up",
     ["BRAILLE LINE:  '& y nebbiolo radio button'",
      "     VISIBLE:  '& y nebbiolo radio button', cursor=1",
-     "SPEECH OUTPUT: 'nebbiolo not selected radio button'"]))
+     "SPEECH OUTPUT: 'nebbiolo.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -240,7 +247,8 @@ sequence.append(utils.AssertPresentationAction(
     "27. Line Up",
     ["BRAILLE LINE:  '& y merlot radio button'",
      "     VISIBLE:  '& y merlot radio button', cursor=1",
-     "SPEECH OUTPUT: 'merlot not selected radio button'"]))
+     "SPEECH OUTPUT: 'merlot.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -248,7 +256,8 @@ sequence.append(utils.AssertPresentationAction(
     "28. Line Up",
     ["BRAILLE LINE:  '&=y cabernet sauvignon radio button'",
      "     VISIBLE:  '&=y cabernet sauvignon radio but', cursor=1",
-     "SPEECH OUTPUT: 'cabernet sauvignon selected radio button'"]))
+     "SPEECH OUTPUT: 'cabernet sauvignon.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 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 5779393..6368cd3 100644
--- a/test/keystrokes/firefox/line_nav_bug_549128.py
+++ b/test/keystrokes/firefox/line_nav_bug_549128.py
@@ -17,7 +17,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
     ["BRAILLE LINE:  'Holiday Gift Giving'",
      "     VISIBLE:  'Holiday Gift Giving', cursor=1",
-     "SPEECH OUTPUT: 'Holiday Gift Giving'"]))
+     "SPEECH OUTPUT: 'Holiday Gift Giving.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -49,7 +49,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'The Ideal Gift Collection'",
      "     VISIBLE:  'The Ideal Gift Collection', cursor=1",
-     "SPEECH OUTPUT: 'The Ideal Gift Collection link'"]))
+     "SPEECH OUTPUT: 'The Ideal Gift Collection link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -57,7 +57,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
     ["BRAILLE LINE:  '2 (5 oz.) Filet Mignons'",
      "     VISIBLE:  '2 (5 oz.) Filet Mignons', cursor=1",
-     "SPEECH OUTPUT: '2 (5 oz.) Filet Mignons'"]))
+     "SPEECH OUTPUT: '2 (5 oz.) Filet Mignons.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -65,7 +65,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Down",
     ["BRAILLE LINE:  '2 (5 oz.) Top Sirloins'",
      "     VISIBLE:  '2 (5 oz.) Top Sirloins', cursor=1",
-     "SPEECH OUTPUT: '2 (5 oz.) Top Sirloins'"]))
+     "SPEECH OUTPUT: '2 (5 oz.) Top Sirloins.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -73,7 +73,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
     ["BRAILLE LINE:  '4 (4 oz.) Foobar Steaks Burgers'",
      "     VISIBLE:  '4 (4 oz.) Foobar Steaks Burgers', cursor=1",
-     "SPEECH OUTPUT: '4 (4 oz.) Foobar Steaks Burgers'"]))
+     "SPEECH OUTPUT: '4 (4 oz.) Foobar Steaks Burgers.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -81,7 +81,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
     ["BRAILLE LINE:  '6 (5.75 oz.) Stuffed Baked Potatoes'",
      "     VISIBLE:  '6 (5.75 oz.) Stuffed Baked Potat', cursor=1",
-     "SPEECH OUTPUT: '6 (5.75 oz.) Stuffed Baked Potatoes'"]))
+     "SPEECH OUTPUT: '6 (5.75 oz.) Stuffed Baked Potatoes.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -89,7 +89,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  '2 (4.5 oz.) Stuffed Sole with Scallops and Crab'",
      "     VISIBLE:  '2 (4.5 oz.) Stuffed Sole with Sc', cursor=1",
-     "SPEECH OUTPUT: '2 (4.5 oz.) Stuffed Sole with Scallops and Crab'"]))
+     "SPEECH OUTPUT: '2 (4.5 oz.) Stuffed Sole with Scallops and Crab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -97,7 +97,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Down",
     ["BRAILLE LINE:  '1 (6 in.) Chocolate Lover's Cake'",
      "     VISIBLE:  '1 (6 in.) Chocolate Lover's Cake', cursor=1",
-     "SPEECH OUTPUT: '1 (6 in.) Chocolate Lover's Cake'"]))
+     "SPEECH OUTPUT: '1 (6 in.) Chocolate Lover's Cake.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -105,7 +105,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Down",
     ["BRAILLE LINE:  'Regular $133.00, Now $59.99'",
      "     VISIBLE:  'Regular $133.00, Now $59.99', cursor=1",
-     "SPEECH OUTPUT: 'Regular $133.00, Now $59.99'"]))
+     "SPEECH OUTPUT: 'Regular $133.00, Now $59.99.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -119,7 +119,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. Line Up",
     ["BRAILLE LINE:  '1 (6 in.) Chocolate Lover's Cake'",
      "     VISIBLE:  '1 (6 in.) Chocolate Lover's Cake', cursor=1",
-     "SPEECH OUTPUT: '1 (6 in.) Chocolate Lover's Cake'"]))
+     "SPEECH OUTPUT: '1 (6 in.) Chocolate Lover's Cake.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -127,7 +127,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Line Up",
     ["BRAILLE LINE:  '2 (4.5 oz.) Stuffed Sole with Scallops and Crab'",
      "     VISIBLE:  '2 (4.5 oz.) Stuffed Sole with Sc', cursor=1",
-     "SPEECH OUTPUT: '2 (4.5 oz.) Stuffed Sole with Scallops and Crab'"]))
+     "SPEECH OUTPUT: '2 (4.5 oz.) Stuffed Sole with Scallops and Crab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -135,7 +135,7 @@ sequence.append(utils.AssertPresentationAction(
     "16. Line Up",
     ["BRAILLE LINE:  '6 (5.75 oz.) Stuffed Baked Potatoes'",
      "     VISIBLE:  '6 (5.75 oz.) Stuffed Baked Potat', cursor=1",
-     "SPEECH OUTPUT: '6 (5.75 oz.) Stuffed Baked Potatoes'"]))
+     "SPEECH OUTPUT: '6 (5.75 oz.) Stuffed Baked Potatoes.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -143,7 +143,7 @@ sequence.append(utils.AssertPresentationAction(
     "17. Line Up",
     ["BRAILLE LINE:  '4 (4 oz.) Foobar Steaks Burgers'",
      "     VISIBLE:  '4 (4 oz.) Foobar Steaks Burgers', cursor=1",
-     "SPEECH OUTPUT: '4 (4 oz.) Foobar Steaks Burgers'"]))
+     "SPEECH OUTPUT: '4 (4 oz.) Foobar Steaks Burgers.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -151,7 +151,7 @@ sequence.append(utils.AssertPresentationAction(
     "18. Line Up",
     ["BRAILLE LINE:  '2 (5 oz.) Top Sirloins'",
      "     VISIBLE:  '2 (5 oz.) Top Sirloins', cursor=1",
-     "SPEECH OUTPUT: '2 (5 oz.) Top Sirloins'"]))
+     "SPEECH OUTPUT: '2 (5 oz.) Top Sirloins.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -159,7 +159,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. Line Up",
     ["BRAILLE LINE:  '2 (5 oz.) Filet Mignons'",
      "     VISIBLE:  '2 (5 oz.) Filet Mignons', cursor=1",
-     "SPEECH OUTPUT: '2 (5 oz.) Filet Mignons'"]))
+     "SPEECH OUTPUT: '2 (5 oz.) Filet Mignons.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -167,7 +167,7 @@ sequence.append(utils.AssertPresentationAction(
     "20. Line Up",
     ["BRAILLE LINE:  'The Ideal Gift Collection'",
      "     VISIBLE:  'The Ideal Gift Collection', cursor=1",
-     "SPEECH OUTPUT: 'The Ideal Gift Collection link'"]))
+     "SPEECH OUTPUT: 'The Ideal Gift Collection link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -199,7 +199,7 @@ sequence.append(utils.AssertPresentationAction(
     "24. Line Up",
     ["BRAILLE LINE:  'Holiday Gift Giving'",
      "     VISIBLE:  'Holiday Gift Giving', cursor=1",
-     "SPEECH OUTPUT: 'Holiday Gift Giving'"]))
+     "SPEECH OUTPUT: 'Holiday Gift Giving.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/line_nav_bug_554616.py b/test/keystrokes/firefox/line_nav_bug_554616.py
index a3e0bb3..0cd9b66 100644
--- a/test/keystrokes/firefox/line_nav_bug_554616.py
+++ b/test/keystrokes/firefox/line_nav_bug_554616.py
@@ -25,8 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
      "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=1",
-     "SPEECH OUTPUT: 'r2477'",
-     "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008'"]))
+     "SPEECH OUTPUT: 'r2477.'",
+     "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -34,8 +34,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'installer (10190 KB)'",
      "     VISIBLE:  'installer (10190 KB)', cursor=1",
-     "SPEECH OUTPUT: 'installer link'",
-     "SPEECH OUTPUT: '(10190 KB)'"]))
+     "SPEECH OUTPUT: 'installer link.'",
+     "SPEECH OUTPUT: '(10190 KB).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -43,8 +43,8 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  'portable archive (9154 KB)'",
      "     VISIBLE:  'portable archive (9154 KB)', cursor=1",
-     "SPEECH OUTPUT: 'portable archive link'",
-     "SPEECH OUTPUT: '(9154 KB)'"]))
+     "SPEECH OUTPUT: 'portable archive link.'",
+     "SPEECH OUTPUT: '(9154 KB).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -52,8 +52,8 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'r2468 Tue Nov 4 16:39:02 2008'",
      "     VISIBLE:  'r2468 Tue Nov 4 16:39:02 2008', cursor=1",
-     "SPEECH OUTPUT: 'r2468'",
-     "SPEECH OUTPUT: 'Tue Nov 4 16:39:02 2008'"]))
+     "SPEECH OUTPUT: 'r2468.'",
+     "SPEECH OUTPUT: 'Tue Nov 4 16:39:02 2008.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -61,8 +61,8 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
     ["BRAILLE LINE:  'installer (10193 KB)'",
      "     VISIBLE:  'installer (10193 KB)', cursor=1",
-     "SPEECH OUTPUT: 'installer link'",
-     "SPEECH OUTPUT: '(10193 KB)'"]))
+     "SPEECH OUTPUT: 'installer link.'",
+     "SPEECH OUTPUT: '(10193 KB).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -70,8 +70,8 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Down",
     ["BRAILLE LINE:  'portable archive (9149 KB)'",
      "     VISIBLE:  'portable archive (9149 KB)', cursor=1",
-     "SPEECH OUTPUT: 'portable archive link'",
-     "SPEECH OUTPUT: '(9149 KB)'"]))
+     "SPEECH OUTPUT: 'portable archive link.'",
+     "SPEECH OUTPUT: '(9149 KB).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -79,8 +79,8 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Up",
     ["BRAILLE LINE:  'installer (10193 KB)'",
      "     VISIBLE:  'installer (10193 KB)', cursor=1",
-     "SPEECH OUTPUT: 'installer link'",
-     "SPEECH OUTPUT: '(10193 KB)'"]))
+     "SPEECH OUTPUT: 'installer link.'",
+     "SPEECH OUTPUT: '(10193 KB).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -88,8 +88,8 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Up",
     ["BRAILLE LINE:  'r2468 Tue Nov 4 16:39:02 2008'",
      "     VISIBLE:  'r2468 Tue Nov 4 16:39:02 2008', cursor=1",
-     "SPEECH OUTPUT: 'r2468'",
-     "SPEECH OUTPUT: 'Tue Nov 4 16:39:02 2008'"]))
+     "SPEECH OUTPUT: 'r2468.'",
+     "SPEECH OUTPUT: 'Tue Nov 4 16:39:02 2008.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -97,8 +97,8 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Up",
     ["BRAILLE LINE:  'portable archive (9154 KB)'",
      "     VISIBLE:  'portable archive (9154 KB)', cursor=1",
-     "SPEECH OUTPUT: 'portable archive link'",
-     "SPEECH OUTPUT: '(9154 KB)'"]))
+     "SPEECH OUTPUT: 'portable archive link.'",
+     "SPEECH OUTPUT: '(9154 KB).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -106,8 +106,8 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Up",
     ["BRAILLE LINE:  'installer (10190 KB)'",
      "     VISIBLE:  'installer (10190 KB)', cursor=1",
-     "SPEECH OUTPUT: 'installer link'",
-     "SPEECH OUTPUT: '(10190 KB)'"]))
+     "SPEECH OUTPUT: 'installer link.'",
+     "SPEECH OUTPUT: '(10190 KB).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -115,8 +115,8 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Up",
     ["BRAILLE LINE:  'r2477 Wed Nov 5 16:39:00 2008'",
      "     VISIBLE:  'r2477 Wed Nov 5 16:39:00 2008', cursor=1",
-     "SPEECH OUTPUT: 'r2477'",
-     "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008'"]))
+     "SPEECH OUTPUT: 'r2477.'",
+     "SPEECH OUTPUT: 'Wed Nov 5 16:39:00 2008.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_bug_555055.py b/test/keystrokes/firefox/line_nav_bug_555055.py
index 70ca493..73a5de0 100644
--- a/test/keystrokes/firefox/line_nav_bug_555055.py
+++ b/test/keystrokes/firefox/line_nav_bug_555055.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Line Down",
     ["BRAILLE LINE:  'Hello world!'",
      "     VISIBLE:  'Hello world!', cursor=1",
-     "SPEECH OUTPUT: 'Hello world!'"]))
+     "SPEECH OUTPUT: 'Hello world!.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -87,7 +87,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  'Here's a cell'",
      "     VISIBLE:  'Here's a cell', cursor=1",
-     "SPEECH OUTPUT: 'Here's a cell'"]))
+     "SPEECH OUTPUT: 'Here's a cell.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -159,7 +159,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. Line Up",
     ["BRAILLE LINE:  'Hello world!'",
      "     VISIBLE:  'Hello world!', cursor=1",
-     "SPEECH OUTPUT: 'Hello world!'"]))
+     "SPEECH OUTPUT: 'Hello world!.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/line_nav_bug_570757.py b/test/keystrokes/firefox/line_nav_bug_570757.py
index 2dc9856..e186041 100644
--- a/test/keystrokes/firefox/line_nav_bug_570757.py
+++ b/test/keystrokes/firefox/line_nav_bug_570757.py
@@ -37,7 +37,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  '• Do this thing'",
      "     VISIBLE:  '• Do this thing', cursor=1",
-     "SPEECH OUTPUT: '• Do this thing'"]))
+     "SPEECH OUTPUT: '• Do this thing.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -45,7 +45,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  '• Do this other thing'",
      "     VISIBLE:  '• Do this other thing', cursor=1",
-     "SPEECH OUTPUT: '• Do this other thing'"]))
+     "SPEECH OUTPUT: '• Do this other thing.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -53,7 +53,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Up",
     ["BRAILLE LINE:  '• Do this thing'",
      "     VISIBLE:  '• Do this thing', cursor=1",
-     "SPEECH OUTPUT: '• Do this thing'"]))
+     "SPEECH OUTPUT: '• Do this thing.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_bug_577239.py b/test/keystrokes/firefox/line_nav_bug_577239.py
index 2db145f..7046a24 100644
--- a/test/keystrokes/firefox/line_nav_bug_577239.py
+++ b/test/keystrokes/firefox/line_nav_bug_577239.py
@@ -27,9 +27,10 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
-    ["BRAILLE LINE:  '1. This is a short list item.'",
+    ["KNOWN ISSUE: The second period is for a pause. We should weed that out.",
+     "BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: '1. This is a short list item. '"]))
+     "SPEECH OUTPUT: '1. This is a short list item. .'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -37,7 +38,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  '2. This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have'",
      "     VISIBLE:  '2. This is a list item that span', cursor=1",
-     "SPEECH OUTPUT: '2. This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have'"]))
+     "SPEECH OUTPUT: '2. This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -45,7 +46,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is'",
      "     VISIBLE:  'read several lines of text withi', cursor=1",
-     "SPEECH OUTPUT: 'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is'"]))
+     "SPEECH OUTPUT: 'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -69,7 +70,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
     ["BRAILLE LINE:  '• This is a short list item.'",
      "     VISIBLE:  '• This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: '• This is a short list item. '"]))
+     "SPEECH OUTPUT: '• This is a short list item. .'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -77,7 +78,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
     ["BRAILLE LINE:  '• This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have'",
      "     VISIBLE:  '• This is a list item that spans', cursor=1",
-     "SPEECH OUTPUT: '• This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have'"]))
+     "SPEECH OUTPUT: '• This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -85,7 +86,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is'",
      "     VISIBLE:  'read several lines of text withi', cursor=1",
-     "SPEECH OUTPUT: 'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is'"]))
+     "SPEECH OUTPUT: 'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -93,7 +94,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Up",
     ["BRAILLE LINE:  '• This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have'",
      "     VISIBLE:  '• This is a list item that spans', cursor=1",
-     "SPEECH OUTPUT: '• This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have'"]))
+     "SPEECH OUTPUT: '• This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -101,7 +102,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Up",
     ["BRAILLE LINE:  '• This is a short list item.'",
      "     VISIBLE:  '• This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: '• This is a short list item. '"]))
+     "SPEECH OUTPUT: '• This is a short list item. .'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -125,7 +126,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Line Up",
     ["BRAILLE LINE:  'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is'",
      "     VISIBLE:  'read several lines of text withi', cursor=1",
-     "SPEECH OUTPUT: 'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is'"]))
+     "SPEECH OUTPUT: 'read several lines of text within this single item. And, yes, I realize that this is 
not deathless prose. In fact, it is.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -133,7 +134,7 @@ sequence.append(utils.AssertPresentationAction(
     "16. Line Up",
     ["BRAILLE LINE:  '2. This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have'",
      "     VISIBLE:  '2. This is a list item that span', cursor=1",
-     "SPEECH OUTPUT: '2. This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have'"]))
+     "SPEECH OUTPUT: '2. This is a list item that spans multiple lines. If Orca can successfully read to the 
end of this list item, it will have.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -141,7 +142,7 @@ sequence.append(utils.AssertPresentationAction(
     "17. Line Up",
     ["BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: '1. This is a short list item. '"]))
+     "SPEECH OUTPUT: '1. This is a short list item. .'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_bugzilla_search_down.py 
b/test/keystrokes/firefox/line_nav_bugzilla_search_down.py
index 3b9e982..77d2e09 100644
--- a/test/keystrokes/firefox/line_nav_bugzilla_search_down.py
+++ b/test/keystrokes/firefox/line_nav_bugzilla_search_down.py
@@ -23,21 +23,21 @@ sequence.append(utils.AssertPresentationAction(
     "1. Line Down",
     ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs 
gmail com | Log Out'",
      "     VISIBLE:  'New bug · Browse · Search · Repo', cursor=1",
-     "SPEECH OUTPUT: 'New bug link'",
+     "SPEECH OUTPUT: 'New bug link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Browse link'",
+     "SPEECH OUTPUT: 'Browse link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Search link'",
+     "SPEECH OUTPUT: 'Search link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Reports link'",
+     "SPEECH OUTPUT: 'Reports link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Account link'",
+     "SPEECH OUTPUT: 'Account link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Admin link'",
+     "SPEECH OUTPUT: 'Admin link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Help link'",
+     "SPEECH OUTPUT: 'Help link.'",
      "SPEECH OUTPUT: 'Logged In joanmarie diggs gmail com |'",
-     "SPEECH OUTPUT: 'Log Out link'"]))
+     "SPEECH OUTPUT: 'Log Out link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -45,8 +45,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'Short Bug Search Form Complicated Bug Search Form'",
      "     VISIBLE:  'Short Bug Search Form Complicate', cursor=1",
-     "SPEECH OUTPUT: 'Short Bug Search Form  link'",
-     "SPEECH OUTPUT: 'Complicated Bug Search Form'"]))
+     "SPEECH OUTPUT: 'Short Bug Search Form  link.'",
+     "SPEECH OUTPUT: 'Complicated Bug Search Form.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -54,7 +54,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'Give me some help (reloads page.)'",
      "     VISIBLE:  'Give me some help (reloads page.', cursor=1",
-     "SPEECH OUTPUT: 'Give me some help link'",
+     "SPEECH OUTPUT: 'Give me some help link.'",
      "SPEECH OUTPUT: '(reloads page.)'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -64,7 +64,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Summary: contains all of the words/strings combo box $l Search push button'",
      "     VISIBLE:  'Summary: contains all of the wor', cursor=1",
      "SPEECH OUTPUT: 'Summary: row header'",
-     "SPEECH OUTPUT: 'contains all of the words/strings combo box'",
+     "SPEECH OUTPUT: 'contains all of the words/strings combo box.'",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'Search push button'"]))
 
@@ -82,7 +82,8 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
     ["BRAILLE LINE:  'Admin  list box'",
      "     VISIBLE:  'Admin  list box', cursor=1",
-     "SPEECH OUTPUT: 'Admin  multi-select List with 8 items'"]))
+     "SPEECH OUTPUT: 'Admin .'",
+     "SPEECH OUTPUT: 'multi-select List with 8 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -98,7 +99,8 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
     ["BRAILLE LINE:  'accerciser list box'",
      "     VISIBLE:  'accerciser list box', cursor=1",
-     "SPEECH OUTPUT: 'accerciser multi-select List with 379 items'"]))
+     "SPEECH OUTPUT: 'accerciser.'",
+     "SPEECH OUTPUT: 'multi-select List with 379 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -106,7 +108,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
     ["BRAILLE LINE:  'Component:'",
      "     VISIBLE:  'Component:', cursor=1",
-     "SPEECH OUTPUT: 'Component link'",
+     "SPEECH OUTPUT: 'Component link.'",
      "SPEECH OUTPUT: ': column header'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -115,7 +117,8 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  'abiscan list box'",
      "     VISIBLE:  'abiscan list box', cursor=1",
-     "SPEECH OUTPUT: 'abiscan multi-select List with 1248 items'"]))
+     "SPEECH OUTPUT: 'abiscan.'",
+     "SPEECH OUTPUT: 'multi-select List with 1248 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -131,7 +134,8 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Down",
     ["BRAILLE LINE:  '0.0.1 list box'",
      "     VISIBLE:  '0.0.1 list box', cursor=1",
-     "SPEECH OUTPUT: '0.0.1 multi-select List with 857 items'"]))
+     "SPEECH OUTPUT: '0.0.1.'",
+     "SPEECH OUTPUT: 'multi-select List with 857 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -147,7 +151,8 @@ sequence.append(utils.AssertPresentationAction(
     "14. Line Down",
     ["BRAILLE LINE:  '--- list box'",
      "     VISIBLE:  '--- list box', cursor=1",
-     "SPEECH OUTPUT: '--- multi-select List with 555 items'"]))
+     "SPEECH OUTPUT: '---.'",
+     "SPEECH OUTPUT: 'multi-select List with 555 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -156,7 +161,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'A Comment: contains the string combo box $l'",
      "     VISIBLE:  'A Comment: contains the string c', cursor=1",
      "SPEECH OUTPUT: 'A Comment: row header'",
-     "SPEECH OUTPUT: 'contains the string combo box'",
+     "SPEECH OUTPUT: 'contains the string combo box.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -166,7 +171,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings combo box $l'",
      "     VISIBLE:  'Whiteboard: contains all of the ', cursor=1",
      "SPEECH OUTPUT: 'Whiteboard: row header'",
-     "SPEECH OUTPUT: 'contains all of the words/strings combo box'",
+     "SPEECH OUTPUT: 'contains all of the words/strings combo box.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -175,9 +180,9 @@ sequence.append(utils.AssertPresentationAction(
     "17. Line Down",
     ["BRAILLE LINE:  'Keywords: contains all of the keywords combo box $l'",
      "     VISIBLE:  'Keywords: contains all of the ke', cursor=1",
-     "SPEECH OUTPUT: 'Keywords link'",
+     "SPEECH OUTPUT: 'Keywords link.'",
      "SPEECH OUTPUT: ': row header'",
-     "SPEECH OUTPUT: 'contains all of the keywords combo box'",
+     "SPEECH OUTPUT: 'contains all of the keywords combo box.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -203,7 +208,8 @@ sequence.append(utils.AssertPresentationAction(
     ["KNOWN ISSUE: Should we be doing a different presentation of these selected children?",
      "BRAILLE LINE:  'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO list box'",
      "     VISIBLE:  'UNCONFIRMED NEW ASSIGNED REOPENE', cursor=1",
-     "SPEECH OUTPUT: 'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO multi-select List with 8 items'"]))
+     "SPEECH OUTPUT: 'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO.'",
+     "SPEECH OUTPUT: 'multi-select List with 8 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -219,7 +225,8 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Down",
     ["BRAILLE LINE:  'FIXED list box'",
      "     VISIBLE:  'FIXED list box', cursor=1",
-     "SPEECH OUTPUT: 'FIXED multi-select List with 12 items'"]))
+     "SPEECH OUTPUT: 'FIXED.'",
+     "SPEECH OUTPUT: 'multi-select List with 12 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -235,7 +242,8 @@ sequence.append(utils.AssertPresentationAction(
     "24. Line Down",
     ["BRAILLE LINE:  'blocker list box'",
      "     VISIBLE:  'blocker list box', cursor=1",
-     "SPEECH OUTPUT: 'blocker multi-select List with 7 items'"]))
+     "SPEECH OUTPUT: 'blocker.'",
+     "SPEECH OUTPUT: 'multi-select List with 7 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -251,7 +259,8 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Down",
     ["BRAILLE LINE:  'Immediate list box'",
      "     VISIBLE:  'Immediate list box', cursor=1",
-     "SPEECH OUTPUT: 'Immediate multi-select List with 5 items'"]))
+     "SPEECH OUTPUT: 'Immediate.'",
+     "SPEECH OUTPUT: 'multi-select List with 5 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -267,7 +276,8 @@ sequence.append(utils.AssertPresentationAction(
     "28. Line Down",
     ["BRAILLE LINE:  'All list box'",
      "     VISIBLE:  'All list box', cursor=1",
-     "SPEECH OUTPUT: 'All multi-select List with 21 items'"]))
+     "SPEECH OUTPUT: 'All.'",
+     "SPEECH OUTPUT: 'multi-select List with 21 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -283,7 +293,7 @@ sequence.append(utils.AssertPresentationAction(
     "30. Line Down",
     ["BRAILLE LINE:  'Any one of:'",
      "     VISIBLE:  'Any one of:', cursor=1",
-     "SPEECH OUTPUT: 'Any one of:'"]))
+     "SPEECH OUTPUT: 'Any one of:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -331,7 +341,7 @@ sequence.append(utils.AssertPresentationAction(
     "36. Line Down",
     ["BRAILLE LINE:  'contains combo box'",
      "     VISIBLE:  'contains combo box', cursor=1",
-     "SPEECH OUTPUT: 'contains combo box'"]))
+     "SPEECH OUTPUT: 'contains combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -347,7 +357,7 @@ sequence.append(utils.AssertPresentationAction(
     "38. Line Down",
     ["BRAILLE LINE:  'Any one of:'",
      "     VISIBLE:  'Any one of:', cursor=1",
-     "SPEECH OUTPUT: 'Any one of:'"]))
+     "SPEECH OUTPUT: 'Any one of:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -395,7 +405,7 @@ sequence.append(utils.AssertPresentationAction(
     "44. Line Down",
     ["BRAILLE LINE:  'contains combo box'",
      "     VISIBLE:  'contains combo box', cursor=1",
-     "SPEECH OUTPUT: 'contains combo box'"]))
+     "SPEECH OUTPUT: 'contains combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -419,8 +429,8 @@ sequence.append(utils.AssertPresentationAction(
     "47. Line Down",
     ["BRAILLE LINE:  'Only include combo box bugs numbered:  $l'",
      "     VISIBLE:  'Only include combo box bugs numb', cursor=1",
-     "SPEECH OUTPUT: 'Only include combo box'",
-     "SPEECH OUTPUT: 'bugs numbered:'",
+     "SPEECH OUTPUT: 'Only include combo box.'",
+     "SPEECH OUTPUT: 'bugs numbered:.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -429,7 +439,7 @@ sequence.append(utils.AssertPresentationAction(
     "48. Line Down",
     ["BRAILLE LINE:  '(comma-separated list)'",
      "     VISIBLE:  '(comma-separated list)', cursor=1",
-     "SPEECH OUTPUT: '(comma-separated list)'"]))
+     "SPEECH OUTPUT: '(comma-separated list).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -445,7 +455,7 @@ sequence.append(utils.AssertPresentationAction(
     "50. Line Down",
     ["BRAILLE LINE:  'Only bugs changed between:'",
      "     VISIBLE:  'Only bugs changed between:', cursor=1",
-     "SPEECH OUTPUT: 'Only bugs changed between:'"]))
+     "SPEECH OUTPUT: 'Only bugs changed between:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -471,7 +481,7 @@ sequence.append(utils.AssertPresentationAction(
     "53. Line Down",
     ["BRAILLE LINE:  'where one or more of the following changed:'",
      "     VISIBLE:  'where one or more of the followi', cursor=1",
-     "SPEECH OUTPUT: 'where one or more of the following changed:'"]))
+     "SPEECH OUTPUT: 'where one or more of the following changed:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -479,7 +489,8 @@ sequence.append(utils.AssertPresentationAction(
     "54. Line Down",
     ["BRAILLE LINE:  '[Bug creation] list box'",
      "     VISIBLE:  '[Bug creation] list box', cursor=1",
-     "SPEECH OUTPUT: '[Bug creation] multi-select List with 26 items'"]))
+     "SPEECH OUTPUT: '[Bug creation].'",
+     "SPEECH OUTPUT: 'multi-select List with 26 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -487,7 +498,7 @@ sequence.append(utils.AssertPresentationAction(
     "55. Line Down",
     ["BRAILLE LINE:  'and the new value was:'",
      "     VISIBLE:  'and the new value was:', cursor=1",
-     "SPEECH OUTPUT: 'and the new value was:'"]))
+     "SPEECH OUTPUT: 'and the new value was:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -511,7 +522,8 @@ sequence.append(utils.AssertPresentationAction(
     "58. Line Down",
     ["BRAILLE LINE:  'Unspecified list box'",
      "     VISIBLE:  'Unspecified list box', cursor=1",
-     "SPEECH OUTPUT: 'Unspecified multi-select List with 14 items'"]))
+     "SPEECH OUTPUT: 'Unspecified.'",
+     "SPEECH OUTPUT: 'multi-select List with 14 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -527,7 +539,8 @@ sequence.append(utils.AssertPresentationAction(
     "60. Line Down",
     ["BRAILLE LINE:  'Unspecified list box'",
      "     VISIBLE:  'Unspecified list box', cursor=1",
-     "SPEECH OUTPUT: 'Unspecified multi-select List with 12 items'"]))
+     "SPEECH OUTPUT: 'Unspecified.'",
+     "SPEECH OUTPUT: 'multi-select List with 12 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -536,7 +549,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Sort results by: Reuse same sort as last time combo box'",
      "     VISIBLE:  'Sort results by: Reuse same sort', cursor=1",
      "SPEECH OUTPUT: 'Sort results by:'",
-     "SPEECH OUTPUT: 'Reuse same sort as last time combo box'"]))
+     "SPEECH OUTPUT: 'Reuse same sort as last time combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -584,8 +597,8 @@ sequence.append(utils.AssertPresentationAction(
     "67. Line Down",
     ["BRAILLE LINE:  '--- combo box --- combo box $l Or push button'",
      "     VISIBLE:  '--- combo box --- combo box $l O', cursor=1",
-     "SPEECH OUTPUT: '--- combo box'",
-     "SPEECH OUTPUT: '--- combo box'",
+     "SPEECH OUTPUT: '--- combo box.'",
+     "SPEECH OUTPUT: '--- combo box.'",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'Or push button'"]))
 
@@ -613,15 +626,15 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Saved Searches: My Bugs and Patches | All Orca | Firefox | open orca | Open RFEs'",
      "     VISIBLE:  'Saved Searches: My Bugs and Patc', cursor=1",
      "SPEECH OUTPUT: 'Saved Searches:'",
-     "SPEECH OUTPUT: 'My Bugs and Patches link'",
+     "SPEECH OUTPUT: 'My Bugs and Patches link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'All Orca link'",
+     "SPEECH OUTPUT: 'All Orca link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Firefox link'",
+     "SPEECH OUTPUT: 'Firefox link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'open orca link'",
+     "SPEECH OUTPUT: 'open orca link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Open RFEs link'"]))
+     "SPEECH OUTPUT: 'Open RFEs link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/line_nav_bugzilla_search_up.py 
b/test/keystrokes/firefox/line_nav_bugzilla_search_up.py
index 4f240fa..10cb9ce 100644
--- a/test/keystrokes/firefox/line_nav_bugzilla_search_up.py
+++ b/test/keystrokes/firefox/line_nav_bugzilla_search_up.py
@@ -41,8 +41,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Up",
     ["BRAILLE LINE:  '--- combo box --- combo box $l Or push button'",
      "     VISIBLE:  '--- combo box --- combo box $l O', cursor=1",
-     "SPEECH OUTPUT: '--- combo box'",
-     "SPEECH OUTPUT: '--- combo box'",
+     "SPEECH OUTPUT: '--- combo box.'",
+     "SPEECH OUTPUT: '--- combo box.'",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'Or push button'"]))
 
@@ -93,7 +93,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Sort results by: Reuse same sort as last time combo box'",
      "     VISIBLE:  'Sort results by: Reuse same sort', cursor=1",
      "SPEECH OUTPUT: 'Sort results by:'",
-     "SPEECH OUTPUT: 'Reuse same sort as last time combo box'"]))
+     "SPEECH OUTPUT: 'Reuse same sort as last time combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -101,7 +101,8 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Up",
     ["BRAILLE LINE:  'Unspecified list box'",
      "     VISIBLE:  'Unspecified list box', cursor=1",
-     "SPEECH OUTPUT: 'Unspecified multi-select List with 12 items'"]))
+     "SPEECH OUTPUT: 'Unspecified.'",
+     "SPEECH OUTPUT: 'multi-select List with 12 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -117,7 +118,8 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Up",
     ["BRAILLE LINE:  'Unspecified list box'",
      "     VISIBLE:  'Unspecified list box', cursor=1",
-     "SPEECH OUTPUT: 'Unspecified multi-select List with 14 items'"]))
+     "SPEECH OUTPUT: 'Unspecified.'",
+     "SPEECH OUTPUT: 'multi-select List with 14 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -141,7 +143,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Line Up",
     ["BRAILLE LINE:  'and the new value was:'",
      "     VISIBLE:  'and the new value was:', cursor=1",
-     "SPEECH OUTPUT: 'and the new value was:'"]))
+     "SPEECH OUTPUT: 'and the new value was:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -149,7 +151,8 @@ sequence.append(utils.AssertPresentationAction(
     "16. Line Up",
     ["BRAILLE LINE:  '[Bug creation] list box'",
      "     VISIBLE:  '[Bug creation] list box', cursor=1",
-     "SPEECH OUTPUT: '[Bug creation] multi-select List with 26 items'"]))
+     "SPEECH OUTPUT: '[Bug creation].'",
+     "SPEECH OUTPUT: 'multi-select List with 26 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -157,7 +160,7 @@ sequence.append(utils.AssertPresentationAction(
     "17. Line Up",
     ["BRAILLE LINE:  'where one or more of the following changed:'",
      "     VISIBLE:  'where one or more of the followi', cursor=1",
-     "SPEECH OUTPUT: 'where one or more of the following changed:'"]))
+     "SPEECH OUTPUT: 'where one or more of the following changed:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -183,7 +186,7 @@ sequence.append(utils.AssertPresentationAction(
     "20. Line Up",
     ["BRAILLE LINE:  'Only bugs changed between:'",
      "     VISIBLE:  'Only bugs changed between:', cursor=1",
-     "SPEECH OUTPUT: 'Only bugs changed between:'"]))
+     "SPEECH OUTPUT: 'Only bugs changed between:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -199,7 +202,7 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Up",
     ["BRAILLE LINE:  '(comma-separated list)'",
      "     VISIBLE:  '(comma-separated list)', cursor=1",
-     "SPEECH OUTPUT: '(comma-separated list)'"]))
+     "SPEECH OUTPUT: '(comma-separated list).'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -207,8 +210,8 @@ sequence.append(utils.AssertPresentationAction(
     "23. Line Up",
     ["BRAILLE LINE:  'Only include combo box bugs numbered:  $l'",
      "     VISIBLE:  'Only include combo box bugs numb', cursor=1",
-     "SPEECH OUTPUT: 'Only include combo box'",
-     "SPEECH OUTPUT: 'bugs numbered:'",
+     "SPEECH OUTPUT: 'Only include combo box.'",
+     "SPEECH OUTPUT: 'bugs numbered:.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -233,7 +236,7 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Up",
     ["BRAILLE LINE:  'contains combo box'",
      "     VISIBLE:  'contains combo box', cursor=1",
-     "SPEECH OUTPUT: 'contains combo box'"]))
+     "SPEECH OUTPUT: 'contains combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -281,7 +284,7 @@ sequence.append(utils.AssertPresentationAction(
     "32. Line Up",
     ["BRAILLE LINE:  'Any one of:'",
      "     VISIBLE:  'Any one of:', cursor=1",
-     "SPEECH OUTPUT: 'Any one of:'"]))
+     "SPEECH OUTPUT: 'Any one of:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -297,7 +300,7 @@ sequence.append(utils.AssertPresentationAction(
     "34. Line Up",
     ["BRAILLE LINE:  'contains combo box'",
      "     VISIBLE:  'contains combo box', cursor=1",
-     "SPEECH OUTPUT: 'contains combo box'"]))
+     "SPEECH OUTPUT: 'contains combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -345,7 +348,7 @@ sequence.append(utils.AssertPresentationAction(
     "40. Line Up",
     ["BRAILLE LINE:  'Any one of:'",
      "     VISIBLE:  'Any one of:', cursor=1",
-     "SPEECH OUTPUT: 'Any one of:'"]))
+     "SPEECH OUTPUT: 'Any one of:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -361,7 +364,8 @@ sequence.append(utils.AssertPresentationAction(
     "42. Line Up",
     ["BRAILLE LINE:  'All list box'",
      "     VISIBLE:  'All list box', cursor=1",
-     "SPEECH OUTPUT: 'All multi-select List with 21 items'"]))
+     "SPEECH OUTPUT: 'All.'",
+     "SPEECH OUTPUT: 'multi-select List with 21 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -377,7 +381,8 @@ sequence.append(utils.AssertPresentationAction(
     "44. Line Up",
     ["BRAILLE LINE:  'Immediate list box'",
      "     VISIBLE:  'Immediate list box', cursor=1",
-     "SPEECH OUTPUT: 'Immediate multi-select List with 5 items'"]))
+     "SPEECH OUTPUT: 'Immediate.'",
+     "SPEECH OUTPUT: 'multi-select List with 5 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -393,7 +398,8 @@ sequence.append(utils.AssertPresentationAction(
     "46. Line Up",
     ["BRAILLE LINE:  'blocker list box'",
      "     VISIBLE:  'blocker list box', cursor=1",
-     "SPEECH OUTPUT: 'blocker multi-select List with 7 items'"]))
+     "SPEECH OUTPUT: 'blocker.'",
+     "SPEECH OUTPUT: 'multi-select List with 7 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -409,7 +415,8 @@ sequence.append(utils.AssertPresentationAction(
     "48. Line Up",
     ["BRAILLE LINE:  'FIXED list box'",
      "     VISIBLE:  'FIXED list box', cursor=1",
-     "SPEECH OUTPUT: 'FIXED multi-select List with 12 items'"]))
+     "SPEECH OUTPUT: 'FIXED.'",
+     "SPEECH OUTPUT: 'multi-select List with 12 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -425,7 +432,8 @@ sequence.append(utils.AssertPresentationAction(
     "50. Line Up",
     ["BRAILLE LINE:  'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO list box'",
      "     VISIBLE:  'UNCONFIRMED NEW ASSIGNED REOPENE', cursor=1",
-     "SPEECH OUTPUT: 'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO multi-select List with 8 items'"]))
+     "SPEECH OUTPUT: 'UNCONFIRMED NEW ASSIGNED REOPENED NEEDINFO.'",
+     "SPEECH OUTPUT: 'multi-select List with 8 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -449,9 +457,9 @@ sequence.append(utils.AssertPresentationAction(
     "53. Line Up",
     ["BRAILLE LINE:  'Keywords: contains all of the keywords combo box $l'",
      "     VISIBLE:  'Keywords: contains all of the ke', cursor=1",
-     "SPEECH OUTPUT: 'Keywords link'",
+     "SPEECH OUTPUT: 'Keywords link.'",
      "SPEECH OUTPUT: ': row header'",
-     "SPEECH OUTPUT: 'contains all of the keywords combo box'",
+     "SPEECH OUTPUT: 'contains all of the keywords combo box.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -461,7 +469,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Whiteboard: contains all of the words/strings combo box $l'",
      "     VISIBLE:  'Whiteboard: contains all of the ', cursor=1",
      "SPEECH OUTPUT: 'Whiteboard: row header'",
-     "SPEECH OUTPUT: 'contains all of the words/strings combo box'",
+     "SPEECH OUTPUT: 'contains all of the words/strings combo box.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -471,7 +479,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'A Comment: contains the string combo box $l'",
      "     VISIBLE:  'A Comment: contains the string c', cursor=1",
      "SPEECH OUTPUT: 'A Comment: row header'",
-     "SPEECH OUTPUT: 'contains the string combo box'",
+     "SPEECH OUTPUT: 'contains the string combo box.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -480,7 +488,8 @@ sequence.append(utils.AssertPresentationAction(
     "56. Line Up",
     ["BRAILLE LINE:  '--- list box'",
      "     VISIBLE:  '--- list box', cursor=1",
-     "SPEECH OUTPUT: '--- multi-select List with 555 items'"]))
+     "SPEECH OUTPUT: '---.'",
+     "SPEECH OUTPUT: 'multi-select List with 555 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -496,7 +505,8 @@ sequence.append(utils.AssertPresentationAction(
     "58. Line Up",
     ["BRAILLE LINE:  '0.0.1 list box'",
      "     VISIBLE:  '0.0.1 list box', cursor=1",
-     "SPEECH OUTPUT: '0.0.1 multi-select List with 857 items'"]))
+     "SPEECH OUTPUT: '0.0.1.'",
+     "SPEECH OUTPUT: 'multi-select List with 857 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -512,7 +522,8 @@ sequence.append(utils.AssertPresentationAction(
     "60. Line Up",
     ["BRAILLE LINE:  'abiscan list box'",
      "     VISIBLE:  'abiscan list box', cursor=1",
-     "SPEECH OUTPUT: 'abiscan multi-select List with 1248 items'"]))
+     "SPEECH OUTPUT: 'abiscan.'",
+     "SPEECH OUTPUT: 'multi-select List with 1248 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -520,7 +531,7 @@ sequence.append(utils.AssertPresentationAction(
     "61. Line Up",
     ["BRAILLE LINE:  'Component:'",
      "     VISIBLE:  'Component:', cursor=1",
-     "SPEECH OUTPUT: 'Component link'",
+     "SPEECH OUTPUT: 'Component link.'",
      "SPEECH OUTPUT: ': column header'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -529,7 +540,8 @@ sequence.append(utils.AssertPresentationAction(
     "62. Line Up",
     ["BRAILLE LINE:  'accerciser list box'",
      "     VISIBLE:  'accerciser list box', cursor=1",
-     "SPEECH OUTPUT: 'accerciser multi-select List with 379 items'"]))
+     "SPEECH OUTPUT: 'accerciser.'",
+     "SPEECH OUTPUT: 'multi-select List with 379 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -545,7 +557,8 @@ sequence.append(utils.AssertPresentationAction(
     "64. Line Up",
     ["BRAILLE LINE:  'Admin  list box'",
      "     VISIBLE:  'Admin  list box', cursor=1",
-     "SPEECH OUTPUT: 'Admin  multi-select List with 8 items'"]))
+     "SPEECH OUTPUT: 'Admin .'",
+     "SPEECH OUTPUT: 'multi-select List with 8 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -562,7 +575,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Summary: contains all of the words/strings combo box $l Search push button'",
      "     VISIBLE:  'Summary: contains all of the wor', cursor=1",
      "SPEECH OUTPUT: 'Summary: row header'",
-     "SPEECH OUTPUT: 'contains all of the words/strings combo box'",
+     "SPEECH OUTPUT: 'contains all of the words/strings combo box.'",
      "SPEECH OUTPUT: 'entry'",
      "SPEECH OUTPUT: 'Search push button'"]))
 
@@ -572,7 +585,7 @@ sequence.append(utils.AssertPresentationAction(
     "67. Line Up",
     ["BRAILLE LINE:  'Give me some help (reloads page.)'",
      "     VISIBLE:  'Give me some help (reloads page.', cursor=1",
-     "SPEECH OUTPUT: 'Give me some help link'",
+     "SPEECH OUTPUT: 'Give me some help link.'",
      "SPEECH OUTPUT: '(reloads page.)'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -581,8 +594,8 @@ sequence.append(utils.AssertPresentationAction(
     "68. Line Up",
     ["BRAILLE LINE:  'Short Bug Search Form Complicated Bug Search Form'",
      "     VISIBLE:  'Short Bug Search Form Complicate', cursor=1",
-     "SPEECH OUTPUT: 'Short Bug Search Form  link'",
-     "SPEECH OUTPUT: 'Complicated Bug Search Form'"]))
+     "SPEECH OUTPUT: 'Short Bug Search Form  link.'",
+     "SPEECH OUTPUT: 'Complicated Bug Search Form.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -590,21 +603,21 @@ sequence.append(utils.AssertPresentationAction(
     "69. Line Up",
     ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs 
gmail com | Log Out'",
      "     VISIBLE:  'New bug · Browse · Search · Repo', cursor=1",
-     "SPEECH OUTPUT: 'New bug link'",
+     "SPEECH OUTPUT: 'New bug link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Browse link'",
+     "SPEECH OUTPUT: 'Browse link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Search link'",
+     "SPEECH OUTPUT: 'Search link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Reports link'",
+     "SPEECH OUTPUT: 'Reports link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Account link'",
+     "SPEECH OUTPUT: 'Account link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Admin link'",
+     "SPEECH OUTPUT: 'Admin link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Help link'",
+     "SPEECH OUTPUT: 'Help link.'",
      "SPEECH OUTPUT: 'Logged In joanmarie diggs gmail com |'",
-     "SPEECH OUTPUT: 'Log Out link'"]))
+     "SPEECH OUTPUT: 'Log Out link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/line_nav_descriptions.py 
b/test/keystrokes/firefox/line_nav_descriptions.py
index e2b4c14..9028c15 100644
--- a/test/keystrokes/firefox/line_nav_descriptions.py
+++ b/test/keystrokes/firefox/line_nav_descriptions.py
@@ -18,11 +18,11 @@ sequence.append(utils.AssertPresentationAction(
     "1. Line Down",
     ["BRAILLE LINE:  'Foo, Bar, and Baz.'",
      "     VISIBLE:  'Foo, Bar, and Baz.', cursor=1",
-     "SPEECH OUTPUT: 'Foo link'",
+     "SPEECH OUTPUT: 'Foo link.'",
      "SPEECH OUTPUT: ','",
-     "SPEECH OUTPUT: 'Bar link'",
+     "SPEECH OUTPUT: 'Bar link.'",
      "SPEECH OUTPUT: ', and'",
-     "SPEECH OUTPUT: 'Baz link'",
+     "SPEECH OUTPUT: 'Baz link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(KeyComboAction("Down"))
diff --git a/test/keystrokes/firefox/line_nav_display_table_cell.py 
b/test/keystrokes/firefox/line_nav_display_table_cell.py
index 8f143c7..0e25fb7 100644
--- a/test/keystrokes/firefox/line_nav_display_table_cell.py
+++ b/test/keystrokes/firefox/line_nav_display_table_cell.py
@@ -23,7 +23,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'line 2'",
      "     VISIBLE:  'line 2', cursor=1",
-     "SPEECH OUTPUT: 'line 2'"]))
+     "SPEECH OUTPUT: 'line 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_empty_anchor.py 
b/test/keystrokes/firefox/line_nav_empty_anchor.py
index ecf5d84..b5887ac 100644
--- a/test/keystrokes/firefox/line_nav_empty_anchor.py
+++ b/test/keystrokes/firefox/line_nav_empty_anchor.py
@@ -34,7 +34,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'Q. What's a battery?'",
      "     VISIBLE:  'Q. What's a battery?', cursor=1",
-     "SPEECH OUTPUT: 'Q. What's a battery? link'"]))
+     "SPEECH OUTPUT: 'Q. What's a battery? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -42,7 +42,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  'Q. Which way is up?'",
      "     VISIBLE:  'Q. Which way is up?', cursor=1",
-     "SPEECH OUTPUT: 'Q. Which way is up? link'"]))
+     "SPEECH OUTPUT: 'Q. Which way is up? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -50,7 +50,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'Q. Why did Orca used to get stuck on this page?'",
      "     VISIBLE:  'Q. Why did Orca used to get stuc', cursor=1",
-     "SPEECH OUTPUT: 'Q. Why did Orca used to get stuck on this page? link'"]))
+     "SPEECH OUTPUT: 'Q. Why did Orca used to get stuck on this page? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -67,7 +67,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Down",
     ["BRAILLE LINE:  'Q. Why would someone put a line break in a heading?'",
      "     VISIBLE:  'Q. Why would someone put a line ', cursor=1",
-     "SPEECH OUTPUT: 'Q. Why would someone put a line break in a heading? link'"]))
+     "SPEECH OUTPUT: 'Q. Why would someone put a line break in a heading? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -75,7 +75,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
     ["BRAILLE LINE:  'Q. What is the airspeed velocity of an unladen swallow?'",
      "     VISIBLE:  'Q. What is the airspeed velocity', cursor=1",
-     "SPEECH OUTPUT: 'Q. What is the airspeed velocity of an unladen swallow? link'"]))
+     "SPEECH OUTPUT: 'Q. What is the airspeed velocity of an unladen swallow? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -187,7 +187,7 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Up",
     ["BRAILLE LINE:  'Q. What is the airspeed velocity of an unladen swallow?'",
      "     VISIBLE:  'Q. What is the airspeed velocity', cursor=1",
-     "SPEECH OUTPUT: 'Q. What is the airspeed velocity of an unladen swallow? link'"]))
+     "SPEECH OUTPUT: 'Q. What is the airspeed velocity of an unladen swallow? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -195,7 +195,7 @@ sequence.append(utils.AssertPresentationAction(
     "23. Line Up",
     ["BRAILLE LINE:  'Q. Why would someone put a line break in a heading?'",
      "     VISIBLE:  'Q. Why would someone put a line ', cursor=1",
-     "SPEECH OUTPUT: 'Q. Why would someone put a line break in a heading? link'"]))
+     "SPEECH OUTPUT: 'Q. Why would someone put a line break in a heading? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -212,7 +212,7 @@ sequence.append(utils.AssertPresentationAction(
     "25. Line Up",
     ["BRAILLE LINE:  'Q. Why did Orca used to get stuck on this page?'",
      "     VISIBLE:  'Q. Why did Orca used to get stuc', cursor=1",
-     "SPEECH OUTPUT: 'Q. Why did Orca used to get stuck on this page? link'"]))
+     "SPEECH OUTPUT: 'Q. Why did Orca used to get stuck on this page? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -220,7 +220,7 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Up",
     ["BRAILLE LINE:  'Q. Which way is up?'",
      "     VISIBLE:  'Q. Which way is up?', cursor=1",
-     "SPEECH OUTPUT: 'Q. Which way is up? link'"]))
+     "SPEECH OUTPUT: 'Q. Which way is up? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -228,7 +228,7 @@ sequence.append(utils.AssertPresentationAction(
     "27. Line Up",
     ["BRAILLE LINE:  'Q. What's a battery?'",
      "     VISIBLE:  'Q. What's a battery?', cursor=1",
-     "SPEECH OUTPUT: 'Q. What's a battery? link'"]))
+     "SPEECH OUTPUT: 'Q. What's a battery? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_enter_bug.py b/test/keystrokes/firefox/line_nav_enter_bug.py
index 0a89b7b..2d35326 100644
--- a/test/keystrokes/firefox/line_nav_enter_bug.py
+++ b/test/keystrokes/firefox/line_nav_enter_bug.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
     ["BRAILLE LINE:  'Home Bugzilla'",
      "     VISIBLE:  'Home Bugzilla', cursor=1",
-     "SPEECH OUTPUT: 'Home link'",
+     "SPEECH OUTPUT: 'Home link.'",
      "SPEECH OUTPUT: 'Bugzilla'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -24,21 +24,21 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs 
gmail com | Log Out'",
      "     VISIBLE:  'New bug · Browse · Search · Repo', cursor=1",
-     "SPEECH OUTPUT: 'New bug link'",
+     "SPEECH OUTPUT: 'New bug link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Browse link'",
+     "SPEECH OUTPUT: 'Browse link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Search link'",
+     "SPEECH OUTPUT: 'Search link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Reports link'",
+     "SPEECH OUTPUT: 'Reports link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Account link'",
+     "SPEECH OUTPUT: 'Account link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Admin link'",
+     "SPEECH OUTPUT: 'Admin link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Help link'",
+     "SPEECH OUTPUT: 'Help link.'",
      "SPEECH OUTPUT: 'Logged In joanmarie diggs gmail com |'",
-     "SPEECH OUTPUT: 'Log Out link'"]))
+     "SPEECH OUTPUT: 'Log Out link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -62,9 +62,9 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'Before reporting a bug, please read the bug writing guidelines,'",
      "     VISIBLE:  'Before reporting a bug, please r', cursor=1",
-     "SPEECH OUTPUT: 'Before reporting a bug, please read the'",
-     "SPEECH OUTPUT: 'bug writing guidelines link'",
-     "SPEECH OUTPUT: ','"]))
+     "SPEECH OUTPUT: 'Before reporting a bug, please read the.'",
+     "SPEECH OUTPUT: 'bug writing guidelines link.'",
+     "SPEECH OUTPUT: ',.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -72,9 +72,9 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
     ["BRAILLE LINE:  'please look at the list of most frequently reported bugs, and please'",
      "     VISIBLE:  'please look at the list of most ', cursor=1",
-     "SPEECH OUTPUT: 'please look at the list of'",
-     "SPEECH OUTPUT: 'most frequently reported bugs link'",
-     "SPEECH OUTPUT: ', and please'"]))
+     "SPEECH OUTPUT: 'please look at the list of.'",
+     "SPEECH OUTPUT: 'most frequently reported bugs link.'",
+     "SPEECH OUTPUT: ', and please.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -82,9 +82,9 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Down",
     ["BRAILLE LINE:  'search or browse for the bug.'",
      "     VISIBLE:  'search or browse for the bug.', cursor=1",
-     "SPEECH OUTPUT: 'search link'",
-     "SPEECH OUTPUT: 'or'",
-     "SPEECH OUTPUT: 'browse link'",
+     "SPEECH OUTPUT: 'search link.'",
+     "SPEECH OUTPUT: 'or.'",
+     "SPEECH OUTPUT: 'browse link.'",
      "SPEECH OUTPUT: 'for the bug.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -93,10 +93,10 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
     ["BRAILLE LINE:  'Reporter: joanmarie diggs gmail com Product: orca'",
      "     VISIBLE:  'Reporter: joanmarie diggs gmail ', cursor=1",
-     "SPEECH OUTPUT: 'Reporter:'",
-     "SPEECH OUTPUT: 'joanmarie diggs gmail com'",
-     "SPEECH OUTPUT: 'Product:'",
-     "SPEECH OUTPUT: 'orca'"]))
+     "SPEECH OUTPUT: 'Reporter:.'",
+     "SPEECH OUTPUT: 'joanmarie diggs gmail com '",
+     "SPEECH OUTPUT: 'Product:.'",
+     "SPEECH OUTPUT: 'orca.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -104,7 +104,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
     ["BRAILLE LINE:  'Version:'",
      "     VISIBLE:  'Version:', cursor=1",
-     "SPEECH OUTPUT: 'Version:'"]))
+     "SPEECH OUTPUT: 'Version:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -112,7 +112,8 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  '2.21.x  list box'",
      "     VISIBLE:  '2.21.x  list box', cursor=1",
-     "SPEECH OUTPUT: '2.21.x  List with 9 items'"]))
+     "SPEECH OUTPUT: '2.21.x .'",
+     "SPEECH OUTPUT: 'List with 9 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -120,8 +121,8 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Down",
     ["BRAILLE LINE:  'Component:'",
      "     VISIBLE:  'Component:', cursor=1",
-     "SPEECH OUTPUT: 'Component link'",
-     "SPEECH OUTPUT: ':'"]))
+     "SPEECH OUTPUT: 'Component link.'",
+     "SPEECH OUTPUT: ':.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -129,7 +130,8 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Down",
     ["BRAILLE LINE:  'braille  list box'",
      "     VISIBLE:  'braille  list box', cursor=1",
-     "SPEECH OUTPUT: 'braille  List with 5 items'"]))
+     "SPEECH OUTPUT: 'braille .'",
+     "SPEECH OUTPUT: 'List with 5 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -138,7 +140,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'GNOME'",
      "     VISIBLE:  'GNOME', cursor=1",
      "SPEECH OUTPUT: 'GNOME'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -147,8 +149,8 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'version:'",
      "     VISIBLE:  'version:', cursor=1",
      "SPEECH OUTPUT: 'version'",
-     "SPEECH OUTPUT: 'link'",
-     "SPEECH OUTPUT: ':'"]))
+     "SPEECH OUTPUT: 'link.'",
+     "SPEECH OUTPUT: ':.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -156,7 +158,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Line Down",
     ["BRAILLE LINE:  'Unspecified combo box'",
      "     VISIBLE:  'Unspecified combo box', cursor=1",
-     "SPEECH OUTPUT: 'Unspecified combo box'"]))
+     "SPEECH OUTPUT: 'Unspecified combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -164,9 +166,9 @@ sequence.append(utils.AssertPresentationAction(
     "16. Line Down",
     ["BRAILLE LINE:  'OS: Linux combo box'",
      "     VISIBLE:  'OS: Linux combo box', cursor=1",
-     "SPEECH OUTPUT: 'OS link'",
-     "SPEECH OUTPUT: ':'",
-     "SPEECH OUTPUT: 'Linux combo box'"]))
+     "SPEECH OUTPUT: 'OS link.'",
+     "SPEECH OUTPUT: ':.'",
+     "SPEECH OUTPUT: 'Linux combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -174,9 +176,9 @@ sequence.append(utils.AssertPresentationAction(
     "17. Line Down",
     ["BRAILLE LINE:  'Severity: normal combo box'",
      "     VISIBLE:  'Severity: normal combo box', cursor=1",
-     "SPEECH OUTPUT: 'Severity link'",
-     "SPEECH OUTPUT: ':'",
-     "SPEECH OUTPUT: 'normal combo box'"]))
+     "SPEECH OUTPUT: 'Severity link.'",
+     "SPEECH OUTPUT: ':.'",
+     "SPEECH OUTPUT: 'normal combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -184,7 +186,7 @@ sequence.append(utils.AssertPresentationAction(
     "18. Line Down",
     ["BRAILLE LINE:  'Summary: $l'",
      "     VISIBLE:  'Summary: $l', cursor=1",
-     "SPEECH OUTPUT: 'Summary:'",
+     "SPEECH OUTPUT: 'Summary:.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -193,7 +195,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. Line Down",
     ["BRAILLE LINE:  'Description:'",
      "     VISIBLE:  'Description:', cursor=1",
-     "SPEECH OUTPUT: 'Description:'"]))
+     "SPEECH OUTPUT: 'Description:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -209,7 +211,7 @@ sequence.append(utils.AssertPresentationAction(
     "21. Line Down",
     ["BRAILLE LINE:  'Optional Fields'",
      "     VISIBLE:  'Optional Fields', cursor=1",
-     "SPEECH OUTPUT: 'Optional Fields'"]))
+     "SPEECH OUTPUT: 'Optional Fields.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -217,7 +219,7 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Down",
     ["BRAILLE LINE:  'Cc: $l'",
      "     VISIBLE:  'Cc: $l', cursor=1",
-     "SPEECH OUTPUT: 'Cc:'",
+     "SPEECH OUTPUT: 'Cc:.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -226,8 +228,8 @@ sequence.append(utils.AssertPresentationAction(
     "23. Line Down",
     ["BRAILLE LINE:  'Keywords:  $l'",
      "     VISIBLE:  'Keywords:  $l', cursor=1",
-     "SPEECH OUTPUT: 'Keywords link'",
-     "SPEECH OUTPUT: ':'",
+     "SPEECH OUTPUT: 'Keywords link.'",
+     "SPEECH OUTPUT: ':.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -236,7 +238,7 @@ sequence.append(utils.AssertPresentationAction(
     "24. Line Down",
     ["BRAILLE LINE:  'Depends'",
      "     VISIBLE:  'Depends', cursor=1",
-     "SPEECH OUTPUT: 'Depends'"]))
+     "SPEECH OUTPUT: 'Depends.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -244,8 +246,8 @@ sequence.append(utils.AssertPresentationAction(
     "25. Line Up",
     ["BRAILLE LINE:  'Keywords:  $l'",
      "     VISIBLE:  'Keywords:  $l', cursor=1",
-     "SPEECH OUTPUT: 'Keywords link'",
-     "SPEECH OUTPUT: ':'",
+     "SPEECH OUTPUT: 'Keywords link.'",
+     "SPEECH OUTPUT: ':.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -254,7 +256,7 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Up",
     ["BRAILLE LINE:  'Cc: $l'",
      "     VISIBLE:  'Cc: $l', cursor=1",
-     "SPEECH OUTPUT: 'Cc:'",
+     "SPEECH OUTPUT: 'Cc:.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -263,7 +265,7 @@ sequence.append(utils.AssertPresentationAction(
     "27. Line Up",
     ["BRAILLE LINE:  'Optional Fields'",
      "     VISIBLE:  'Optional Fields', cursor=1",
-     "SPEECH OUTPUT: 'Optional Fields'"]))
+     "SPEECH OUTPUT: 'Optional Fields.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -279,7 +281,7 @@ sequence.append(utils.AssertPresentationAction(
     "29. Line Up",
     ["BRAILLE LINE:  'Description:'",
      "     VISIBLE:  'Description:', cursor=1",
-     "SPEECH OUTPUT: 'Description:'"]))
+     "SPEECH OUTPUT: 'Description:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -287,7 +289,7 @@ sequence.append(utils.AssertPresentationAction(
     "30. Line Up",
     ["BRAILLE LINE:  'Summary: $l'",
      "     VISIBLE:  'Summary: $l', cursor=1",
-     "SPEECH OUTPUT: 'Summary:'",
+     "SPEECH OUTPUT: 'Summary:.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -296,9 +298,9 @@ sequence.append(utils.AssertPresentationAction(
     "31. Line Up",
     ["BRAILLE LINE:  'Severity: normal combo box'",
      "     VISIBLE:  'Severity: normal combo box', cursor=1",
-     "SPEECH OUTPUT: 'Severity link'",
-     "SPEECH OUTPUT: ':'",
-     "SPEECH OUTPUT: 'normal combo box'"]))
+     "SPEECH OUTPUT: 'Severity link.'",
+     "SPEECH OUTPUT: ':.'",
+     "SPEECH OUTPUT: 'normal combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -306,9 +308,9 @@ sequence.append(utils.AssertPresentationAction(
     "32. Line Up",
     ["BRAILLE LINE:  'OS: Linux combo box'",
      "     VISIBLE:  'OS: Linux combo box', cursor=1",
-     "SPEECH OUTPUT: 'OS link'",
-     "SPEECH OUTPUT: ':'",
-     "SPEECH OUTPUT: 'Linux combo box'"]))
+     "SPEECH OUTPUT: 'OS link.'",
+     "SPEECH OUTPUT: ':.'",
+     "SPEECH OUTPUT: 'Linux combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -316,7 +318,7 @@ sequence.append(utils.AssertPresentationAction(
     "33. Line Up",
     ["BRAILLE LINE:  'Unspecified combo box'",
      "     VISIBLE:  'Unspecified combo box', cursor=1",
-     "SPEECH OUTPUT: 'Unspecified combo box'"]))
+     "SPEECH OUTPUT: 'Unspecified combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -324,9 +326,9 @@ sequence.append(utils.AssertPresentationAction(
     "34. Line Up",
     ["BRAILLE LINE:  'version:'",
      "     VISIBLE:  'version:', cursor=1",
-     "SPEECH OUTPUT: 'version",
-     "SPEECH OUTPUT: 'link'",
-     "SPEECH OUTPUT: ':'"]))
+     "SPEECH OUTPUT: 'version'",
+     "SPEECH OUTPUT: 'link.'",
+     "SPEECH OUTPUT: ':.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -335,7 +337,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'GNOME'",
      "     VISIBLE:  'GNOME', cursor=1",
      "SPEECH OUTPUT: 'GNOME'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -343,7 +345,8 @@ sequence.append(utils.AssertPresentationAction(
     "36. Line Up",
     ["BRAILLE LINE:  'braille  list box'",
      "     VISIBLE:  'braille  list box', cursor=1",
-     "SPEECH OUTPUT: 'braille  List with 5 items'"]))
+     "SPEECH OUTPUT: 'braille .'",
+     "SPEECH OUTPUT: 'List with 5 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -351,8 +354,8 @@ sequence.append(utils.AssertPresentationAction(
     "37. Line Up",
     ["BRAILLE LINE:  'Component:'",
      "     VISIBLE:  'Component:', cursor=1",
-     "SPEECH OUTPUT: 'Component link'",
-     "SPEECH OUTPUT: ':'"]))
+     "SPEECH OUTPUT: 'Component link.'",
+     "SPEECH OUTPUT: ':.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -360,7 +363,8 @@ sequence.append(utils.AssertPresentationAction(
     "38. Line Up",
     ["BRAILLE LINE:  '2.21.x  list box'",
      "     VISIBLE:  '2.21.x  list box', cursor=1",
-     "SPEECH OUTPUT: '2.21.x  List with 9 items'"]))
+     "SPEECH OUTPUT: '2.21.x .'",
+     "SPEECH OUTPUT: 'List with 9 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -368,7 +372,7 @@ sequence.append(utils.AssertPresentationAction(
     "39. Line Up",
     ["BRAILLE LINE:  'Version:'",
      "     VISIBLE:  'Version:', cursor=1",
-     "SPEECH OUTPUT: 'Version:'"]))
+     "SPEECH OUTPUT: 'Version:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -376,10 +380,10 @@ sequence.append(utils.AssertPresentationAction(
     "40. Line Up",
     ["BRAILLE LINE:  'Reporter: joanmarie diggs gmail com Product: orca'",
      "     VISIBLE:  'Reporter: joanmarie diggs gmail ', cursor=1",
-     "SPEECH OUTPUT: 'Reporter:'",
-     "SPEECH OUTPUT: 'joanmarie diggs gmail com'",
-     "SPEECH OUTPUT: 'Product:'",
-     "SPEECH OUTPUT: 'orca'"]))
+     "SPEECH OUTPUT: 'Reporter:.'",
+     "SPEECH OUTPUT: 'joanmarie diggs gmail com '",
+     "SPEECH OUTPUT: 'Product:.'",
+     "SPEECH OUTPUT: 'orca.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -387,9 +391,9 @@ sequence.append(utils.AssertPresentationAction(
     "41. Line Up",
     ["BRAILLE LINE:  'search or browse for the bug.'",
      "     VISIBLE:  'search or browse for the bug.', cursor=1",
-     "SPEECH OUTPUT: 'search link'",
-     "SPEECH OUTPUT: 'or'",
-     "SPEECH OUTPUT: 'browse link'",
+     "SPEECH OUTPUT: 'search link.'",
+     "SPEECH OUTPUT: 'or.'",
+     "SPEECH OUTPUT: 'browse link.'",
      "SPEECH OUTPUT: 'for the bug.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -398,9 +402,9 @@ sequence.append(utils.AssertPresentationAction(
     "42. Line Up",
     ["BRAILLE LINE:  'please look at the list of most frequently reported bugs, and please'",
      "     VISIBLE:  'please look at the list of most ', cursor=1",
-     "SPEECH OUTPUT: 'please look at the list of'",
-     "SPEECH OUTPUT: 'most frequently reported bugs link'",
-     "SPEECH OUTPUT: ', and please'"]))
+     "SPEECH OUTPUT: 'please look at the list of.'",
+     "SPEECH OUTPUT: 'most frequently reported bugs link.'",
+     "SPEECH OUTPUT: ', and please.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -408,9 +412,9 @@ sequence.append(utils.AssertPresentationAction(
     "43. Line Up",
     ["BRAILLE LINE:  'Before reporting a bug, please read the bug writing guidelines,'",
      "     VISIBLE:  'Before reporting a bug, please r', cursor=1",
-     "SPEECH OUTPUT: 'Before reporting a bug, please read the'",
-     "SPEECH OUTPUT: 'bug writing guidelines link'",
-     "SPEECH OUTPUT: ','"]))
+     "SPEECH OUTPUT: 'Before reporting a bug, please read the.'",
+     "SPEECH OUTPUT: 'bug writing guidelines link.'",
+     "SPEECH OUTPUT: ',.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -434,21 +438,21 @@ sequence.append(utils.AssertPresentationAction(
     "46. Line Up",
     ["BRAILLE LINE:  'New bug · Browse · Search · Reports · Account · Admin · Help Logged In joanmarie diggs 
gmail com | Log Out'",
      "     VISIBLE:  'New bug · Browse · Search · Repo', cursor=1",
-     "SPEECH OUTPUT: 'New bug link'",
+     "SPEECH OUTPUT: 'New bug link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Browse link'",
+     "SPEECH OUTPUT: 'Browse link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Search link'",
+     "SPEECH OUTPUT: 'Search link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Reports link'",
+     "SPEECH OUTPUT: 'Reports link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Account link'",
+     "SPEECH OUTPUT: 'Account link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Admin link'",
+     "SPEECH OUTPUT: 'Admin link.'",
      "SPEECH OUTPUT: '·'",
-     "SPEECH OUTPUT: 'Help link'",
+     "SPEECH OUTPUT: 'Help link.'",
      "SPEECH OUTPUT: 'Logged In joanmarie diggs gmail com |'",
-     "SPEECH OUTPUT: 'Log Out link'"]))
+     "SPEECH OUTPUT: 'Log Out link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -456,7 +460,7 @@ sequence.append(utils.AssertPresentationAction(
     "47. Line Up",
     ["BRAILLE LINE:  'Home Bugzilla'",
      "     VISIBLE:  'Home Bugzilla', cursor=1",
-     "SPEECH OUTPUT: 'Home link'",
+     "SPEECH OUTPUT: 'Home link.'",
      "SPEECH OUTPUT: 'Bugzilla'"]))
 
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/firefox/line_nav_entries.py b/test/keystrokes/firefox/line_nav_entries.py
index 1cbdc89..7aff5a9 100644
--- a/test/keystrokes/firefox/line_nav_entries.py
+++ b/test/keystrokes/firefox/line_nav_entries.py
@@ -26,9 +26,9 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Type something rather amusing here:  $l'",
      "     VISIBLE:  'Type something rather amusing he', cursor=1",
      "SPEECH OUTPUT: 'Type'",
-     "SPEECH OUTPUT: 'something link'",
+     "SPEECH OUTPUT: 'something link.'",
      "SPEECH OUTPUT: 'rather'",
-     "SPEECH OUTPUT: 'amusing link'",
+     "SPEECH OUTPUT: 'amusing link.'",
      "SPEECH OUTPUT: 'here:'",
      "SPEECH OUTPUT: 'entry'"]))
 
@@ -60,7 +60,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  ' $l Am I a label as well?'",
      "     VISIBLE:  ' $l Am I a label as well?', cursor=1",
      "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'Am I a label as well?'"]))
+     "SPEECH OUTPUT: 'Am I a label as well?.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -93,7 +93,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
     ["BRAILLE LINE:  'Distance doesn't count on the left $l'",
      "     VISIBLE:  'Distance doesn't count on the le', cursor=1",
-     "SPEECH OUTPUT: 'Distance doesn't count on the left'",
+     "SPEECH OUTPUT: 'Distance doesn't count on the left.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -118,7 +118,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Down",
     ["BRAILLE LINE:  'First Name'",
      "     VISIBLE:  'First Name', cursor=1",
-     "SPEECH OUTPUT: 'First Name'"]))
+     "SPEECH OUTPUT: 'First Name.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -150,7 +150,7 @@ sequence.append(utils.AssertPresentationAction(
     "16. Line Down",
     ["BRAILLE LINE:  'Last Name'",
      "     VISIBLE:  'Last Name', cursor=1",
-     "SPEECH OUTPUT: 'Last Name'"]))
+     "SPEECH OUTPUT: 'Last Name.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -176,7 +176,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. Line Down",
     ["BRAILLE LINE:  'First name'",
      "     VISIBLE:  'First name', cursor=1",
-     "SPEECH OUTPUT: 'First name'"]))
+     "SPEECH OUTPUT: 'First name.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -184,7 +184,7 @@ sequence.append(utils.AssertPresentationAction(
     "20. Line Down",
     ["BRAILLE LINE:  'Middle'",
      "     VISIBLE:  'Middle', cursor=1",
-     "SPEECH OUTPUT: 'Middle'"]))
+     "SPEECH OUTPUT: 'Middle.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -192,7 +192,7 @@ sequence.append(utils.AssertPresentationAction(
     "21. Line Down",
     ["BRAILLE LINE:  'initial'",
      "     VISIBLE:  'initial', cursor=1",
-     "SPEECH OUTPUT: 'initial'"]))
+     "SPEECH OUTPUT: 'initial.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -200,8 +200,8 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Down",
     ["BRAILLE LINE:  'Last name'",
      "     VISIBLE:  'Last name', cursor=1",
-     "SPEECH OUTPUT: 'Last'",
-     "SPEECH OUTPUT: 'name link'"]))
+     "SPEECH OUTPUT: 'Last.'",
+     "SPEECH OUTPUT: 'name link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -217,7 +217,7 @@ sequence.append(utils.AssertPresentationAction(
     "24. Line Down",
     ["BRAILLE LINE:  'First Name'",
      "     VISIBLE:  'First Name', cursor=1",
-     "SPEECH OUTPUT: 'First Name'"]))
+     "SPEECH OUTPUT: 'First Name.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -225,7 +225,7 @@ sequence.append(utils.AssertPresentationAction(
     "25. Line Down",
     ["BRAILLE LINE:  'Middle'",
      "     VISIBLE:  'Middle', cursor=1",
-     "SPEECH OUTPUT: 'Middle'"]))
+     "SPEECH OUTPUT: 'Middle.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -233,7 +233,7 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Down",
     ["BRAILLE LINE:  'initial'",
      "     VISIBLE:  'initial', cursor=1",
-     "SPEECH OUTPUT: 'initial'"]))
+     "SPEECH OUTPUT: 'initial.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -241,8 +241,8 @@ sequence.append(utils.AssertPresentationAction(
     "27. Line Down",
     ["BRAILLE LINE:  'Last name'",
      "     VISIBLE:  'Last name', cursor=1",
-     "SPEECH OUTPUT: 'Last'",
-     "SPEECH OUTPUT: 'name link'"]))
+     "SPEECH OUTPUT: 'Last.'",
+     "SPEECH OUTPUT: 'name link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -268,8 +268,8 @@ sequence.append(utils.AssertPresentationAction(
     "30. Line Down",
     ["BRAILLE LINE:  'First name Middle'",
      "     VISIBLE:  'First name Middle', cursor=1",
-     "SPEECH OUTPUT: 'First name'",
-     "SPEECH OUTPUT: 'Middle'"]))
+     "SPEECH OUTPUT: 'First name.'",
+     "SPEECH OUTPUT: 'Middle.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -295,8 +295,8 @@ sequence.append(utils.AssertPresentationAction(
     "33. Line Up",
     ["BRAILLE LINE:  'Last name'",
      "     VISIBLE:  'Last name', cursor=1",
-     "SPEECH OUTPUT: 'Last'",
-     "SPEECH OUTPUT: 'name link'"]))
+     "SPEECH OUTPUT: 'Last.'",
+     "SPEECH OUTPUT: 'name link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -304,7 +304,7 @@ sequence.append(utils.AssertPresentationAction(
     "34. Line Up",
     ["BRAILLE LINE:  'initial'",
      "     VISIBLE:  'initial', cursor=1",
-     "SPEECH OUTPUT: 'initial'"]))
+     "SPEECH OUTPUT: 'initial.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -312,7 +312,7 @@ sequence.append(utils.AssertPresentationAction(
     "35. Line Up",
     ["BRAILLE LINE:  'Middle'",
      "     VISIBLE:  'Middle', cursor=1",
-     "SPEECH OUTPUT: 'Middle'"]))
+     "SPEECH OUTPUT: 'Middle.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -320,7 +320,7 @@ sequence.append(utils.AssertPresentationAction(
     "36. Line Up",
     ["BRAILLE LINE:  'First Name'",
      "     VISIBLE:  'First Name', cursor=1",
-     "SPEECH OUTPUT: 'First Name'"]))
+     "SPEECH OUTPUT: 'First Name.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -336,8 +336,8 @@ sequence.append(utils.AssertPresentationAction(
     "38. Line Up",
     ["BRAILLE LINE:  'Last name'",
      "     VISIBLE:  'Last name', cursor=1",
-     "SPEECH OUTPUT: 'Last'",
-     "SPEECH OUTPUT: 'name link'"]))
+     "SPEECH OUTPUT: 'Last.'",
+     "SPEECH OUTPUT: 'name link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -345,7 +345,7 @@ sequence.append(utils.AssertPresentationAction(
     "39. Line Up",
     ["BRAILLE LINE:  'initial'",
      "     VISIBLE:  'initial', cursor=1",
-     "SPEECH OUTPUT: 'initial'"]))
+     "SPEECH OUTPUT: 'initial.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -353,7 +353,7 @@ sequence.append(utils.AssertPresentationAction(
     "40. Line Up",
     ["BRAILLE LINE:  'Middle'",
      "     VISIBLE:  'Middle', cursor=1",
-     "SPEECH OUTPUT: 'Middle'"]))
+     "SPEECH OUTPUT: 'Middle.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -361,7 +361,7 @@ sequence.append(utils.AssertPresentationAction(
     "41. Line Up",
     ["BRAILLE LINE:  'First name'",
      "     VISIBLE:  'First name', cursor=1",
-     "SPEECH OUTPUT: 'First name'"]))
+     "SPEECH OUTPUT: 'First name.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -387,7 +387,7 @@ sequence.append(utils.AssertPresentationAction(
     "44. Line Up",
     ["BRAILLE LINE:  'Last Name'",
      "     VISIBLE:  'Last Name', cursor=1",
-     "SPEECH OUTPUT: 'Last Name'"]))
+     "SPEECH OUTPUT: 'Last Name.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -419,7 +419,7 @@ sequence.append(utils.AssertPresentationAction(
     "48. Line Up",
     ["BRAILLE LINE:  'First Name'",
      "     VISIBLE:  'First Name', cursor=1",
-     "SPEECH OUTPUT: 'First Name'"]))
+     "SPEECH OUTPUT: 'First Name.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -443,7 +443,7 @@ sequence.append(utils.AssertPresentationAction(
     "51. Line Up",
     ["BRAILLE LINE:  'Distance doesn't count on the left $l'",
      "     VISIBLE:  'Distance doesn't count on the le', cursor=1",
-     "SPEECH OUTPUT: 'Distance doesn't count on the left'",
+     "SPEECH OUTPUT: 'Distance doesn't count on the left.'",
      "SPEECH OUTPUT: 'entry'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -478,7 +478,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  ' $l Am I a label as well?'",
      "     VISIBLE:  ' $l Am I a label as well?', cursor=1",
      "SPEECH OUTPUT: 'entry'",
-     "SPEECH OUTPUT: 'Am I a label as well?'"]))
+     "SPEECH OUTPUT: 'Am I a label as well?.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -508,9 +508,9 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Type something rather amusing here:  $l'",
      "     VISIBLE:  'Type something rather amusing he', cursor=1",
      "SPEECH OUTPUT: 'Type'",
-     "SPEECH OUTPUT: 'something link'",
+     "SPEECH OUTPUT: 'something link.'",
      "SPEECH OUTPUT: 'rather'",
-     "SPEECH OUTPUT: 'amusing link'",
+     "SPEECH OUTPUT: 'amusing link.'",
      "SPEECH OUTPUT: 'here:'",
      "SPEECH OUTPUT: 'entry'"]))
 
diff --git a/test/keystrokes/firefox/line_nav_focused_link.py 
b/test/keystrokes/firefox/line_nav_focused_link.py
index ed1dd09..8a7e511 100644
--- a/test/keystrokes/firefox/line_nav_focused_link.py
+++ b/test/keystrokes/firefox/line_nav_focused_link.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Line 2', cursor=1",
      "BRAILLE LINE:  'Line 2'",
      "     VISIBLE:  'Line 2', cursor=1",
-     "SPEECH OUTPUT: 'Line 2 link'"]))
+     "SPEECH OUTPUT: 'Line 2 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -32,7 +32,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '[Line 2]'",
      "     VISIBLE:  '[Line 2]', cursor=1",
      "SPEECH OUTPUT: '['",
-     "SPEECH OUTPUT: 'Line 2 link'",
+     "SPEECH OUTPUT: 'Line 2 link.'",
      "SPEECH OUTPUT: ']'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/line_nav_follow_same_page_link.py 
b/test/keystrokes/firefox/line_nav_follow_same_page_link.py
index 63017ff..c4ef4b2 100644
--- a/test/keystrokes/firefox/line_nav_follow_same_page_link.py
+++ b/test/keystrokes/firefox/line_nav_follow_same_page_link.py
@@ -23,7 +23,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'First item', cursor=1",
      "BRAILLE LINE:  'First item'",
      "     VISIBLE:  'First item', cursor=1",
-     "SPEECH OUTPUT: 'First item link'"]))
+     "SPEECH OUTPUT: 'First item link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Second item', cursor=1",
      "BRAILLE LINE:  'Second item'",
      "     VISIBLE:  'Second item', cursor=1",
-     "SPEECH OUTPUT: 'Second item link'"]))
+     "SPEECH OUTPUT: 'Second item link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Return"))
diff --git a/test/keystrokes/firefox/line_nav_hidden_links.py 
b/test/keystrokes/firefox/line_nav_hidden_links.py
index a76d047..2c514a7 100644
--- a/test/keystrokes/firefox/line_nav_hidden_links.py
+++ b/test/keystrokes/firefox/line_nav_hidden_links.py
@@ -21,7 +21,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'up vote'",
      "     VISIBLE:  'up vote', cursor=1",
-     "SPEECH OUTPUT: 'up vote link'"]))
+     "SPEECH OUTPUT: 'up vote link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -37,7 +37,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  'down vote'",
      "     VISIBLE:  'down vote', cursor=1",
-     "SPEECH OUTPUT: 'down vote link'"]))
+     "SPEECH OUTPUT: 'down vote link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -69,7 +69,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Up",
     ["BRAILLE LINE:  'down vote'",
      "     VISIBLE:  'down vote', cursor=1",
-     "SPEECH OUTPUT: 'down vote link'"]))
+     "SPEECH OUTPUT: 'down vote link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -85,7 +85,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Up",
     ["BRAILLE LINE:  'up vote'",
      "     VISIBLE:  'up vote', cursor=1",
-     "SPEECH OUTPUT: 'up vote link'"]))
+     "SPEECH OUTPUT: 'up vote link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_image_in_link.py 
b/test/keystrokes/firefox/line_nav_image_in_link.py
index 29edf09..3df4388 100644
--- a/test/keystrokes/firefox/line_nav_image_in_link.py
+++ b/test/keystrokes/firefox/line_nav_image_in_link.py
@@ -34,7 +34,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  ' Before Line After'",
      "     VISIBLE:  ' Before Line After', cursor=1",
      "SPEECH OUTPUT: 'Before'",
-     "SPEECH OUTPUT: 'Line link'",
+     "SPEECH OUTPUT: 'Line link.'",
      "SPEECH OUTPUT: 'After'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -52,7 +52,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  ' Before Line After'",
      "     VISIBLE:  ' Before Line After', cursor=1",
      "SPEECH OUTPUT: 'Before'",
-     "SPEECH OUTPUT: 'Line link'",
+     "SPEECH OUTPUT: 'Line link.'",
      "SPEECH OUTPUT: 'After'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/line_nav_imagemap.py b/test/keystrokes/firefox/line_nav_imagemap.py
index 83e6505..2a74d94 100644
--- a/test/keystrokes/firefox/line_nav_imagemap.py
+++ b/test/keystrokes/firefox/line_nav_imagemap.py
@@ -21,33 +21,33 @@ sequence.append(utils.AssertPresentationAction(
     "2. line Down",
     ["BRAILLE LINE:  'Test: z y x w v u t s r q p o n m l k j i h g f e d c b a'",
      "     VISIBLE:  'Test: z y x w v u t s r q p o n ', cursor=1",
-     "SPEECH OUTPUT: 'Test:'",
-     "SPEECH OUTPUT: 'z image map link'",
-     "SPEECH OUTPUT: 'y image map link'",
-     "SPEECH OUTPUT: 'x image map link'",
-     "SPEECH OUTPUT: 'w image map link'",
-     "SPEECH OUTPUT: 'v image map link'",
-     "SPEECH OUTPUT: 'u image map link'",
-     "SPEECH OUTPUT: 't image map link'",
-     "SPEECH OUTPUT: 's image map link'",
-     "SPEECH OUTPUT: 'r image map link'",
-     "SPEECH OUTPUT: 'q image map link'",
-     "SPEECH OUTPUT: 'p image map link'",
-     "SPEECH OUTPUT: 'o image map link'",
-     "SPEECH OUTPUT: 'n image map link'",
-     "SPEECH OUTPUT: 'm image map link'",
-     "SPEECH OUTPUT: 'l image map link'",
-     "SPEECH OUTPUT: 'k image map link'",
-     "SPEECH OUTPUT: 'j image map link'",
-     "SPEECH OUTPUT: 'i image map link'",
-     "SPEECH OUTPUT: 'h image map link'",
-     "SPEECH OUTPUT: 'g image map link'",
-     "SPEECH OUTPUT: 'f image map link'",
-     "SPEECH OUTPUT: 'e image map link'",
-     "SPEECH OUTPUT: 'd image map link'",
-     "SPEECH OUTPUT: 'c image map link'",
-     "SPEECH OUTPUT: 'b image map link'",
-     "SPEECH OUTPUT: 'a image map link'"]))
+     "SPEECH OUTPUT: 'Test:.'",
+     "SPEECH OUTPUT: 'z image map link.'",
+     "SPEECH OUTPUT: 'y image map link.'",
+     "SPEECH OUTPUT: 'x image map link.'",
+     "SPEECH OUTPUT: 'w image map link.'",
+     "SPEECH OUTPUT: 'v image map link.'",
+     "SPEECH OUTPUT: 'u image map link.'",
+     "SPEECH OUTPUT: 't image map link.'",
+     "SPEECH OUTPUT: 's image map link.'",
+     "SPEECH OUTPUT: 'r image map link.'",
+     "SPEECH OUTPUT: 'q image map link.'",
+     "SPEECH OUTPUT: 'p image map link.'",
+     "SPEECH OUTPUT: 'o image map link.'",
+     "SPEECH OUTPUT: 'n image map link.'",
+     "SPEECH OUTPUT: 'm image map link.'",
+     "SPEECH OUTPUT: 'l image map link.'",
+     "SPEECH OUTPUT: 'k image map link.'",
+     "SPEECH OUTPUT: 'j image map link.'",
+     "SPEECH OUTPUT: 'i image map link.'",
+     "SPEECH OUTPUT: 'h image map link.'",
+     "SPEECH OUTPUT: 'g image map link.'",
+     "SPEECH OUTPUT: 'f image map link.'",
+     "SPEECH OUTPUT: 'e image map link.'",
+     "SPEECH OUTPUT: 'd image map link.'",
+     "SPEECH OUTPUT: 'c image map link.'",
+     "SPEECH OUTPUT: 'b image map link.'",
+     "SPEECH OUTPUT: 'a image map link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -63,33 +63,33 @@ sequence.append(utils.AssertPresentationAction(
     "4. line Up",
     ["BRAILLE LINE:  'Test: z y x w v u t s r q p o n m l k j i h g f e d c b a'",
      "     VISIBLE:  'Test: z y x w v u t s r q p o n ', cursor=1",
-     "SPEECH OUTPUT: 'Test:'",
-     "SPEECH OUTPUT: 'z image map link'",
-     "SPEECH OUTPUT: 'y image map link'",
-     "SPEECH OUTPUT: 'x image map link'",
-     "SPEECH OUTPUT: 'w image map link'",
-     "SPEECH OUTPUT: 'v image map link'",
-     "SPEECH OUTPUT: 'u image map link'",
-     "SPEECH OUTPUT: 't image map link'",
-     "SPEECH OUTPUT: 's image map link'",
-     "SPEECH OUTPUT: 'r image map link'",
-     "SPEECH OUTPUT: 'q image map link'",
-     "SPEECH OUTPUT: 'p image map link'",
-     "SPEECH OUTPUT: 'o image map link'",
-     "SPEECH OUTPUT: 'n image map link'",
-     "SPEECH OUTPUT: 'm image map link'",
-     "SPEECH OUTPUT: 'l image map link'",
-     "SPEECH OUTPUT: 'k image map link'",
-     "SPEECH OUTPUT: 'j image map link'",
-     "SPEECH OUTPUT: 'i image map link'",
-     "SPEECH OUTPUT: 'h image map link'",
-     "SPEECH OUTPUT: 'g image map link'",
-     "SPEECH OUTPUT: 'f image map link'",
-     "SPEECH OUTPUT: 'e image map link'",
-     "SPEECH OUTPUT: 'd image map link'",
-     "SPEECH OUTPUT: 'c image map link'",
-     "SPEECH OUTPUT: 'b image map link'",
-     "SPEECH OUTPUT: 'a image map link'"]))
+     "SPEECH OUTPUT: 'Test:.'",
+     "SPEECH OUTPUT: 'z image map link.'",
+     "SPEECH OUTPUT: 'y image map link.'",
+     "SPEECH OUTPUT: 'x image map link.'",
+     "SPEECH OUTPUT: 'w image map link.'",
+     "SPEECH OUTPUT: 'v image map link.'",
+     "SPEECH OUTPUT: 'u image map link.'",
+     "SPEECH OUTPUT: 't image map link.'",
+     "SPEECH OUTPUT: 's image map link.'",
+     "SPEECH OUTPUT: 'r image map link.'",
+     "SPEECH OUTPUT: 'q image map link.'",
+     "SPEECH OUTPUT: 'p image map link.'",
+     "SPEECH OUTPUT: 'o image map link.'",
+     "SPEECH OUTPUT: 'n image map link.'",
+     "SPEECH OUTPUT: 'm image map link.'",
+     "SPEECH OUTPUT: 'l image map link.'",
+     "SPEECH OUTPUT: 'k image map link.'",
+     "SPEECH OUTPUT: 'j image map link.'",
+     "SPEECH OUTPUT: 'i image map link.'",
+     "SPEECH OUTPUT: 'h image map link.'",
+     "SPEECH OUTPUT: 'g image map link.'",
+     "SPEECH OUTPUT: 'f image map link.'",
+     "SPEECH OUTPUT: 'e image map link.'",
+     "SPEECH OUTPUT: 'd image map link.'",
+     "SPEECH OUTPUT: 'c image map link.'",
+     "SPEECH OUTPUT: 'b image map link.'",
+     "SPEECH OUTPUT: 'a image map link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_images_in_links.py 
b/test/keystrokes/firefox/line_nav_images_in_links.py
index 4584b99..bee20af 100644
--- a/test/keystrokes/firefox/line_nav_images_in_links.py
+++ b/test/keystrokes/firefox/line_nav_images_in_links.py
@@ -149,9 +149,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "17. Line Down",
-    ["BRAILLE LINE:  'silly link'",
-     "     VISIBLE:  'silly link', cursor=1",
-     "SPEECH OUTPUT: 'silly link link'"]))
+    ["BRAILLE LINE:  'silly link.'",
+     "     VISIBLE:  'silly link.', cursor=1",
+     "SPEECH OUTPUT: 'silly link link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -169,7 +169,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Two \"useless\" images in a paragr', cursor=1",
      "SPEECH OUTPUT: 'Two \"useless\" images in a paragraph that is inside of a link along with text that is 
not in the paragraph:'",
      "SPEECH OUTPUT: 'Before'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -178,7 +178,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'the paragraph'",
      "     VISIBLE:  'the paragraph', cursor=1",
      "SPEECH OUTPUT: 'the paragraph'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -195,7 +195,7 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Down",
     ["BRAILLE LINE:  'After the paragraph'",
      "     VISIBLE:  'After the paragraph', cursor=1",
-     "SPEECH OUTPUT: 'After the paragraph link'"]))
+     "SPEECH OUTPUT: 'After the paragraph link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -212,7 +212,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'the paragraph: Before the paragraph'",
      "     VISIBLE:  'the paragraph: Before the paragr', cursor=1",
      "SPEECH OUTPUT: 'the paragraph:'",
-     "SPEECH OUTPUT: 'Before the paragraph link'"]))
+     "SPEECH OUTPUT: 'Before the paragraph link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -226,9 +226,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
 sequence.append(utils.AssertPresentationAction(
     "26. Line Down",
-    ["BRAILLE LINE:  'silly link'",
-     "     VISIBLE:  'silly link', cursor=1",
-     "SPEECH OUTPUT: 'silly link link'"]))
+    ["BRAILLE LINE:  'silly link.'",
+     "     VISIBLE:  'silly link.', cursor=1",
+     "SPEECH OUTPUT: 'silly link link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -244,7 +244,7 @@ sequence.append(utils.AssertPresentationAction(
     "28. Line Down",
     ["BRAILLE LINE:  'After the paragraph'",
      "     VISIBLE:  'After the paragraph', cursor=1",
-     "SPEECH OUTPUT: 'After the paragraph link'"]))
+     "SPEECH OUTPUT: 'After the paragraph link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -258,9 +258,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "30. Line Up",
-    ["BRAILLE LINE:  'silly link'",
-     "     VISIBLE:  'silly link', cursor=1",
-     "SPEECH OUTPUT: 'silly link link'"]))
+    ["BRAILLE LINE:  'silly link.'",
+     "     VISIBLE:  'silly link.', cursor=1",
+     "SPEECH OUTPUT: 'silly link link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -277,7 +277,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'the paragraph: Before the paragraph'",
      "     VISIBLE:  'the paragraph: Before the paragr', cursor=1",
      "SPEECH OUTPUT: 'the paragraph:'",
-     "SPEECH OUTPUT: 'Before the paragraph link'"]))
+     "SPEECH OUTPUT: 'Before the paragraph link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -293,7 +293,7 @@ sequence.append(utils.AssertPresentationAction(
     "34. Line Up",
     ["BRAILLE LINE:  'After the paragraph'",
      "     VISIBLE:  'After the paragraph', cursor=1",
-     "SPEECH OUTPUT: 'After the paragraph link'"]))
+     "SPEECH OUTPUT: 'After the paragraph link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -311,7 +311,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'the paragraph'",
      "     VISIBLE:  'the paragraph', cursor=1",
      "SPEECH OUTPUT: 'the paragraph'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -321,7 +321,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Two \"useless\" images in a paragr', cursor=1",
      "SPEECH OUTPUT: 'Two \"useless\" images in a paragraph that is inside of a link along with text that is 
not in the paragraph:'",
      "SPEECH OUTPUT: 'Before'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -335,9 +335,9 @@ sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
 sequence.append(utils.AssertPresentationAction(
     "39. Line Up",
-    ["BRAILLE LINE:  'silly link'",
-     "     VISIBLE:  'silly link', cursor=1",
-     "SPEECH OUTPUT: 'silly link link'"]))
+    ["BRAILLE LINE:  'silly link.'",
+     "     VISIBLE:  'silly link.', cursor=1",
+     "SPEECH OUTPUT: 'silly link link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_link_position_relative_on_focus.py 
b/test/keystrokes/firefox/line_nav_link_position_relative_on_focus.py
index 57d539b..2196e88 100644
--- a/test/keystrokes/firefox/line_nav_link_position_relative_on_focus.py
+++ b/test/keystrokes/firefox/line_nav_link_position_relative_on_focus.py
@@ -23,7 +23,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'Line 2'",
      "     VISIBLE:  'Line 2', cursor=1",
-     "SPEECH OUTPUT: 'Line 2 link'"]))
+     "SPEECH OUTPUT: 'Line 2 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -39,7 +39,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Up",
     ["BRAILLE LINE:  'Line 2'",
      "     VISIBLE:  'Line 2', cursor=1",
-     "SPEECH OUTPUT: 'Line 2 link'"]))
+     "SPEECH OUTPUT: 'Line 2 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_lists.py b/test/keystrokes/firefox/line_nav_lists.py
index 6e94a32..8783ada 100644
--- a/test/keystrokes/firefox/line_nav_lists.py
+++ b/test/keystrokes/firefox/line_nav_lists.py
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
-     "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
+     "SPEECH OUTPUT: '1. remember what the heck we are doing each day.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -41,7 +41,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  '2. arrange long and arbitrary lines of text into ordered lists that are pleasing to 
the eye and suggest some'",
      "     VISIBLE:  '2. arrange long and arbitrary li', cursor=1",
-     "SPEECH OUTPUT: '2. arrange long and arbitrary lines of text into ordered lists that are pleasing to 
the eye and suggest some'"]))
+     "SPEECH OUTPUT: '2. arrange long and arbitrary lines of text into ordered lists that are pleasing to 
the eye and suggest some.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -49,7 +49,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'sense of priority, even if it is artificial'",
      "     VISIBLE:  'sense of priority, even if it is', cursor=1",
-     "SPEECH OUTPUT: 'sense of priority, even if it is artificial'"]))
+     "SPEECH OUTPUT: 'sense of priority, even if it is artificial.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -82,7 +82,7 @@ sequence.append(utils.AssertPresentationAction(
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
      "BRAILLE LINE:  '6. And use roman numerals,'",
      "     VISIBLE:  '6. And use roman numerals,', cursor=1",
-     "SPEECH OUTPUT: '6. And use roman numerals,'"]))
+     "SPEECH OUTPUT: '6. And use roman numerals,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -90,7 +90,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  'g. You might try using letters as well,'",
      "     VISIBLE:  'g. You might try using letters a', cursor=1",
-     "SPEECH OUTPUT: 'g. You might try using letters as well,'"]))
+     "SPEECH OUTPUT: 'g. You might try using letters as well,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -98,7 +98,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Down",
     ["BRAILLE LINE:  'H. Maybe you prefer Big Letters,'",
      "     VISIBLE:  'H. Maybe you prefer Big Letters,', cursor=1",
-     "SPEECH OUTPUT: 'H. Maybe you prefer Big Letters,'"]))
+     "SPEECH OUTPUT: 'H. Maybe you prefer Big Letters,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -107,7 +107,7 @@ sequence.append(utils.AssertPresentationAction(
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
      "BRAILLE LINE:  '9. or small roman numerals'",
      "     VISIBLE:  '9. or small roman numerals', cursor=1",
-     "SPEECH OUTPUT: '9. or small roman numerals'"]))
+     "SPEECH OUTPUT: '9. or small roman numerals.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -115,7 +115,7 @@ sequence.append(utils.AssertPresentationAction(
     "13. Line Up",
     ["BRAILLE LINE:  'H. Maybe you prefer Big Letters,'",
      "     VISIBLE:  'H. Maybe you prefer Big Letters,', cursor=1",
-     "SPEECH OUTPUT: 'H. Maybe you prefer Big Letters,'"]))
+     "SPEECH OUTPUT: 'H. Maybe you prefer Big Letters,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -123,7 +123,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. Line Up",
     ["BRAILLE LINE:  'g. You might try using letters as well,'",
      "     VISIBLE:  'g. You might try using letters a', cursor=1",
-     "SPEECH OUTPUT: 'g. You might try using letters as well,'"]))
+     "SPEECH OUTPUT: 'g. You might try using letters as well,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -132,7 +132,7 @@ sequence.append(utils.AssertPresentationAction(
     ["KNOWN ISSUE: Gecko is not exposing this as a roman numeral.",
      "BRAILLE LINE:  '6. And use roman numerals,'",
      "     VISIBLE:  '6. And use roman numerals,', cursor=1",
-     "SPEECH OUTPUT: '6. And use roman numerals,'"]))
+     "SPEECH OUTPUT: '6. And use roman numerals,.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -164,7 +164,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. Line Up",
     ["BRAILLE LINE:  'sense of priority, even if it is artificial'",
      "     VISIBLE:  'sense of priority, even if it is', cursor=1",
-     "SPEECH OUTPUT: 'sense of priority, even if it is artificial'"]))
+     "SPEECH OUTPUT: 'sense of priority, even if it is artificial.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -172,7 +172,7 @@ sequence.append(utils.AssertPresentationAction(
     "20. Line Up",
     ["BRAILLE LINE:  '2. arrange long and arbitrary lines of text into ordered lists that are pleasing to 
the eye and suggest some'",
      "     VISIBLE:  '2. arrange long and arbitrary li', cursor=1",
-     "SPEECH OUTPUT: '2. arrange long and arbitrary lines of text into ordered lists that are pleasing to 
the eye and suggest some'"]))
+     "SPEECH OUTPUT: '2. arrange long and arbitrary lines of text into ordered lists that are pleasing to 
the eye and suggest some.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -180,7 +180,7 @@ sequence.append(utils.AssertPresentationAction(
     "21. Line Up",
     ["BRAILLE LINE:  '1. remember what the heck we are doing each day'",
      "     VISIBLE:  '1. remember what the heck we are', cursor=1",
-     "SPEECH OUTPUT: '1. remember what the heck we are doing each day'"]))
+     "SPEECH OUTPUT: '1. remember what the heck we are doing each day.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_multi_line_text.py 
b/test/keystrokes/firefox/line_nav_multi_line_text.py
index 07fc515..d77dc79 100644
--- a/test/keystrokes/firefox/line_nav_multi_line_text.py
+++ b/test/keystrokes/firefox/line_nav_multi_line_text.py
@@ -25,8 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'foo bar'",
      "     VISIBLE:  'foo bar', cursor=1",
-     "SPEECH OUTPUT: 'foo'",
-     "SPEECH OUTPUT: 'bar'"]))
+     "SPEECH OUTPUT: 'foo.'",
+     "SPEECH OUTPUT: 'bar.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -34,7 +34,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'foo'",
      "     VISIBLE:  'foo', cursor=1",
-     "SPEECH OUTPUT: 'foo'"]))
+     "SPEECH OUTPUT: 'foo.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -42,7 +42,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  'foo'",
      "     VISIBLE:  'foo', cursor=1",
-     "SPEECH OUTPUT: 'foo'"]))
+     "SPEECH OUTPUT: 'foo.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -50,7 +50,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'bar'",
      "     VISIBLE:  'bar', cursor=1",
-     "SPEECH OUTPUT: 'bar'"]))
+     "SPEECH OUTPUT: 'bar.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -58,7 +58,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
     ["BRAILLE LINE:  'bar'",
      "     VISIBLE:  'bar', cursor=1",
-     "SPEECH OUTPUT: 'bar'"]))
+     "SPEECH OUTPUT: 'bar.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -74,8 +74,8 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
     ["BRAILLE LINE:  '• This is a test that is not very interesting.'",
      "     VISIBLE:  '• This is a test that is not ver', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'This is a test link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'This is a test link.'",
      "SPEECH OUTPUT: 'that is not very interesting.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -84,8 +84,8 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
     ["BRAILLE LINE:  '• But it looks like a real-world example.'",
      "     VISIBLE:  '• But it looks like a real-world', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'But it looks like link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'But it looks like link.'",
      "SPEECH OUTPUT: 'a real-world example.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -94,8 +94,8 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  '• And that's why this silly test is here.'",
      "     VISIBLE:  '• And that's why this silly test', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'And that's link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'And that's link.'",
      "SPEECH OUTPUT: 'why this silly test is here.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -105,7 +105,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'So it's far more interesting than it looks.'",
      "     VISIBLE:  'So it's far more interesting tha', cursor=1",
      "SPEECH OUTPUT: 'So it's'",
-     "SPEECH OUTPUT: 'far more interesting link'",
+     "SPEECH OUTPUT: 'far more interesting link.'",
      "SPEECH OUTPUT: 'than it looks.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -122,8 +122,8 @@ sequence.append(utils.AssertPresentationAction(
     "13. Line Down",
     ["BRAILLE LINE:  '• The thing is we can't copy content.'",
      "     VISIBLE:  '• The thing is we can't copy con', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'The thing is link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'The thing is link.'",
      "SPEECH OUTPUT: 'we can't copy content.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -132,8 +132,8 @@ sequence.append(utils.AssertPresentationAction(
     "14. Line Down",
     ["BRAILLE LINE:  '• So we must create silly tests.'",
      "     VISIBLE:  '• So we must create silly tests.', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'So we must link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'So we must link.'",
      "SPEECH OUTPUT: 'create silly tests.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -142,8 +142,8 @@ sequence.append(utils.AssertPresentationAction(
     "15. Line Down",
     ["BRAILLE LINE:  '• Oh well.'",
      "     VISIBLE:  '• Oh well.', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Oh link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Oh link.'",
      "SPEECH OUTPUT: 'well.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -152,8 +152,8 @@ sequence.append(utils.AssertPresentationAction(
     "16. Line Down",
     ["BRAILLE LINE:  'At least it's over.'",
      "     VISIBLE:  'At least it's over.', cursor=1",
-     "SPEECH OUTPUT: 'At least it's",
-     "SPEECH OUTPUT: 'over link'",
+     "SPEECH OUTPUT: 'At least it's'",
+     "SPEECH OUTPUT: 'over link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -162,8 +162,8 @@ sequence.append(utils.AssertPresentationAction(
     "17. Line Up",
     ["BRAILLE LINE:  '• Oh well.'",
      "     VISIBLE:  '• Oh well.', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Oh link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Oh link.'",
      "SPEECH OUTPUT: 'well.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -172,8 +172,8 @@ sequence.append(utils.AssertPresentationAction(
     "18. Line Up",
     ["BRAILLE LINE:  '• So we must create silly tests.'",
      "     VISIBLE:  '• So we must create silly tests.', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'So we must link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'So we must link.'",
      "SPEECH OUTPUT: 'create silly tests.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -182,8 +182,8 @@ sequence.append(utils.AssertPresentationAction(
     "19. Line Up",
     ["BRAILLE LINE:  '• The thing is we can't copy content.'",
      "     VISIBLE:  '• The thing is we can't copy con', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'The thing is link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'The thing is link.'",
      "SPEECH OUTPUT: 'we can't copy content.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -201,7 +201,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'So it's far more interesting than it looks.'",
      "     VISIBLE:  'So it's far more interesting tha', cursor=1",
      "SPEECH OUTPUT: 'So it's'",
-     "SPEECH OUTPUT: 'far more interesting link'",
+     "SPEECH OUTPUT: 'far more interesting link.'",
      "SPEECH OUTPUT: 'than it looks.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -210,8 +210,8 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Up",
     ["BRAILLE LINE:  '• And that's why this silly test is here.'",
      "     VISIBLE:  '• And that's why this silly test', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'And that's link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'And that's link.'",
      "SPEECH OUTPUT: 'why this silly test is here.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -220,8 +220,8 @@ sequence.append(utils.AssertPresentationAction(
     "23. Line Up",
     ["BRAILLE LINE:  '• But it looks like a real-world example.'",
      "     VISIBLE:  '• But it looks like a real-world', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'But it looks like link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'But it looks like link.'",
      "SPEECH OUTPUT: 'a real-world example.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -230,8 +230,8 @@ sequence.append(utils.AssertPresentationAction(
     "24. Line Up",
     ["BRAILLE LINE:  '• This is a test that is not very interesting.'",
      "     VISIBLE:  '• This is a test that is not ver', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'This is a test link'",
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'This is a test link.'",
      "SPEECH OUTPUT: 'that is not very interesting.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -248,7 +248,7 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Up",
     ["BRAILLE LINE:  'bar'",
      "     VISIBLE:  'bar', cursor=1",
-     "SPEECH OUTPUT: 'bar'"]))
+     "SPEECH OUTPUT: 'bar.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -256,7 +256,7 @@ sequence.append(utils.AssertPresentationAction(
     "27. Line Up",
     ["BRAILLE LINE:  'bar'",
      "     VISIBLE:  'bar', cursor=1",
-     "SPEECH OUTPUT: 'bar'"]))
+     "SPEECH OUTPUT: 'bar.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -264,7 +264,7 @@ sequence.append(utils.AssertPresentationAction(
     "28. Line Up",
     ["BRAILLE LINE:  'foo'",
      "     VISIBLE:  'foo', cursor=1",
-     "SPEECH OUTPUT: 'foo'"]))
+     "SPEECH OUTPUT: 'foo.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -272,7 +272,7 @@ sequence.append(utils.AssertPresentationAction(
     "29. Line Up",
     ["BRAILLE LINE:  'foo'",
      "     VISIBLE:  'foo', cursor=1",
-     "SPEECH OUTPUT: 'foo'"]))
+     "SPEECH OUTPUT: 'foo.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -280,8 +280,8 @@ sequence.append(utils.AssertPresentationAction(
     "30. Line Up",
     ["BRAILLE LINE:  'foo bar'",
      "     VISIBLE:  'foo bar', cursor=1",
-     "SPEECH OUTPUT: 'foo'",
-     "SPEECH OUTPUT: 'bar'"]))
+     "SPEECH OUTPUT: 'foo.'",
+     "SPEECH OUTPUT: 'bar.'"]))
 
 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 cbbd06d..2dbe6a4 100644
--- a/test/keystrokes/firefox/line_nav_nested_tables.py
+++ b/test/keystrokes/firefox/line_nav_nested_tables.py
@@ -25,13 +25,13 @@ sequence.append(utils.AssertPresentationAction(
     "2. line Down",
     ["BRAILLE LINE:  'Campus  .  Classroom  .  Communicate  .  Reports'",
      "     VISIBLE:  'Campus  .  Classroom  .  Communi', cursor=1",
-     "SPEECH OUTPUT: 'Campus link'",
+     "SPEECH OUTPUT: 'Campus link.'",
      "SPEECH OUTPUT: '.'",
-     "SPEECH OUTPUT: 'Classroom link'",
+     "SPEECH OUTPUT: 'Classroom link.'",
      "SPEECH OUTPUT: '.'",
-     "SPEECH OUTPUT: 'Communicate link'",
+     "SPEECH OUTPUT: 'Communicate link.'",
      "SPEECH OUTPUT: '.'",
-     "SPEECH OUTPUT: 'Reports link'"]))
+     "SPEECH OUTPUT: 'Reports link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -55,7 +55,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. line Down",
     ["BRAILLE LINE:  'UNIX 2007'",
      "     VISIBLE:  'UNIX 2007', cursor=1",
-     "SPEECH OUTPUT: 'UNIX 2007'"]))
+     "SPEECH OUTPUT: 'UNIX 2007.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -63,7 +63,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. line Down",
     ["BRAILLE LINE:  'Take Course'",
      "     VISIBLE:  'Take Course', cursor=1",
-     "SPEECH OUTPUT: 'Take Course link'"]))
+     "SPEECH OUTPUT: 'Take Course link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -87,7 +87,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. line Down",
     ["BRAILLE LINE:  'SQL Plus'",
      "     VISIBLE:  'SQL Plus', cursor=1",
-     "SPEECH OUTPUT: 'SQL Plus'"]))
+     "SPEECH OUTPUT: 'SQL Plus.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -95,7 +95,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. line Down",
     ["BRAILLE LINE:  'Take Course'",
      "     VISIBLE:  'Take Course', cursor=1",
-     "SPEECH OUTPUT: 'Take Course link'"]))
+     "SPEECH OUTPUT: 'Take Course link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -127,7 +127,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. line Up",
     ["BRAILLE LINE:  'Take Course'",
      "     VISIBLE:  'Take Course', cursor=1",
-     "SPEECH OUTPUT: 'Take Course link'"]))
+     "SPEECH OUTPUT: 'Take Course link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -135,7 +135,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. line Up",
     ["BRAILLE LINE:  'SQL Plus'",
      "     VISIBLE:  'SQL Plus', cursor=1",
-     "SPEECH OUTPUT: 'SQL Plus'"]))
+     "SPEECH OUTPUT: 'SQL Plus.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -159,7 +159,7 @@ sequence.append(utils.AssertPresentationAction(
     "18. line Up",
     ["BRAILLE LINE:  'Take Course'",
      "     VISIBLE:  'Take Course', cursor=1",
-     "SPEECH OUTPUT: 'Take Course link'"]))
+     "SPEECH OUTPUT: 'Take Course link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -167,7 +167,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. line Up",
     ["BRAILLE LINE:  'UNIX 2007'",
      "     VISIBLE:  'UNIX 2007', cursor=1",
-     "SPEECH OUTPUT: 'UNIX 2007'"]))
+     "SPEECH OUTPUT: 'UNIX 2007.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -191,13 +191,13 @@ sequence.append(utils.AssertPresentationAction(
     "22. line Up",
     ["BRAILLE LINE:  'Campus  .  Classroom  .  Communicate  .  Reports'",
      "     VISIBLE:  'Campus  .  Classroom  .  Communi', cursor=1",
-     "SPEECH OUTPUT: 'Campus link'",
+     "SPEECH OUTPUT: 'Campus link.'",
      "SPEECH OUTPUT: '.'",
-     "SPEECH OUTPUT: 'Classroom link'",
+     "SPEECH OUTPUT: 'Classroom link.'",
      "SPEECH OUTPUT: '.'",
-     "SPEECH OUTPUT: 'Communicate link'",
+     "SPEECH OUTPUT: 'Communicate link.'",
      "SPEECH OUTPUT: '.'",
-     "SPEECH OUTPUT: 'Reports link'"]))
+     "SPEECH OUTPUT: 'Reports link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_pre_links.py b/test/keystrokes/firefox/line_nav_pre_links.py
index b863b44..71143f6 100644
--- a/test/keystrokes/firefox/line_nav_pre_links.py
+++ b/test/keystrokes/firefox/line_nav_pre_links.py
@@ -25,7 +25,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'Line 2'",
      "     VISIBLE:  'Line 2', cursor=1",
-     "SPEECH OUTPUT: 'Line 2 link'"]))
+     "SPEECH OUTPUT: 'Line 2 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -41,7 +41,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  'Line 4'",
      "     VISIBLE:  'Line 4', cursor=1",
-     "SPEECH OUTPUT: 'Line 4 link'"]))
+     "SPEECH OUTPUT: 'Line 4 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -57,7 +57,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Up",
     ["BRAILLE LINE:  'Line 4'",
      "     VISIBLE:  'Line 4', cursor=1",
-     "SPEECH OUTPUT: 'Line 4 link'"]))
+     "SPEECH OUTPUT: 'Line 4 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -73,7 +73,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Up",
     ["BRAILLE LINE:  'Line 2'",
      "     VISIBLE:  'Line 2', cursor=1",
-     "SPEECH OUTPUT: 'Line 2 link'"]))
+     "SPEECH OUTPUT: 'Line 2 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_simple_form.py b/test/keystrokes/firefox/line_nav_simple_form.py
index aa8b1dc..db18cc9 100644
--- a/test/keystrokes/firefox/line_nav_simple_form.py
+++ b/test/keystrokes/firefox/line_nav_simple_form.py
@@ -90,7 +90,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Make a selection: Water combo box'",
      "     VISIBLE:  'Make a selection: Water combo bo', cursor=1",
      "SPEECH OUTPUT: 'Make a selection:'",
-     "SPEECH OUTPUT: 'Water combo box'"]))
+     "SPEECH OUTPUT: 'Water combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -106,7 +106,8 @@ sequence.append(utils.AssertPresentationAction(
     "11. line Down",
     ["BRAILLE LINE:  'Hockey list box'",
      "     VISIBLE:  'Hockey list box', cursor=1",
-     "SPEECH OUTPUT: 'Hockey multi-select List with 4 items'"]))
+     "SPEECH OUTPUT: 'Hockey.'",
+     "SPEECH OUTPUT: 'multi-select List with 4 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -123,8 +124,10 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Ain't he handsome (please say yes)? & y Yes radio button & y No radio button'",
      "     VISIBLE:  'Ain't he handsome (please say ye', cursor=1",
      "SPEECH OUTPUT: 'Ain't he handsome (please say yes)?'",
-     "SPEECH OUTPUT: 'Yes not selected radio button'",
-     "SPEECH OUTPUT: 'No not selected radio button'"]))
+     "SPEECH OUTPUT: 'Yes.'",
+     "SPEECH OUTPUT: 'not selected radio button'",
+     "SPEECH OUTPUT: 'No.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -140,7 +143,8 @@ sequence.append(utils.AssertPresentationAction(
     "15. line Up",
     ["BRAILLE LINE:  'Hockey list box'",
      "     VISIBLE:  'Hockey list box', cursor=1",
-     "SPEECH OUTPUT: 'Hockey multi-select List with 4 items'"]))
+     "SPEECH OUTPUT: 'Hockey.'",
+     "SPEECH OUTPUT: 'multi-select List with 4 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -157,7 +161,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Make a selection: Water combo box'",
      "     VISIBLE:  'Make a selection: Water combo bo', cursor=1",
      "SPEECH OUTPUT: 'Make a selection:'",
-     "SPEECH OUTPUT: 'Water combo box'"]))
+     "SPEECH OUTPUT: 'Water combo box.'"]))
 
 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 d1772c3..28a235e 100644
--- a/test/keystrokes/firefox/line_nav_slash_test.py
+++ b/test/keystrokes/firefox/line_nav_slash_test.py
@@ -35,7 +35,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'Science h4'",
      "     VISIBLE:  'Science h4', cursor=1",
-     "SPEECH OUTPUT: 'Science link heading level 4'"]))
+     "SPEECH OUTPUT: 'Science link heading level 4.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -43,7 +43,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  'Recent Tags h4'",
      "     VISIBLE:  'Recent Tags h4', cursor=1",
-     "SPEECH OUTPUT: 'Recent Tags link heading level 4'"]))
+     "SPEECH OUTPUT: 'Recent Tags link heading level 4.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -87,7 +87,8 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
     ["BRAILLE LINE:  '& y Some polls radio button'",
      "     VISIBLE:  '& y Some polls radio button', cursor=1",
-     "SPEECH OUTPUT: 'Some polls not selected radio button'"]))
+     "SPEECH OUTPUT: 'Some polls.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -95,7 +96,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  'Book Reviews h4'",
      "     VISIBLE:  'Book Reviews h4', cursor=1",
-     "SPEECH OUTPUT: 'Book Reviews link heading level 4'"]))
+     "SPEECH OUTPUT: 'Book Reviews link heading level 4.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -103,7 +104,8 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Up",
     ["BRAILLE LINE:  '& y Some polls radio button'",
      "     VISIBLE:  '& y Some polls radio button', cursor=1",
-     "SPEECH OUTPUT: 'Some polls not selected radio button'"]))
+     "SPEECH OUTPUT: 'Some polls.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -147,7 +149,7 @@ sequence.append(utils.AssertPresentationAction(
     "16. Line Up",
     ["BRAILLE LINE:  'Recent Tags h4'",
      "     VISIBLE:  'Recent Tags h4', cursor=1",
-     "SPEECH OUTPUT: 'Recent Tags link heading level 4'"]))
+     "SPEECH OUTPUT: 'Recent Tags link heading level 4.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -155,7 +157,7 @@ sequence.append(utils.AssertPresentationAction(
     "17. Line Up",
     ["BRAILLE LINE:  'Science h4'",
      "     VISIBLE:  'Science h4', cursor=1",
-     "SPEECH OUTPUT: 'Science link heading level 4'"]))
+     "SPEECH OUTPUT: 'Science link heading level 4.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_sun_java.py b/test/keystrokes/firefox/line_nav_sun_java.py
index 98f38d3..8a36b25 100644
--- a/test/keystrokes/firefox/line_nav_sun_java.py
+++ b/test/keystrokes/firefox/line_nav_sun_java.py
@@ -20,7 +20,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '» search tips Search $l Submit Search push button'",
      "     VISIBLE:  '» search tips Search $l Submit S', cursor=1",
      "SPEECH OUTPUT: '»'",
-     "SPEECH OUTPUT: 'search tips link'",
+     "SPEECH OUTPUT: 'search tips link.'",
      "SPEECH OUTPUT: 'entry Search'",
      "SPEECH OUTPUT: 'Submit Search push button'"]))
 
@@ -30,7 +30,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'Home Page Sun Developer Network'",
      "     VISIBLE:  'Home Page Sun Developer Network', cursor=1",
-     "SPEECH OUTPUT: 'Home Page link'",
+     "SPEECH OUTPUT: 'Home Page link.'",
      "SPEECH OUTPUT: 'link Sun Developer Network'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -39,12 +39,12 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'APIs Downloads Products Support Training Participate'",
      "     VISIBLE:  'APIs Downloads Products Support ', cursor=1",
-     "SPEECH OUTPUT: 'APIs link'",
-     "SPEECH OUTPUT: 'Downloads link'",
-     "SPEECH OUTPUT: 'Products link'",
-     "SPEECH OUTPUT: 'Support link'",
-     "SPEECH OUTPUT: 'Training link'",
-     "SPEECH OUTPUT: 'Participate link'"]))
+     "SPEECH OUTPUT: 'APIs link.'",
+     "SPEECH OUTPUT: 'Downloads link.'",
+     "SPEECH OUTPUT: 'Products link.'",
+     "SPEECH OUTPUT: 'Support link.'",
+     "SPEECH OUTPUT: 'Training link.'",
+     "SPEECH OUTPUT: 'Participate link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -76,7 +76,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Down",
     ["BRAILLE LINE:  'JDK Documentation'",
      "     VISIBLE:  'JDK Documentation', cursor=1",
-     "SPEECH OUTPUT: 'JDK Documentation link'"]))
+     "SPEECH OUTPUT: 'JDK Documentation link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -92,7 +92,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Down",
     ["BRAILLE LINE:  'System Requirements'",
      "     VISIBLE:  'System Requirements', cursor=1",
-     "SPEECH OUTPUT: 'System Requirements link'"]))
+     "SPEECH OUTPUT: 'System Requirements link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -100,7 +100,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Down",
     ["BRAILLE LINE:  'JDK Installation Instructions'",
      "     VISIBLE:  'JDK Installation Instructions', cursor=1",
-     "SPEECH OUTPUT: 'JDK Installation Instructions link'"]))
+     "SPEECH OUTPUT: 'JDK Installation Instructions link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -108,7 +108,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Down",
     ["BRAILLE LINE:  'Installation of Self-Extracting Binary'",
      "     VISIBLE:  'Installation of Self-Extracting ', cursor=0",
-     "SPEECH OUTPUT: 'Installation of Self-Extracting Binary link'"]))
+     "SPEECH OUTPUT: 'Installation of Self-Extracting Binary link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -116,7 +116,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Down",
     ["BRAILLE LINE:  'Installation of RPM File'",
      "     VISIBLE:  'Installation of RPM File', cursor=0",
-     "SPEECH OUTPUT: 'Installation of RPM File link'"]))
+     "SPEECH OUTPUT: 'Installation of RPM File link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -124,7 +124,7 @@ sequence.append(utils.AssertPresentationAction(
     "13. Line Down",
     ["BRAILLE LINE:  'Java Plugin Browser Registration Instructions'",
      "     VISIBLE:  'Java Plugin Browser Registration', cursor=1",
-     "SPEECH OUTPUT: 'Java Plugin Browser Registration Instructions link'"]))
+     "SPEECH OUTPUT: 'Java Plugin Browser Registration Instructions link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -132,7 +132,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. Line Down",
     ["BRAILLE LINE:  'Java Web Start Installation Notes'",
      "     VISIBLE:  'Java Web Start Installation Note', cursor=1",
-     "SPEECH OUTPUT: 'Java Web Start Installation Notes link'"]))
+     "SPEECH OUTPUT: 'Java Web Start Installation Notes link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -140,7 +140,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. Line Down",
     ["BRAILLE LINE:  'Troubleshooting'",
      "     VISIBLE:  'Troubleshooting', cursor=1",
-     "SPEECH OUTPUT: 'Troubleshooting link'"]))
+     "SPEECH OUTPUT: 'Troubleshooting link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -156,8 +156,8 @@ sequence.append(utils.AssertPresentationAction(
     "17. Line Down",
     ["BRAILLE LINE:  'See supported System Configurations for information about supported platforms, 
operating systems, desktop managers, and browsers.'",
      "     VISIBLE:  'See supported System Configurati', cursor=1",
-     "SPEECH OUTPUT: 'See supported'",
-     "SPEECH OUTPUT: 'System Configurations link'",
+     "SPEECH OUTPUT: 'See supported.'",
+     "SPEECH OUTPUT: 'System Configurations link.'",
      "SPEECH OUTPUT: 'for information about supported platforms, operating systems, desktop managers, and 
browsers.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -167,7 +167,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'For issues, see the Troubleshooting section below.'",
      "     VISIBLE:  'For issues, see the Troubleshoot', cursor=1",
      "SPEECH OUTPUT: 'For issues, see the'",
-     "SPEECH OUTPUT: 'Troubleshooting link'",
+     "SPEECH OUTPUT: 'Troubleshooting link.'",
      "SPEECH OUTPUT: 'section below.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -184,7 +184,7 @@ sequence.append(utils.AssertPresentationAction(
     "20. Line Down",
     ["BRAILLE LINE:  'Installing the JDK automatically installs the Java Plugin and Java Web Start. Note 
that the Java Plugin needs to be registered with the browser. After installing the JDK, refer to:'",
      "     VISIBLE:  'Installing the JDK automatically', cursor=1",
-     "SPEECH OUTPUT: 'Installing the JDK automatically installs the Java Plugin and Java Web Start. Note 
that the Java Plugin needs to be registered with the browser. After installing the JDK, refer to:'"]))
+     "SPEECH OUTPUT: 'Installing the JDK automatically installs the Java Plugin and Java Web Start. Note 
that the Java Plugin needs to be registered with the browser. After installing the JDK, refer to:.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -192,8 +192,8 @@ sequence.append(utils.AssertPresentationAction(
     "21. Line Down",
     ["BRAILLE LINE:  '• Java Plugin Browser Registration Instructions'",
      "     VISIBLE:  '• Java Plugin Browser Registrati', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Java Plugin Browser Registration Instructions link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Java Plugin Browser Registration Instructions link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -201,8 +201,8 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Down",
     ["BRAILLE LINE:  '• Java Web Start Installation Notes'",
      "     VISIBLE:  '• Java Web Start Installation No', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Java Web Start Installation Notes link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Java Web Start Installation Notes link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -218,7 +218,7 @@ sequence.append(utils.AssertPresentationAction(
     "24. Line Down",
     ["BRAILLE LINE:  '• Self-extracting Binary File - This file can be used to install the JDK in a location 
chosen by the user. This one can be installed by anyone (not only root users), and it can'",
      "     VISIBLE:  '• Self-extracting Binary File - ', cursor=1",
-     "SPEECH OUTPUT: '• Self-extracting Binary File - This file can be used to install the JDK in a location 
chosen by the user. This one can be installed by anyone (not only root users), and it can'"]))
+     "SPEECH OUTPUT: '• Self-extracting Binary File - This file can be used to install the JDK in a location 
chosen by the user. This one can be installed by anyone (not only root users), and it can.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -226,7 +226,7 @@ sequence.append(utils.AssertPresentationAction(
     "25. Line Down",
     ["BRAILLE LINE:  'easily be installed in any location. As long as you are not root user, it cannot 
displace the system version of the Java platform suppled by Linux. To use this file, see'",
      "     VISIBLE:  'easily be installed in any locat', cursor=1",
-     "SPEECH OUTPUT: 'easily be installed in any location. As long as you are not root user, it cannot 
displace the system version of the Java platform suppled by Linux. To use this file, see'"]))
+     "SPEECH OUTPUT: 'easily be installed in any location. As long as you are not root user, it cannot 
displace the system version of the Java platform suppled by Linux. To use this file, see.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -234,7 +234,7 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Down",
     ["BRAILLE LINE:  'Installation of Self-Extracting Binary below.'",
      "     VISIBLE:  'Installation of Self-Extracting ', cursor=1",
-     "SPEECH OUTPUT: 'Installation of Self-Extracting Binary link'",
+     "SPEECH OUTPUT: 'Installation of Self-Extracting Binary link.'",
      "SPEECH OUTPUT: 'below.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -243,7 +243,7 @@ sequence.append(utils.AssertPresentationAction(
     "27. Line Down",
     ["BRAILLE LINE:  '• RPM Packages - A rpm.bin file containing RPM packages, installed with the rpm 
utility. Requires root access to install. RPM packages are the recommended method for'",
      "     VISIBLE:  '• RPM Packages - A rpm.bin file ', cursor=1",
-     "SPEECH OUTPUT: '• RPM Packages - A rpm.bin file containing RPM packages, installed with the rpm 
utility. Requires root access to install. RPM packages are the recommended method for'"]))
+     "SPEECH OUTPUT: '• RPM Packages - A rpm.bin file containing RPM packages, installed with the rpm 
utility. Requires root access to install. RPM packages are the recommended method for.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -251,8 +251,8 @@ sequence.append(utils.AssertPresentationAction(
     "28. Line Down",
     ["BRAILLE LINE:  'installation on Linux. To use this bundle, see Installation of RPM File below.'",
      "     VISIBLE:  'installation on Linux. To use th', cursor=1",
-     "SPEECH OUTPUT: 'installation on Linux. To use this bundle, see'",
-     "SPEECH OUTPUT: 'Installation of RPM File link'",
+     "SPEECH OUTPUT: 'installation on Linux. To use this bundle, see.'",
+     "SPEECH OUTPUT: 'Installation of RPM File link.'",
      "SPEECH OUTPUT: 'below.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -325,8 +325,8 @@ sequence.append(utils.AssertPresentationAction(
     "37. Line Down",
     ["BRAILLE LINE:  'Use these instructions if you want to use the self-extracting binary file to install 
the JDK. If you want to install RPM packages instead, see Installation of RPM File.'",
      "     VISIBLE:  'Use these instructions if you wa', cursor=1",
-     "SPEECH OUTPUT: 'Use these instructions if you want to use the self-extracting binary file to install 
the JDK. If you want to install RPM packages instead, see'",
-     "SPEECH OUTPUT: 'Installation of RPM File link'",
+     "SPEECH OUTPUT: 'Use these instructions if you want to use the self-extracting binary file to install 
the JDK. If you want to install RPM packages instead, see.'",
+     "SPEECH OUTPUT: 'Installation of RPM File link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/line_nav_table_captions.py 
b/test/keystrokes/firefox/line_nav_table_captions.py
index 82c3f99..d7cddbe 100644
--- a/test/keystrokes/firefox/line_nav_table_captions.py
+++ b/test/keystrokes/firefox/line_nav_table_captions.py
@@ -39,9 +39,9 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down to first data row",
     ["BRAILLE LINE:  '1 2 3'",
      "     VISIBLE:  '1 2 3', cursor=1",
-     "SPEECH OUTPUT: '1'",
-     "SPEECH OUTPUT: '2'",
-     "SPEECH OUTPUT: '3'"]))
+     "SPEECH OUTPUT: '1.'",
+     "SPEECH OUTPUT: '2.'",
+     "SPEECH OUTPUT: '3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -49,9 +49,9 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down to second data row",
     ["BRAILLE LINE:  '4 5 6'",
      "     VISIBLE:  '4 5 6', cursor=1",
-     "SPEECH OUTPUT: '4'",
-     "SPEECH OUTPUT: '5'",
-     "SPEECH OUTPUT: '6'"]))
+     "SPEECH OUTPUT: '4.'",
+     "SPEECH OUTPUT: '5.'",
+     "SPEECH OUTPUT: '6.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -59,9 +59,9 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Down to third data row",
     ["BRAILLE LINE:  '7 8 9'",
      "     VISIBLE:  '7 8 9', cursor=1",
-     "SPEECH OUTPUT: '7'",
-     "SPEECH OUTPUT: '8'",
-     "SPEECH OUTPUT: '9'"]))
+     "SPEECH OUTPUT: '7.'",
+     "SPEECH OUTPUT: '8.'",
+     "SPEECH OUTPUT: '9.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -77,9 +77,9 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Up into table's third data row",
     ["BRAILLE LINE:  '7 8 9'",
      "     VISIBLE:  '7 8 9', cursor=1",
-     "SPEECH OUTPUT: '7'",
-     "SPEECH OUTPUT: '8'",
-     "SPEECH OUTPUT: '9'"]))
+     "SPEECH OUTPUT: '7.'",
+     "SPEECH OUTPUT: '8.'",
+     "SPEECH OUTPUT: '9.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -87,9 +87,9 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Up to second data row",
     ["BRAILLE LINE:  '4 5 6'",
      "     VISIBLE:  '4 5 6', cursor=1",
-     "SPEECH OUTPUT: '4'",
-     "SPEECH OUTPUT: '5'",
-     "SPEECH OUTPUT: '6'"]))
+     "SPEECH OUTPUT: '4.'",
+     "SPEECH OUTPUT: '5.'",
+     "SPEECH OUTPUT: '6.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -97,9 +97,9 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Up to first data row",
     ["BRAILLE LINE:  '1 2 3'",
      "     VISIBLE:  '1 2 3', cursor=1",
-     "SPEECH OUTPUT: '1'",
-     "SPEECH OUTPUT: '2'",
-     "SPEECH OUTPUT: '3'"]))
+     "SPEECH OUTPUT: '1.'",
+     "SPEECH OUTPUT: '2.'",
+     "SPEECH OUTPUT: '3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_table_cell_links.py 
b/test/keystrokes/firefox/line_nav_table_cell_links.py
index 15c8228..c155d33 100644
--- a/test/keystrokes/firefox/line_nav_table_cell_links.py
+++ b/test/keystrokes/firefox/line_nav_table_cell_links.py
@@ -25,7 +25,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Line Down",
     ["BRAILLE LINE:  'HTML Tags'",
      "     VISIBLE:  'HTML Tags', cursor=1",
-     "SPEECH OUTPUT: 'HTML Tags'"]))
+     "SPEECH OUTPUT: 'HTML Tags.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  '<!-->'",
      "     VISIBLE:  '<!-->', cursor=1",
-     "SPEECH OUTPUT: '<!--> link'"]))
+     "SPEECH OUTPUT: '<!--> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -41,7 +41,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  '<!DOCTYPE>'",
      "     VISIBLE:  '<!DOCTYPE>', cursor=1",
-     "SPEECH OUTPUT: '<!DOCTYPE> link'"]))
+     "SPEECH OUTPUT: '<!DOCTYPE> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -49,7 +49,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  '<a>'",
      "     VISIBLE:  '<a>', cursor=1",
-     "SPEECH OUTPUT: '<a> link'"]))
+     "SPEECH OUTPUT: '<a> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -57,7 +57,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
     ["BRAILLE LINE:  '<abbr>'",
      "     VISIBLE:  '<abbr>', cursor=1",
-     "SPEECH OUTPUT: '<abbr> link'"]))
+     "SPEECH OUTPUT: '<abbr> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -65,7 +65,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Down",
     ["BRAILLE LINE:  '<acronym>'",
      "     VISIBLE:  '<acronym>', cursor=1",
-     "SPEECH OUTPUT: '<acronym> link'"]))
+     "SPEECH OUTPUT: '<acronym> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -73,7 +73,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Up",
     ["BRAILLE LINE:  '<abbr>'",
      "     VISIBLE:  '<abbr>', cursor=1",
-     "SPEECH OUTPUT: '<abbr> link'"]))
+     "SPEECH OUTPUT: '<abbr> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -81,7 +81,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Up",
     ["BRAILLE LINE:  '<a>'",
      "     VISIBLE:  '<a>', cursor=1",
-     "SPEECH OUTPUT: '<a> link'"]))
+     "SPEECH OUTPUT: '<a> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -89,7 +89,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. Line Up",
     ["BRAILLE LINE:  '<!DOCTYPE>'",
      "     VISIBLE:  '<!DOCTYPE>', cursor=1",
-     "SPEECH OUTPUT: '<!DOCTYPE> link'"]))
+     "SPEECH OUTPUT: '<!DOCTYPE> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -97,7 +97,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Up",
     ["BRAILLE LINE:  '<!-->'",
      "     VISIBLE:  '<!-->', cursor=1",
-     "SPEECH OUTPUT: '<!--> link'"]))
+     "SPEECH OUTPUT: '<!--> link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -105,7 +105,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. Line Up",
     ["BRAILLE LINE:  'HTML Tags'",
      "     VISIBLE:  'HTML Tags', cursor=1",
-     "SPEECH OUTPUT: 'HTML Tags'"]))
+     "SPEECH OUTPUT: 'HTML Tags.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/line_nav_wiki_down.py b/test/keystrokes/firefox/line_nav_wiki_down.py
index 9454775..fca2bd0 100644
--- a/test/keystrokes/firefox/line_nav_wiki_down.py
+++ b/test/keystrokes/firefox/line_nav_wiki_down.py
@@ -21,13 +21,13 @@ sequence.append(utils.AssertPresentationAction(
     "1. Line Down",
     ["BRAILLE LINE:  'Home News Projects Art Support Development Community'",
      "     VISIBLE:  'Home News Projects Art Support D', cursor=1",
-     "SPEECH OUTPUT: 'Home link'",
-     "SPEECH OUTPUT: 'News link'",
-     "SPEECH OUTPUT: 'Projects link'",
-     "SPEECH OUTPUT: 'Art link'",
-     "SPEECH OUTPUT: 'Support link'",
-     "SPEECH OUTPUT: 'Development link'",
-     "SPEECH OUTPUT: 'Community link'"]))
+     "SPEECH OUTPUT: 'Home link.'",
+     "SPEECH OUTPUT: 'News link.'",
+     "SPEECH OUTPUT: 'Projects link.'",
+     "SPEECH OUTPUT: 'Art link.'",
+     "SPEECH OUTPUT: 'Support link.'",
+     "SPEECH OUTPUT: 'Development link.'",
+     "SPEECH OUTPUT: 'Community link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -46,11 +46,11 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'Home RecentChanges FindPage HelpContents Orca'",
      "     VISIBLE:  'Home RecentChanges FindPage Help', cursor=1",
-     "SPEECH OUTPUT: 'Home link'",
-     "SPEECH OUTPUT: 'RecentChanges link'",
-     "SPEECH OUTPUT: 'FindPage link'",
-     "SPEECH OUTPUT: 'HelpContents link'",
-     "SPEECH OUTPUT: 'Orca link'"]))
+     "SPEECH OUTPUT: 'Home link.'",
+     "SPEECH OUTPUT: 'RecentChanges link.'",
+     "SPEECH OUTPUT: 'FindPage link.'",
+     "SPEECH OUTPUT: 'HelpContents link.'",
+     "SPEECH OUTPUT: 'Orca link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -58,7 +58,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Line Down",
     ["BRAILLE LINE:  'en Español'",
      "     VISIBLE:  'en Español', cursor=1",
-     "SPEECH OUTPUT: 'en Español link'"]))
+     "SPEECH OUTPUT: 'en Español link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -66,15 +66,15 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'Home | Download/Installation | Configuration/Use | Accessible Applications | Mailing 
List \('",
      "     VISIBLE:  'Home | Download/Installation | C', cursor=1",
-     "SPEECH OUTPUT: 'Home link'",
+     "SPEECH OUTPUT: 'Home link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Download/Installation link'",
+     "SPEECH OUTPUT: 'Download/Installation link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Configuration/Use link'",
+     "SPEECH OUTPUT: 'Configuration/Use link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Accessible Applications link'",
+     "SPEECH OUTPUT: 'Accessible Applications link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Mailing List link'",
+     "SPEECH OUTPUT: 'Mailing List link.'",
      "SPEECH OUTPUT: '('"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -83,11 +83,11 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Down",
     ["BRAILLE LINE:  'Archives\) | FAQ | DocIndex'",
      "     VISIBLE:  'Archives\) | FAQ | DocIndex', cursor=1",
-     "SPEECH OUTPUT: 'Archives link'",
+     "SPEECH OUTPUT: 'Archives link.'",
      "SPEECH OUTPUT: ') |'",
-     "SPEECH OUTPUT: 'FAQ link'",
+     "SPEECH OUTPUT: 'FAQ link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'DocIndex link'"]))
+     "SPEECH OUTPUT: 'DocIndex link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -103,7 +103,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Down",
     ["BRAILLE LINE:  'Orca Logo'",
      "     VISIBLE:  'Orca Logo', cursor=1",
-     "SPEECH OUTPUT: 'Orca Logo link'"]))
+     "SPEECH OUTPUT: 'Orca Logo link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -112,7 +112,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'HOT HOT HOT: Notes on access to Firefox 3.0'",
      "     VISIBLE:  'HOT HOT HOT: Notes on access to ', cursor=1",
      "SPEECH OUTPUT: 'HOT HOT HOT: Notes on'",
-     "SPEECH OUTPUT: 'access to Firefox 3.0 link'"]))
+     "SPEECH OUTPUT: 'access to Firefox 3.0 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -129,7 +129,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '1. Welcome to Orca!'",
      "     VISIBLE:  '1. Welcome to Orca!', cursor=1",
      "SPEECH OUTPUT: '1.'",
-     "SPEECH OUTPUT: 'Welcome to Orca! link'"]))
+     "SPEECH OUTPUT: 'Welcome to Orca! link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -138,7 +138,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '2. About'",
      "     VISIBLE:  '2. About', cursor=1",
      "SPEECH OUTPUT: '2.'",
-     "SPEECH OUTPUT: 'About link'"]))
+     "SPEECH OUTPUT: 'About link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -147,7 +147,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '3. Audio Guides'",
      "     VISIBLE:  '3. Audio Guides', cursor=1",
      "SPEECH OUTPUT: '3.'",
-     "SPEECH OUTPUT: 'Audio Guides link'"]))
+     "SPEECH OUTPUT: 'Audio Guides link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -156,7 +156,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '4. Download/Installation'",
      "     VISIBLE:  '4. Download/Installation', cursor=1",
      "SPEECH OUTPUT: '4.'",
-     "SPEECH OUTPUT: 'Download/Installation link'"]))
+     "SPEECH OUTPUT: 'Download/Installation link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -165,7 +165,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '5. Configuration/Use'",
      "     VISIBLE:  '5. Configuration/Use', cursor=1",
      "SPEECH OUTPUT: '5.'",
-     "SPEECH OUTPUT: 'Configuration/Use link'"]))
+     "SPEECH OUTPUT: 'Configuration/Use link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -174,7 +174,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '6. Accessible Applications'",
      "     VISIBLE:  '6. Accessible Applications', cursor=1",
      "SPEECH OUTPUT: '6.'",
-     "SPEECH OUTPUT: 'Accessible Applications link'"]))
+     "SPEECH OUTPUT: 'Accessible Applications link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -183,7 +183,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '7. How Can I Help?'",
      "     VISIBLE:  '7. How Can I Help?', cursor=1",
      "SPEECH OUTPUT: '7.'",
-     "SPEECH OUTPUT: 'How Can I Help? link'"]))
+     "SPEECH OUTPUT: 'How Can I Help? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -192,7 +192,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '8. More Information'",
      "     VISIBLE:  '8. More Information', cursor=1",
      "SPEECH OUTPUT: '8.'",
-     "SPEECH OUTPUT: 'More Information link'"]))
+     "SPEECH OUTPUT: 'More Information link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -258,7 +258,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'been led by the Accessibility Pr', cursor=1",
      "SPEECH OUTPUT: 'been led by the'",
      "SPEECH OUTPUT: 'Accessibility Program Office of Sun'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -267,10 +267,10 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Microsystems, Inc. with contributions from many'",
      "     VISIBLE:  'Microsystems, Inc. with contribu', cursor=1",
      "SPEECH OUTPUT: 'Microsystems, Inc.'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: 'with'",
      "SPEECH OUTPUT: 'contributions from many'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -279,7 +279,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'community members.'",
      "     VISIBLE:  'community members.', cursor=1",
      "SPEECH OUTPUT: 'community members'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -297,10 +297,10 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'problems in other components, is maintained in Bugzilla \(please see our notes on how 
we'",
      "     VISIBLE:  'problems in other components, is', cursor=1",
      "SPEECH OUTPUT: 'problems in other components, is maintained in'",
-     "SPEECH OUTPUT: 'Bugzilla link'",
+     "SPEECH OUTPUT: 'Bugzilla link.'",
      "SPEECH OUTPUT: '\(please see our'",
      "SPEECH OUTPUT: 'notes on how we'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -309,7 +309,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'use Bugzilla\).'",
      "     VISIBLE:  'use Bugzilla\).', cursor=1",
      "SPEECH OUTPUT: 'use Bugzilla'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: '\).'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -319,9 +319,9 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Please join and participate on the Orca mailing list (archives): it's a helpful, kind, 
and'",
      "     VISIBLE:  'Please join and participate on t', cursor=1",
      "SPEECH OUTPUT: 'Please join and participate on the'",
-     "SPEECH OUTPUT: 'Orca mailing list link'",
+     "SPEECH OUTPUT: 'Orca mailing list link.'",
      "SPEECH OUTPUT: '('",
-     "SPEECH OUTPUT: 'archives link'",
+     "SPEECH OUTPUT: 'archives link.'",
      "SPEECH OUTPUT: '): it's a helpful, kind, and'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -346,7 +346,7 @@ sequence.append(utils.AssertPresentationAction(
     "35. Line Down",
     ["BRAILLE LINE:  'Darragh Ó Héiligh has created several audio guides for Orca. This is a fantastic'",
      "     VISIBLE:  'Darragh Ó Héiligh has created se', cursor=1",
-     "SPEECH OUTPUT: 'Darragh Ó Héiligh link'",
+     "SPEECH OUTPUT: 'Darragh Ó Héiligh link.'",
      "SPEECH OUTPUT: 'has created several audio guides for Orca. This is a fantastic'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -357,7 +357,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'contribution (THANKS!)!!! The au', cursor=1",
      "SPEECH OUTPUT: 'contribution (THANKS!)!!! The audio guides can be found at'",
      "SPEECH OUTPUT: 'http://www.digitaldarragh.com'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -366,7 +366,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '/linuxat.asp and include the following:'",
      "     VISIBLE:  '/linuxat.asp and include the fol', cursor=1",
      "SPEECH OUTPUT: '/linuxat.asp'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: 'and include the following:'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -375,8 +375,8 @@ sequence.append(utils.AssertPresentationAction(
     "38. Line Down",
     ["BRAILLE LINE:  '• Walk through of the installation of Ubuntu 7.4. Very helpful tutorial'",
      "     VISIBLE:  '• Walk through of the installati', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Walk through of the installation of Ubuntu 7.4. Very helpful tutorial link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Walk through of the installation of Ubuntu 7.4. Very helpful tutorial link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -384,8 +384,8 @@ sequence.append(utils.AssertPresentationAction(
     "39. Line Down",
     ["BRAILLE LINE:  '• Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop'",
      "     VISIBLE:  '• Review of Fedora 7 and the Orc', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop 
link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -393,8 +393,8 @@ sequence.append(utils.AssertPresentationAction(
     "40. Line Down",
     ["BRAILLE LINE:  '• Guide to installing the latest versions of Firefox and Orca'",
      "     VISIBLE:  '• Guide to installing the latest', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Guide to installing the latest versions of Firefox and Orca link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Guide to installing the latest versions of Firefox and Orca link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -419,7 +419,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'provided by default on a number of operating system distributions, including Open 
Solaris'",
      "     VISIBLE:  'provided by default on a number ', cursor=1",
      "SPEECH OUTPUT: 'provided by default on a number of operating system distributions, including'",
-     "SPEECH OUTPUT: 'Open Solaris link'"]))
+     "SPEECH OUTPUT: 'Open Solaris link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -428,7 +428,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'and Ubuntu.'",
      "     VISIBLE:  'and Ubuntu.', cursor=1",
      "SPEECH OUTPUT: 'and'",
-     "SPEECH OUTPUT: 'Ubuntu link'",
+     "SPEECH OUTPUT: 'Ubuntu link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -438,7 +438,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Please also refer to the Download/Installation page for detailed information on 
various'",
      "     VISIBLE:  'Please also refer to the Downloa', cursor=1",
      "SPEECH OUTPUT: 'Please also refer to the'",
-     "SPEECH OUTPUT: 'Download/Installation page link'",
+     "SPEECH OUTPUT: 'Download/Installation page link.'",
      "SPEECH OUTPUT: 'for detailed information on various'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -481,7 +481,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'designed to present information ', cursor=1",
      "SPEECH OUTPUT: 'designed to present information as you navigate the desktop using the'",
      "SPEECH OUTPUT: 'built-in navigation'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -490,7 +490,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'mechanisms of GNOME. These navigation mechanisms are consistent across most'",
      "     VISIBLE:  'mechanisms of GNOME. These navig', cursor=1",
      "SPEECH OUTPUT: 'mechanisms of GNOME'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: '. These navigation mechanisms are consistent across most'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -509,7 +509,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'You may sometimes wish to contro', cursor=1",
      "SPEECH OUTPUT: 'You may sometimes wish to control Orca itself, such as bringing up the'",
      "SPEECH OUTPUT: 'Orca Configuration'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -518,7 +518,7 @@ sequence.append(utils.AssertPresentationAction(
     ["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: 'link.'",
      "SPEECH OUTPUT: '(accessed by pressing Insert+Space when Orca is running) and for using flat review'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -528,8 +528,8 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'mode to examine a window. Refer to Orca Keyboard Commands (Laptop Layout) for more'",
      "     VISIBLE:  'mode to examine a window. Refer ', cursor=1",
      "SPEECH OUTPUT: 'mode to examine a window. Refer to'",
-     "SPEECH OUTPUT: 'Orca Keyboard Commands link'",
-     "SPEECH OUTPUT: '(Laptop Layout) link'",
+     "SPEECH OUTPUT: 'Orca Keyboard Commands link.'",
+     "SPEECH OUTPUT: '(Laptop Layout) link.'",
      "SPEECH OUTPUT: 'for more'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -539,7 +539,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'information on Orca-specific keyboard commands. The Orca Configuration GUI also'",
      "     VISIBLE:  'information on Orca-specific key', cursor=1",
      "SPEECH OUTPUT: 'information on Orca-specific keyboard commands. The'",
-     "SPEECH OUTPUT: 'Orca Configuration GUI link'",
+     "SPEECH OUTPUT: 'Orca Configuration GUI link.'",
      "SPEECH OUTPUT: 'also'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -557,7 +557,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Please also refer to the Configuration/Use page for detailed information.'",
      "     VISIBLE:  'Please also refer to the Configu', cursor=1",
      "SPEECH OUTPUT: 'Please also refer to the'",
-     "SPEECH OUTPUT: 'Configuration/Use page link'",
+     "SPEECH OUTPUT: 'Configuration/Use page link.'",
      "SPEECH OUTPUT: 'for detailed information.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -591,7 +591,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'applications, OpenOffice, Firefox, and the Java platform. Some applications work 
better'",
      "     VISIBLE:  'applications, OpenOffice, Firefo', cursor=1",
      "SPEECH OUTPUT: 'applications,'",
-     "SPEECH OUTPUT: 'OpenOffice link'",
+     "SPEECH OUTPUT: 'OpenOffice link.'",
      "SPEECH OUTPUT: ', Firefox, and the Java platform. Some applications work better'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -617,7 +617,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'On the Accessible Applications page, you will find a growing list of information 
regarding'",
      "     VISIBLE:  'On the Accessible Applications p', cursor=1",
      "SPEECH OUTPUT: 'On the'",
-     "SPEECH OUTPUT: 'Accessible Applications page link'",
+     "SPEECH OUTPUT: 'Accessible Applications page link.'",
      "SPEECH OUTPUT: ', you will find a growing list of information regarding'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -659,7 +659,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'See also the Application Specific Settings page for how to configure settings specific 
to an'",
      "     VISIBLE:  'See also the Application Specifi', cursor=1",
      "SPEECH OUTPUT: 'See also the'",
-     "SPEECH OUTPUT: 'Application Specific Settings link'",
+     "SPEECH OUTPUT: 'Application Specific Settings link.'",
      "SPEECH OUTPUT: 'page for how to configure settings specific to an'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -677,7 +677,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Please also refer to the Accessible Applications page for detailed information.'",
      "     VISIBLE:  'Please also refer to the Accessi', cursor=1",
      "SPEECH OUTPUT: 'Please also refer to the'",
-     "SPEECH OUTPUT: 'Accessible Applications page link'",
+     "SPEECH OUTPUT: 'Accessible Applications page link.'",
      "SPEECH OUTPUT: 'for detailed information.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -695,7 +695,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'There's a bunch you can do! Please refer to the How Can I Help page for detailed'",
      "     VISIBLE:  'There's a bunch you can do! Plea', cursor=1",
      "SPEECH OUTPUT: 'There's a bunch you can do! Please refer to the'",
-     "SPEECH OUTPUT: 'How Can I Help page link'",
+     "SPEECH OUTPUT: 'How Can I Help page link.'",
      "SPEECH OUTPUT: 'for detailed'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -720,9 +720,9 @@ sequence.append(utils.AssertPresentationAction(
     "77. Line Down",
     ["BRAILLE LINE:  '• Frequently Asked Questions: FAQ'",
      "     VISIBLE:  '• Frequently Asked Questions: FA', cursor=1",
-     "SPEECH OUTPUT: '•'",
+     "SPEECH OUTPUT: '•.'",
      "SPEECH OUTPUT: 'Frequently Asked Questions:'",
-     "SPEECH OUTPUT: 'FAQ link'"]))
+     "SPEECH OUTPUT: 'FAQ link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -730,11 +730,11 @@ sequence.append(utils.AssertPresentationAction(
     "78. Line Down",
     ["BRAILLE LINE:  '• Mailing list: orca-list gnome org (Archives)'",
      "     VISIBLE:  '• Mailing list: orca-list gnome ', cursor=1",
-     "SPEECH OUTPUT: '•'",
+     "SPEECH OUTPUT: '•.'",
      "SPEECH OUTPUT: 'Mailing list:'",
-     "SPEECH OUTPUT: 'orca-list gnome org link'",
+     "SPEECH OUTPUT: 'orca-list gnome org link.'",
      "SPEECH OUTPUT: '('",
-     "SPEECH OUTPUT: 'Archives link'",
+     "SPEECH OUTPUT: 'Archives link.'",
      "SPEECH OUTPUT: ')'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -743,11 +743,11 @@ 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",
-     "SPEECH OUTPUT: '•'",
+     "SPEECH OUTPUT: '•.'",
      "SPEECH OUTPUT: 'Bug database:'",
-     "SPEECH OUTPUT: 'GNOME Bug Tracking System (Bugzilla) link'",
+     "SPEECH OUTPUT: 'GNOME Bug Tracking System (Bugzilla) link.'",
      "SPEECH OUTPUT: '('",
-     "SPEECH OUTPUT: 'current bug list link'",
+     "SPEECH OUTPUT: 'current bug list link.'",
      "SPEECH OUTPUT: ')'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -756,9 +756,9 @@ sequence.append(utils.AssertPresentationAction(
     "80. Line Down",
     ["BRAILLE LINE:  '• Design documents: Orca Documentation Series'",
      "     VISIBLE:  '• Design documents: Orca Documen', cursor=1",
-     "SPEECH OUTPUT: '•'",
+     "SPEECH OUTPUT: '•.'",
      "SPEECH OUTPUT: 'Design documents:'",
-     "SPEECH OUTPUT: 'Orca Documentation Series link'"]))
+     "SPEECH OUTPUT: 'Orca Documentation Series link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -766,8 +766,8 @@ sequence.append(utils.AssertPresentationAction(
     "81. Line Down",
     ["BRAILLE LINE:  '• Dive Into Python, Mark Pilgrim'",
      "     VISIBLE:  '• Dive Into Python, Mark Pilgrim', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Dive Into Python, Mark Pilgrim link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Dive Into Python, Mark Pilgrim link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -775,8 +775,8 @@ sequence.append(utils.AssertPresentationAction(
     "82. Line Down",
     ["BRAILLE LINE:  '• Python in a Nutshell, Alex Martelli'",
      "     VISIBLE:  '• Python in a Nutshell, Alex Mar', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Python in a Nutshell, Alex Martelli link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Python in a Nutshell, Alex Martelli link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -784,8 +784,8 @@ sequence.append(utils.AssertPresentationAction(
     "83. Line Down",
     ["BRAILLE LINE:  '• Python Pocket Reference, Mark Lutz'",
      "     VISIBLE:  '• Python Pocket Reference, Mark ', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Python Pocket Reference, Mark Lutz link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Python Pocket Reference, Mark Lutz link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -833,7 +833,7 @@ sequence.append(utils.AssertPresentationAction(
     "89. Line Down",
     ["BRAILLE LINE:  'CategoryAccessibility'",
      "     VISIBLE:  'CategoryAccessibility', cursor=1",
-     "SPEECH OUTPUT: 'CategoryAccessibility link'"]))
+     "SPEECH OUTPUT: 'CategoryAccessibility link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -842,7 +842,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Orca (last edited 2007-12-07 22:09:22 by WillieWalker)'",
      "     VISIBLE:  'Orca (last edited 2007-12-07 22:', cursor=1",
      "SPEECH OUTPUT: 'Orca (last edited 2007-12-07 22:09:22 by'",
-     "SPEECH OUTPUT: 'WillieWalker link'",
+     "SPEECH OUTPUT: 'WillieWalker link.'",
      "SPEECH OUTPUT: ')'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -859,7 +859,7 @@ sequence.append(utils.AssertPresentationAction(
     "92. Line Down",
     ["BRAILLE LINE:  'Login'",
      "     VISIBLE:  'Login', cursor=1",
-     "SPEECH OUTPUT: 'Login link'"]))
+     "SPEECH OUTPUT: 'Login link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -875,7 +875,7 @@ sequence.append(utils.AssertPresentationAction(
     "94. Line Down",
     ["BRAILLE LINE:  'Immutable Page'",
      "     VISIBLE:  'Immutable Page', cursor=1",
-     "SPEECH OUTPUT: 'Immutable Page'"]))
+     "SPEECH OUTPUT: 'Immutable Page.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -883,7 +883,7 @@ sequence.append(utils.AssertPresentationAction(
     "95. Line Down",
     ["BRAILLE LINE:  'Info'",
      "     VISIBLE:  'Info', cursor=1",
-     "SPEECH OUTPUT: 'Info link'"]))
+     "SPEECH OUTPUT: 'Info link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -891,7 +891,7 @@ sequence.append(utils.AssertPresentationAction(
     "96. Line Down",
     ["BRAILLE LINE:  'Attachments'",
      "     VISIBLE:  'Attachments', cursor=1",
-     "SPEECH OUTPUT: 'Attachments link'"]))
+     "SPEECH OUTPUT: 'Attachments link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -899,7 +899,7 @@ sequence.append(utils.AssertPresentationAction(
     "97. Line Down",
     ["BRAILLE LINE:  'More Actions: combo box'",
      "     VISIBLE:  'More Actions: combo box', cursor=1",
-     "SPEECH OUTPUT: 'More Actions: combo box'"]))
+     "SPEECH OUTPUT: 'More Actions: combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -932,7 +932,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Copyright \xa9 2005, 2006, 2007 The GNOME Project.'",
      "     VISIBLE:  'Copyright \xa9 2005, 2006, 2007 The', cursor=1",
      "SPEECH OUTPUT: 'Copyright \xa9 2005, 2006, 2007'",
-     "SPEECH OUTPUT: 'The GNOME Project link'",
+     "SPEECH OUTPUT: 'The GNOME Project link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -942,7 +942,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Hosted by Red Hat.'",
      "     VISIBLE:  'Hosted by Red Hat.', cursor=1",
      "SPEECH OUTPUT: 'Hosted by'",
-     "SPEECH OUTPUT: 'Red Hat link'",
+     "SPEECH OUTPUT: 'Red Hat link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/firefox/line_nav_wiki_up.py b/test/keystrokes/firefox/line_nav_wiki_up.py
index 88d5f0c..f1155d5 100644
--- a/test/keystrokes/firefox/line_nav_wiki_up.py
+++ b/test/keystrokes/firefox/line_nav_wiki_up.py
@@ -21,7 +21,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Hosted by Red Hat.'",
      "     VISIBLE:  'Hosted by Red Hat.', cursor=0",
      "SPEECH OUTPUT: 'Hosted by'",
-     "SPEECH OUTPUT: 'Red Hat link'",
+     "SPEECH OUTPUT: 'Red Hat link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -31,7 +31,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Copyright \xa9 2005, 2006, 2007 The GNOME Project.'",
      "     VISIBLE:  'Copyright \xa9 2005, 2006, 2007 The', cursor=1",
      "SPEECH OUTPUT: 'Copyright \xa9 2005, 2006, 2007'",
-     "SPEECH OUTPUT: 'The GNOME Project link'",
+     "SPEECH OUTPUT: 'The GNOME Project link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -64,7 +64,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Line Up",
     ["BRAILLE LINE:  'More Actions: combo box'",
      "     VISIBLE:  'More Actions: combo box', cursor=1",
-     "SPEECH OUTPUT: 'More Actions: combo box'"]))
+     "SPEECH OUTPUT: 'More Actions: combo box.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -72,7 +72,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Up",
     ["BRAILLE LINE:  'Attachments'",
      "     VISIBLE:  'Attachments', cursor=1",
-     "SPEECH OUTPUT: 'Attachments link'"]))
+     "SPEECH OUTPUT: 'Attachments link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -80,7 +80,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Line Up",
     ["BRAILLE LINE:  'Info'",
      "     VISIBLE:  'Info', cursor=1",
-     "SPEECH OUTPUT: 'Info link'"]))
+     "SPEECH OUTPUT: 'Info link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -88,7 +88,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. Line Up",
     ["BRAILLE LINE:  'Immutable Page'",
      "     VISIBLE:  'Immutable Page', cursor=1",
-     "SPEECH OUTPUT: 'Immutable Page'"]))
+     "SPEECH OUTPUT: 'Immutable Page.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -104,7 +104,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. Line Up",
     ["BRAILLE LINE:  'Login'",
      "     VISIBLE:  'Login', cursor=1",
-     "SPEECH OUTPUT: 'Login link'"]))
+     "SPEECH OUTPUT: 'Login link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -121,7 +121,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Orca (last edited 2007-12-07 22:09:22 by WillieWalker)'",
      "     VISIBLE:  'Orca (last edited 2007-12-07 22:', cursor=1",
      "SPEECH OUTPUT: 'Orca (last edited 2007-12-07 22:09:22 by'",
-     "SPEECH OUTPUT: 'WillieWalker link'",
+     "SPEECH OUTPUT: 'WillieWalker link.'",
      "SPEECH OUTPUT: ')'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -130,7 +130,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. Line Up",
     ["BRAILLE LINE:  'CategoryAccessibility'",
      "     VISIBLE:  'CategoryAccessibility', cursor=1",
-     "SPEECH OUTPUT: 'CategoryAccessibility link'"]))
+     "SPEECH OUTPUT: 'CategoryAccessibility link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -178,8 +178,8 @@ sequence.append(utils.AssertPresentationAction(
     "20. Line Up",
     ["BRAILLE LINE:  '• Python Pocket Reference, Mark Lutz'",
      "     VISIBLE:  '• Python Pocket Reference, Mark ', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Python Pocket Reference, Mark Lutz link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Python Pocket Reference, Mark Lutz link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -187,8 +187,8 @@ sequence.append(utils.AssertPresentationAction(
     "21. Line Up",
     ["BRAILLE LINE:  '• Python in a Nutshell, Alex Martelli'",
      "     VISIBLE:  '• Python in a Nutshell, Alex Mar', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Python in a Nutshell, Alex Martelli link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Python in a Nutshell, Alex Martelli link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -196,8 +196,8 @@ sequence.append(utils.AssertPresentationAction(
     "22. Line Up",
     ["BRAILLE LINE:  '• Dive Into Python, Mark Pilgrim'",
      "     VISIBLE:  '• Dive Into Python, Mark Pilgrim', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Dive Into Python, Mark Pilgrim link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Dive Into Python, Mark Pilgrim link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -205,9 +205,9 @@ sequence.append(utils.AssertPresentationAction(
     "23. Line Up",
     ["BRAILLE LINE:  '• Design documents: Orca Documentation Series'",
      "     VISIBLE:  '• Design documents: Orca Documen', cursor=1",
-     "SPEECH OUTPUT: '•'",
+     "SPEECH OUTPUT: '•.'",
      "SPEECH OUTPUT: 'Design documents:'",
-     "SPEECH OUTPUT: 'Orca Documentation Series link'"]))
+     "SPEECH OUTPUT: 'Orca Documentation Series link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -215,11 +215,11 @@ 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",
-     "SPEECH OUTPUT: '•'",
+     "SPEECH OUTPUT: '•.'",
      "SPEECH OUTPUT: 'Bug database:'",
-     "SPEECH OUTPUT: 'GNOME Bug Tracking System (Bugzilla) link'",
+     "SPEECH OUTPUT: 'GNOME Bug Tracking System (Bugzilla) link.'",
      "SPEECH OUTPUT: '('",
-     "SPEECH OUTPUT: 'current bug list link'",
+     "SPEECH OUTPUT: 'current bug list link.'",
      "SPEECH OUTPUT: ')'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -228,11 +228,11 @@ sequence.append(utils.AssertPresentationAction(
     "25. Line Up",
     ["BRAILLE LINE:  '• Mailing list: orca-list gnome org (Archives)'",
      "     VISIBLE:  '• Mailing list: orca-list gnome ', cursor=1",
-     "SPEECH OUTPUT: '•'",
+     "SPEECH OUTPUT: '•.'",
      "SPEECH OUTPUT: 'Mailing list:'",
-     "SPEECH OUTPUT: 'orca-list gnome org link'",
+     "SPEECH OUTPUT: 'orca-list gnome org link.'",
      "SPEECH OUTPUT: '('",
-     "SPEECH OUTPUT: 'Archives link'",
+     "SPEECH OUTPUT: 'Archives link.'",
      "SPEECH OUTPUT: ')'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -241,9 +241,9 @@ sequence.append(utils.AssertPresentationAction(
     "26. Line Up",
     ["BRAILLE LINE:  '• Frequently Asked Questions: FAQ'",
      "     VISIBLE:  '• Frequently Asked Questions: FA', cursor=1",
-     "SPEECH OUTPUT: '•'",
+     "SPEECH OUTPUT: '•.'",
      "SPEECH OUTPUT: 'Frequently Asked Questions:'",
-     "SPEECH OUTPUT: 'FAQ link'"]))
+     "SPEECH OUTPUT: 'FAQ link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -268,7 +268,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'There's a bunch you can do! Please refer to the How Can I Help page for detailed'",
      "     VISIBLE:  'There's a bunch you can do! Plea', cursor=1",
      "SPEECH OUTPUT: 'There's a bunch you can do! Please refer to the'",
-     "SPEECH OUTPUT: 'How Can I Help page link'",
+     "SPEECH OUTPUT: 'How Can I Help page link.'",
      "SPEECH OUTPUT: 'for detailed'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -286,7 +286,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Please also refer to the Accessible Applications page for detailed information.'",
      "     VISIBLE:  'Please also refer to the Accessi', cursor=1",
      "SPEECH OUTPUT: 'Please also refer to the'",
-     "SPEECH OUTPUT: 'Accessible Applications page link'",
+     "SPEECH OUTPUT: 'Accessible Applications page link.'",
      "SPEECH OUTPUT: 'for detailed information.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -304,7 +304,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'See also the Application Specific Settings page for how to configure settings specific 
to an'",
      "     VISIBLE:  'See also the Application Specifi', cursor=1",
      "SPEECH OUTPUT: 'See also the'",
-     "SPEECH OUTPUT: 'Application Specific Settings link'",
+     "SPEECH OUTPUT: 'Application Specific Settings link.'",
      "SPEECH OUTPUT: 'page for how to configure settings specific to an'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -346,7 +346,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'On the Accessible Applications page, you will find a growing list of information 
regarding'",
      "     VISIBLE:  'On the Accessible Applications p', cursor=1",
      "SPEECH OUTPUT: 'On the'",
-     "SPEECH OUTPUT: 'Accessible Applications page link'",
+     "SPEECH OUTPUT: 'Accessible Applications page link.'",
      "SPEECH OUTPUT: ', you will find a growing list of information regarding'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -372,7 +372,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'applications, OpenOffice, Firefox, and the Java platform. Some applications work 
better'",
      "     VISIBLE:  'applications, OpenOffice, Firefo', cursor=1",
      "SPEECH OUTPUT: 'applications,'",
-     "SPEECH OUTPUT: 'OpenOffice link'",
+     "SPEECH OUTPUT: 'OpenOffice link.'",
      "SPEECH OUTPUT: ', Firefox, and the Java platform. Some applications work better'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -406,7 +406,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Please also refer to the Configuration/Use page for detailed information.'",
      "     VISIBLE:  'Please also refer to the Configu', cursor=1",
      "SPEECH OUTPUT: 'Please also refer to the'",
-     "SPEECH OUTPUT: 'Configuration/Use page link'",
+     "SPEECH OUTPUT: 'Configuration/Use page link.'",
      "SPEECH OUTPUT: 'for detailed information.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -424,7 +424,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'information on Orca-specific keyboard commands. The Orca Configuration GUI also'",
      "     VISIBLE:  'information on Orca-specific key', cursor=1",
      "SPEECH OUTPUT: 'information on Orca-specific keyboard commands. The'",
-     "SPEECH OUTPUT: 'Orca Configuration GUI link'",
+     "SPEECH OUTPUT: 'Orca Configuration GUI link.'",
      "SPEECH OUTPUT: 'also'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -434,8 +434,8 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'mode to examine a window. Refer to Orca Keyboard Commands \(Laptop Layout\) for more'",
      "     VISIBLE:  'mode to examine a window. Refer ', cursor=1",
      "SPEECH OUTPUT: 'mode to examine a window. Refer to'",
-     "SPEECH OUTPUT: 'Orca Keyboard Commands link'",
-     "SPEECH OUTPUT: '\(Laptop Layout\) link'",
+     "SPEECH OUTPUT: 'Orca Keyboard Commands link.'",
+     "SPEECH OUTPUT: '\(Laptop Layout\) link.'",
      "SPEECH OUTPUT: 'for more'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -445,7 +445,7 @@ sequence.append(utils.AssertPresentationAction(
     ["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: 'link.'",
      "SPEECH OUTPUT: '(accessed by pressing Insert+Space when Orca is running) and for using flat review'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -456,7 +456,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'You may sometimes wish to contro', cursor=1",
      "SPEECH OUTPUT: 'You may sometimes wish to control Orca itself, such as bringing up the'",
      "SPEECH OUTPUT: 'Orca Configuration'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -473,7 +473,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'mechanisms of GNOME. These navigation mechanisms are consistent across most'",
      "     VISIBLE:  'mechanisms of GNOME. These navig', cursor=1",
      "SPEECH OUTPUT: 'mechanisms of GNOME'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: '. These navigation mechanisms are consistent across most'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -484,7 +484,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'designed to present information ', cursor=1",
      "SPEECH OUTPUT: 'designed to present information as you navigate the desktop using the'",
      "SPEECH OUTPUT: 'built-in navigation'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -525,7 +525,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Please also refer to the Download/Installation page for detailed information on 
various'",
      "     VISIBLE:  'Please also refer to the Downloa', cursor=1",
      "SPEECH OUTPUT: 'Please also refer to the'",
-     "SPEECH OUTPUT: 'Download/Installation page link'",
+     "SPEECH OUTPUT: 'Download/Installation page link.'",
      "SPEECH OUTPUT: 'for detailed information on various'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -535,7 +535,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'and Ubuntu.'",
      "     VISIBLE:  'and Ubuntu.', cursor=1",
      "SPEECH OUTPUT: 'and'",
-     "SPEECH OUTPUT: 'Ubuntu link'",
+     "SPEECH OUTPUT: 'Ubuntu link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -545,7 +545,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'provided by default on a number of operating system distributions, including Open 
Solaris'",
      "     VISIBLE:  'provided by default on a number ', cursor=1",
      "SPEECH OUTPUT: 'provided by default on a number of operating system distributions, including'",
-     "SPEECH OUTPUT: 'Open Solaris link'"]))
+     "SPEECH OUTPUT: 'Open Solaris link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -569,8 +569,8 @@ sequence.append(utils.AssertPresentationAction(
     "63. Line Up",
     ["BRAILLE LINE:  '• Guide to installing the latest versions of Firefox and Orca'",
      "     VISIBLE:  '• Guide to installing the latest', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Guide to installing the latest versions of Firefox and Orca link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Guide to installing the latest versions of Firefox and Orca link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -578,8 +578,8 @@ sequence.append(utils.AssertPresentationAction(
     "64. Line Up",
     ["BRAILLE LINE:  '• Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop'",
      "     VISIBLE:  '• Review of Fedora 7 and the Orc', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Review of Fedora 7 and the Orca screen reader for the Gnome graphical desktop 
link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -587,8 +587,8 @@ sequence.append(utils.AssertPresentationAction(
     "65. Line Up",
     ["BRAILLE LINE:  '• Walk through of the installation of Ubuntu 7.4. Very helpful tutorial'",
      "     VISIBLE:  '• Walk through of the installati', cursor=1",
-     "SPEECH OUTPUT: '•'",
-     "SPEECH OUTPUT: 'Walk through of the installation of Ubuntu 7.4. Very helpful tutorial link'"]))
+     "SPEECH OUTPUT: '•.'",
+     "SPEECH OUTPUT: 'Walk through of the installation of Ubuntu 7.4. Very helpful tutorial link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -597,7 +597,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '/linuxat.asp and include the following:'",
      "     VISIBLE:  '/linuxat.asp and include the fol', cursor=1",
      "SPEECH OUTPUT: '/linuxat.asp'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: 'and include the following:'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -608,7 +608,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'contribution (THANKS!)!!! The au', cursor=1",
      "SPEECH OUTPUT: 'contribution (THANKS!)!!! The audio guides can be found at'",
      "SPEECH OUTPUT: 'http://www.digitaldarragh.com'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -616,7 +616,7 @@ sequence.append(utils.AssertPresentationAction(
     "68. Line Up",
     ["BRAILLE LINE:  'Darragh Ó Héiligh has created several audio guides for Orca. This is a fantastic'",
      "     VISIBLE:  'Darragh Ó Héiligh has created se', cursor=1",
-     "SPEECH OUTPUT: 'Darragh Ó Héiligh link'",
+     "SPEECH OUTPUT: 'Darragh Ó Héiligh link.'",
      "SPEECH OUTPUT: 'has created several audio guides for Orca. This is a fantastic'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -642,9 +642,9 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Please join and participate on the Orca mailing list (archives): it's a helpful, kind, 
and'",
      "     VISIBLE:  'Please join and participate on t', cursor=1",
      "SPEECH OUTPUT: 'Please join and participate on the'",
-     "SPEECH OUTPUT: 'Orca mailing list link'",
+     "SPEECH OUTPUT: 'Orca mailing list link.'",
      "SPEECH OUTPUT: '('",
-     "SPEECH OUTPUT: 'archives link'",
+     "SPEECH OUTPUT: 'archives link.'",
      "SPEECH OUTPUT: '): it's a helpful, kind, and'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -654,7 +654,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'use Bugzilla\).'",
      "     VISIBLE:  'use Bugzilla\).', cursor=1",
      "SPEECH OUTPUT: 'use Bugzilla'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: '\).'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -664,10 +664,10 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'problems in other components, is maintained in Bugzilla \(please see our notes on how 
we'",
      "     VISIBLE:  'problems in other components, is', cursor=1",
      "SPEECH OUTPUT: 'problems in other components, is maintained in'",
-     "SPEECH OUTPUT: 'Bugzilla link'",
+     "SPEECH OUTPUT: 'Bugzilla link.'",
      "SPEECH OUTPUT: '\(please see our'",
      "SPEECH OUTPUT: 'notes on how we'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -684,7 +684,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'community members.'",
      "     VISIBLE:  'community members.', cursor=1",
      "SPEECH OUTPUT: 'community members'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: '.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -694,10 +694,10 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Microsystems, Inc. with contributions from many'",
      "     VISIBLE:  'Microsystems, Inc. with contribu', cursor=1",
      "SPEECH OUTPUT: 'Microsystems, Inc.'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: 'with'",
      "SPEECH OUTPUT: 'contributions from many'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -707,7 +707,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'been led by the Accessibility Pr', cursor=1",
      "SPEECH OUTPUT: 'been led by the'",
      "SPEECH OUTPUT: 'Accessibility Program Office of Sun'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -772,7 +772,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '8. More Information'",
      "     VISIBLE:  '8. More Information', cursor=1",
      "SPEECH OUTPUT: '8.'",
-     "SPEECH OUTPUT: 'More Information link'"]))
+     "SPEECH OUTPUT: 'More Information link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -781,7 +781,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '7. How Can I Help?'",
      "     VISIBLE:  '7. How Can I Help?', cursor=1",
      "SPEECH OUTPUT: '7.'",
-     "SPEECH OUTPUT: 'How Can I Help? link'"]))
+     "SPEECH OUTPUT: 'How Can I Help? link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -790,7 +790,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '6. Accessible Applications'",
      "     VISIBLE:  '6. Accessible Applications', cursor=1",
      "SPEECH OUTPUT: '6.'",
-     "SPEECH OUTPUT: 'Accessible Applications link'"]))
+     "SPEECH OUTPUT: 'Accessible Applications link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -799,7 +799,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '5. Configuration/Use'",
      "     VISIBLE:  '5. Configuration/Use', cursor=1",
      "SPEECH OUTPUT: '5.'",
-     "SPEECH OUTPUT: 'Configuration/Use link'"]))
+     "SPEECH OUTPUT: 'Configuration/Use link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -808,7 +808,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '4. Download/Installation'",
      "     VISIBLE:  '4. Download/Installation', cursor=1",
      "SPEECH OUTPUT: '4.'",
-     "SPEECH OUTPUT: 'Download/Installation link'"]))
+     "SPEECH OUTPUT: 'Download/Installation link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -817,7 +817,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '3. Audio Guides'",
      "     VISIBLE:  '3. Audio Guides', cursor=1",
      "SPEECH OUTPUT: '3.'",
-     "SPEECH OUTPUT: 'Audio Guides link'"]))
+     "SPEECH OUTPUT: 'Audio Guides link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -826,7 +826,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '2. About'",
      "     VISIBLE:  '2. About', cursor=1",
      "SPEECH OUTPUT: '2.'",
-     "SPEECH OUTPUT: 'About link'"]))
+     "SPEECH OUTPUT: 'About link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -835,7 +835,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  '1. Welcome to Orca!'",
      "     VISIBLE:  '1. Welcome to Orca!', cursor=1",
      "SPEECH OUTPUT: '1.'",
-     "SPEECH OUTPUT: 'Welcome to Orca! link'"]))
+     "SPEECH OUTPUT: 'Welcome to Orca! link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -852,7 +852,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'HOT HOT HOT: Notes on access to Firefox 3.0'",
      "     VISIBLE:  'HOT HOT HOT: Notes on access to ', cursor=1",
      "SPEECH OUTPUT: 'HOT HOT HOT: Notes on'",
-     "SPEECH OUTPUT: 'access to Firefox 3.0 link'"]))
+     "SPEECH OUTPUT: 'access to Firefox 3.0 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -860,7 +860,7 @@ sequence.append(utils.AssertPresentationAction(
     "95. Line Up",
     ["BRAILLE LINE:  'Orca Logo'",
      "     VISIBLE:  'Orca Logo', cursor=1",
-     "SPEECH OUTPUT: 'Orca Logo link'"]))
+     "SPEECH OUTPUT: 'Orca Logo link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -876,11 +876,11 @@ sequence.append(utils.AssertPresentationAction(
     "97. Line Up",
     ["BRAILLE LINE:  'Archives\) | FAQ | DocIndex'",
      "     VISIBLE:  'Archives\) | FAQ | DocIndex', cursor=1",
-     "SPEECH OUTPUT: 'Archives link'",
+     "SPEECH OUTPUT: 'Archives link.'",
      "SPEECH OUTPUT: '\) |'",
-     "SPEECH OUTPUT: 'FAQ link'",
+     "SPEECH OUTPUT: 'FAQ link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'DocIndex link'"]))
+     "SPEECH OUTPUT: 'DocIndex link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -888,15 +888,15 @@ sequence.append(utils.AssertPresentationAction(
     "98. Line Up",
     ["BRAILLE LINE:  'Home | Download/Installation | Configuration/Use | Accessible Applications | Mailing 
List \('",
      "     VISIBLE:  'Home | Download/Installation | C', cursor=1",
-     "SPEECH OUTPUT: 'Home link'",
+     "SPEECH OUTPUT: 'Home link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Download/Installation link'",
+     "SPEECH OUTPUT: 'Download/Installation link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Configuration/Use link'",
+     "SPEECH OUTPUT: 'Configuration/Use link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Accessible Applications link'",
+     "SPEECH OUTPUT: 'Accessible Applications link.'",
      "SPEECH OUTPUT: '|'",
-     "SPEECH OUTPUT: 'Mailing List link'",
+     "SPEECH OUTPUT: 'Mailing List link.'",
      "SPEECH OUTPUT: '('"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -905,7 +905,7 @@ sequence.append(utils.AssertPresentationAction(
     "99. Line Up",
     ["BRAILLE LINE:  'en Español'",
      "     VISIBLE:  'en Español', cursor=1",
-     "SPEECH OUTPUT: 'en Español link'"]))
+     "SPEECH OUTPUT: 'en Español link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -913,11 +913,11 @@ sequence.append(utils.AssertPresentationAction(
     "100. Line Up",
     ["BRAILLE LINE:  'Home RecentChanges FindPage HelpContents Orca'",
      "     VISIBLE:  'Home RecentChanges FindPage Help', cursor=1",
-     "SPEECH OUTPUT: 'Home link'",
-     "SPEECH OUTPUT: 'RecentChanges link'",
-     "SPEECH OUTPUT: 'FindPage link'",
-     "SPEECH OUTPUT: 'HelpContents link'",
-     "SPEECH OUTPUT: 'Orca link'"]))
+     "SPEECH OUTPUT: 'Home link.'",
+     "SPEECH OUTPUT: 'RecentChanges link.'",
+     "SPEECH OUTPUT: 'FindPage link.'",
+     "SPEECH OUTPUT: 'HelpContents link.'",
+     "SPEECH OUTPUT: 'Orca link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -936,13 +936,13 @@ sequence.append(utils.AssertPresentationAction(
     "102. Line Up",
     ["BRAILLE LINE:  'Home News Projects Art Support Development Community'",
      "     VISIBLE:  'Home News Projects Art Support D', cursor=1",
-     "SPEECH OUTPUT: 'Home link'",
-     "SPEECH OUTPUT: 'News link'",
-     "SPEECH OUTPUT: 'Projects link'",
-     "SPEECH OUTPUT: 'Art link'",
-     "SPEECH OUTPUT: 'Support link'",
-     "SPEECH OUTPUT: 'Development link'",
-     "SPEECH OUTPUT: 'Community link'"]))
+     "SPEECH OUTPUT: 'Home link.'",
+     "SPEECH OUTPUT: 'News link.'",
+     "SPEECH OUTPUT: 'Projects link.'",
+     "SPEECH OUTPUT: 'Art link.'",
+     "SPEECH OUTPUT: 'Support link.'",
+     "SPEECH OUTPUT: 'Development link.'",
+     "SPEECH OUTPUT: 'Community link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/link_where_am_i.py b/test/keystrokes/firefox/link_where_am_i.py
index 432de50..2703279 100644
--- a/test/keystrokes/firefox/link_where_am_i.py
+++ b/test/keystrokes/firefox/link_where_am_i.py
@@ -15,7 +15,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. Where Am I on Product summary link", 
     ["BRAILLE LINE:  'Product summary'",
      "     VISIBLE:  'Product summary', cursor=1",
-     "SPEECH OUTPUT: 'http link Product summary different site'"]))
+     "SPEECH OUTPUT: 'http link Product summary.'",
+     "SPEECH OUTPUT: 'different site.'"]))
 
 sequence.append(KeyComboAction("<Control>Home"))
 sequence.append(KeyComboAction("Tab"))
@@ -26,7 +27,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Where Am I on New bug link", 
     ["BRAILLE LINE:  'New bug'",
      "     VISIBLE:  'New bug', cursor=1",
-     "SPEECH OUTPUT: 'http link New bug different site'"]))
+     "SPEECH OUTPUT: 'http link New bug.'",
+     "SPEECH OUTPUT: 'different site.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_1.py b/test/keystrokes/firefox/longdesc_1.py
index 19ed2b8..33bc61c 100644
--- a/test/keystrokes/firefox/longdesc_1.py
+++ b/test/keystrokes/firefox/longdesc_1.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_10.py b/test/keystrokes/firefox/longdesc_10.py
index 5fe5b33..71c5d88 100644
--- a/test/keystrokes/firefox/longdesc_10.py
+++ b/test/keystrokes/firefox/longdesc_10.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+     "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_11.py b/test/keystrokes/firefox/longdesc_11.py
index b69607b..18ea5ba 100644
--- a/test/keystrokes/firefox/longdesc_11.py
+++ b/test/keystrokes/firefox/longdesc_11.py
@@ -26,7 +26,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_12.py b/test/keystrokes/firefox/longdesc_12.py
index 28f2897..25c0613 100644
--- a/test/keystrokes/firefox/longdesc_12.py
+++ b/test/keystrokes/firefox/longdesc_12.py
@@ -28,7 +28,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=(0|1)",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_13.py b/test/keystrokes/firefox/longdesc_13.py
index 79bffc4..05b7fbe 100644
--- a/test/keystrokes/firefox/longdesc_13.py
+++ b/test/keystrokes/firefox/longdesc_13.py
@@ -33,7 +33,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_14.py b/test/keystrokes/firefox/longdesc_14.py
index 19ed2b8..33bc61c 100644
--- a/test/keystrokes/firefox/longdesc_14.py
+++ b/test/keystrokes/firefox/longdesc_14.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_15.py b/test/keystrokes/firefox/longdesc_15.py
index 19ed2b8..33bc61c 100644
--- a/test/keystrokes/firefox/longdesc_15.py
+++ b/test/keystrokes/firefox/longdesc_15.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_2.py b/test/keystrokes/firefox/longdesc_2.py
index 19ed2b8..33bc61c 100644
--- a/test/keystrokes/firefox/longdesc_2.py
+++ b/test/keystrokes/firefox/longdesc_2.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_3.py b/test/keystrokes/firefox/longdesc_3.py
index 5fe5b33..9726b5b 100644
--- a/test/keystrokes/firefox/longdesc_3.py
+++ b/test/keystrokes/firefox/longdesc_3.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_7.py b/test/keystrokes/firefox/longdesc_7.py
index 5fe5b33..9726b5b 100644
--- a/test/keystrokes/firefox/longdesc_7.py
+++ b/test/keystrokes/firefox/longdesc_7.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_8.py b/test/keystrokes/firefox/longdesc_8.py
index b69607b..18ea5ba 100644
--- a/test/keystrokes/firefox/longdesc_8.py
+++ b/test/keystrokes/firefox/longdesc_8.py
@@ -26,7 +26,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/longdesc_9.py b/test/keystrokes/firefox/longdesc_9.py
index 5fe5b33..9726b5b 100644
--- a/test/keystrokes/firefox/longdesc_9.py
+++ b/test/keystrokes/firefox/longdesc_9.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. Having selected View Description, do a Where Am I for new location",
     ["BRAILLE LINE:  'Pass h1'",
      "     VISIBLE:  'Pass h1', cursor=1",
-     "SPEECH OUTPUT: 'heading level 1 Pass'"]))
+          "SPEECH OUTPUT: 'heading level 1.'",
+     "SPEECH OUTPUT: 'Pass'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_fraction.params 
b/test/keystrokes/firefox/math_line_nav_fraction.params
new file mode 100644
index 0000000..c2c6672
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_fraction.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-fraction.html
diff --git a/test/keystrokes/firefox/math_line_nav_fraction.py 
b/test/keystrokes/firefox/math_line_nav_fraction.py
new file mode 100644
index 0000000..ae21ea7
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_fraction.py
@@ -0,0 +1,54 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML fraction test cases'",
+     "     VISIBLE:  'MathML fraction test cases', cursor=1",
+     "SPEECH OUTPUT: 'MathML fraction test cases'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'fraction start.'",
+     "SPEECH OUTPUT: 'a over b.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["KNOWN ISSUE: When performed manually, the results are as expected; need to find out why it fails as an 
automated test.",
+     "BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'blank'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "4. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'fraction without bar, start.'",
+     "SPEECH OUTPUT: 'a over b.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "5. Line Down",
+    ["BRAILLE LINE:  'End of test'",
+     "     VISIBLE:  'End of test', cursor=1",
+     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_mathvariant.params 
b/test/keystrokes/firefox/math_line_nav_mathvariant.params
new file mode 100644
index 0000000..5645adb
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_mathvariant.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-mathvariant.html
diff --git a/test/keystrokes/firefox/math_line_nav_mathvariant.py 
b/test/keystrokes/firefox/math_line_nav_mathvariant.py
new file mode 100644
index 0000000..94dc5a3
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_mathvariant.py
@@ -0,0 +1,70 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML mathvariant test cases'",
+     "     VISIBLE:  'MathML mathvariant test cases', cursor=1",
+     "SPEECH OUTPUT: 'MathML mathvariant test cases'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["KNOWN ISSUE: The variant is not exposed to us. https://bugzilla.mozilla.org/show_bug.cgi?id=1182469";,
+     "BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q 
r s t u v w x y z'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["KNOWN ISSUE: We seem to get stuck on the previous item.",
+     "BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q 
r s t u v w x y z'"]))
+#     "BRAILLE LINE:  'End of first case'",
+#     "     VISIBLE:  'End of first case', cursor=1",
+#     "SPEECH OUTPUT: 'End of first case'"]))
+
+#sequence.append(utils.StartRecordingAction())
+#sequence.append(KeyComboAction("Down"))
+#sequence.append(utils.AssertPresentationAction(
+#    "4. Line Down",
+#    ["BRAILLE LINE:  'math'",
+#     "     VISIBLE:  'math', cursor=0",
+#     "SPEECH OUTPUT: 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q 
r s t u v w x y z'"]))
+#
+#sequence.append(utils.StartRecordingAction())
+#sequence.append(KeyComboAction("Down"))
+#sequence.append(utils.AssertPresentationAction(
+#    "5. Line Down",
+#    ["BRAILLE LINE:  'End of second case'",
+#     "     VISIBLE:  'End of second case', cursor=1",
+#     "SPEECH OUTPUT: 'End of second case'"]))
+#
+#sequence.append(utils.StartRecordingAction())
+#sequence.append(KeyComboAction("Down"))
+#sequence.append(utils.AssertPresentationAction(
+#    "6. Line Down",
+#    ["BRAILLE LINE:  'math'",
+#     "     VISIBLE:  'math', cursor=0",
+#     "SPEECH OUTPUT: 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q 
r s t u v w x y z'"]))
+#
+#sequence.append(utils.StartRecordingAction())
+#sequence.append(KeyComboAction("Down"))
+#sequence.append(utils.AssertPresentationAction(
+#    "7. Line Down",
+#    ["BRAILLE LINE:  'End of test'",
+#     "     VISIBLE:  'End of test', cursor=1",
+#     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_menclose.params 
b/test/keystrokes/firefox/math_line_nav_menclose.params
new file mode 100644
index 0000000..1f1e792
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_menclose.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-menclose.html
diff --git a/test/keystrokes/firefox/math_line_nav_menclose.py 
b/test/keystrokes/firefox/math_line_nav_menclose.py
new file mode 100644
index 0000000..b0b2fab
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_menclose.py
@@ -0,0 +1,177 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML menclose test cases'",
+     "     VISIBLE:  'MathML menclose test cases', cursor=1",
+     "SPEECH OUTPUT: 'MathML menclose test cases'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a long division sign'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a long division sign'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "4. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: an actuarial symbol'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "5. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a phasor angle'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "6. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a radical'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "7. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a box'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "8. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a rounded box'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "9. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a circle'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "10. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a line on the left'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "11. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a line on the right'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "12. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a line at the top'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "13. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a line at the bottom'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "14. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a line on the left and a line on the right'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "15. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a line at the bottom, a line on the left, a line on the right, 
and, a line at the top'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "16. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: an up diagonal strike'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "17. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a down diagonal strike'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "18. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a vertical strike'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "19. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: a horizontal strike'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "20. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y Enclosed by: an arabic factorial symbol'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "21. Line Down",
+    ["BRAILLE LINE:  'End of test'",
+     "     VISIBLE:  'End of test', cursor=1",
+     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_mfenced.params 
b/test/keystrokes/firefox/math_line_nav_mfenced.params
new file mode 100644
index 0000000..591b205
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_mfenced.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-mfenced.html
diff --git a/test/keystrokes/firefox/math_line_nav_mfenced.py 
b/test/keystrokes/firefox/math_line_nav_mfenced.py
new file mode 100644
index 0000000..74ca40d
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_mfenced.py
@@ -0,0 +1,67 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML mfenced test cases'",
+     "     VISIBLE:  'MathML mfenced test cases', cursor=1",
+     "SPEECH OUTPUT: 'MathML mfenced test cases'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left paren.'",
+     "SPEECH OUTPUT: 'a comma.'",
+     "SPEECH OUTPUT: 'b comma.'",
+     "SPEECH OUTPUT: 'c comma.'",
+     "SPEECH OUTPUT: 'd comma.'",
+     "SPEECH OUTPUT: 'e.'",
+     "SPEECH OUTPUT: 'right paren'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left brace.'",
+     "SPEECH OUTPUT: 'a semicolon.'",
+     "SPEECH OUTPUT: 'b semicolon.'",
+     "SPEECH OUTPUT: 'c semicolon.'",
+     "SPEECH OUTPUT: 'd semicolon.'",
+     "SPEECH OUTPUT: 'e.'",
+     "SPEECH OUTPUT: 'right brace'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "4. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left brace.'",
+     "SPEECH OUTPUT: 'a semicolon.'",
+     "SPEECH OUTPUT: 'b semicolon.'",
+     "SPEECH OUTPUT: 'c comma.'",
+     "SPEECH OUTPUT: 'd comma.'",
+     "SPEECH OUTPUT: 'e.'",
+     "SPEECH OUTPUT: 'right brace'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "5. Line Down",
+    ["BRAILLE LINE:  'End of test'",
+     "     VISIBLE:  'End of test', cursor=1",
+     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_mroot.params 
b/test/keystrokes/firefox/math_line_nav_mroot.params
new file mode 100644
index 0000000..51e99b9
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_mroot.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-mroot.html
diff --git a/test/keystrokes/firefox/math_line_nav_mroot.py b/test/keystrokes/firefox/math_line_nav_mroot.py
new file mode 100644
index 0000000..33a7da5
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_mroot.py
@@ -0,0 +1,136 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML root test cases'",
+     "     VISIBLE:  'MathML root test cases', cursor=1",
+     "SPEECH OUTPUT: 'MathML root test cases'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'square root of a.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'square root of a b c.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "4. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'square root of a.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "5. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'cube root of a.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "6. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: '3 plus 4 root of a.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "7. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'fraction start.'",
+     "SPEECH OUTPUT: '3 over 4.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'root of a.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "8. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'square root of b.'",
+     "SPEECH OUTPUT: 'root end.'",
+     "SPEECH OUTPUT: 'root of a.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "9. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'square root of fraction start.'",
+     "SPEECH OUTPUT: 'a over b.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "10. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'cube root of fraction start.'",
+     "SPEECH OUTPUT: 'a over b.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "11. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'c plus d root of fraction start.'",
+     "SPEECH OUTPUT: 'a over b.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "12. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'b'",
+     "SPEECH OUTPUT: 'root of a.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "13. Line Down",
+    ["BRAILLE LINE:  'End of test'",
+     "     VISIBLE:  'End of test', cursor=1",
+     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_mrow.params 
b/test/keystrokes/firefox/math_line_nav_mrow.params
new file mode 100644
index 0000000..0b3f8d3
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_mrow.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-mrow.html
diff --git a/test/keystrokes/firefox/math_line_nav_mrow.py b/test/keystrokes/firefox/math_line_nav_mrow.py
new file mode 100644
index 0000000..797567c
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_mrow.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML mrow test cases'",
+     "     VISIBLE:  'MathML mrow test cases', cursor=1",
+     "SPEECH OUTPUT: 'MathML mrow test cases'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus 2'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["BRAILLE LINE:  'End of first case'",
+     "     VISIBLE:  'End of first case', cursor=1",
+     "SPEECH OUTPUT: 'End of first case'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "4. Line Down",
+    ["KNOWN ISSUE: We probably should convert the multi-char symbols into explicitly-spoken strings",
+     "BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left paren x ≪̸ y right paren logical and left paren X ⊂⃒ Y right paren'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "5. Line Down",
+    ["KNOWN ISSUE: And we seem to be getting stuck here",
+     "BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left paren x ≪̸ y right paren logical and left paren X ⊂⃒ Y right paren'"]))
+
+#sequence.append(utils.StartRecordingAction())
+#sequence.append(KeyComboAction("Down"))
+#sequence.append(utils.AssertPresentationAction(
+#    "5. Line Down",
+#    ["BRAILLE LINE:  'End of test'",
+#     "     VISIBLE:  'End of test', cursor=1",
+#     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_scripts.params 
b/test/keystrokes/firefox/math_line_nav_scripts.params
new file mode 100644
index 0000000..1e9026e
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_scripts.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-scripts.html
diff --git a/test/keystrokes/firefox/math_line_nav_scripts.py 
b/test/keystrokes/firefox/math_line_nav_scripts.py
new file mode 100644
index 0000000..53df162
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_scripts.py
@@ -0,0 +1,131 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML test cases with scripts'",
+     "     VISIBLE:  'MathML test cases with scripts', cursor=1",
+     "SPEECH OUTPUT: 'MathML test cases with scripts'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'subscript b.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'superscript b.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "4. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'subscript b.'",
+     "SPEECH OUTPUT: 'superscript c.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "5. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'underscript b.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "6. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'overscript b.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "7. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'underscript b.'",
+     "SPEECH OUTPUT: 'overscript c.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "8. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'pre-subscript d'",
+     "SPEECH OUTPUT: 'pre-superscript e'",
+     "SPEECH OUTPUT: 'subscript b'",
+     "SPEECH OUTPUT: 'superscript c'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "9. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'subscript b'",
+     "SPEECH OUTPUT: 'superscript c'",
+     "SPEECH OUTPUT: 'subscript d'",
+     "SPEECH OUTPUT: 'superscript e'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "10. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'pre-subscript b'",
+     "SPEECH OUTPUT: 'pre-superscript c'",
+     "SPEECH OUTPUT: 'pre-subscript d'",
+     "SPEECH OUTPUT: 'pre-superscript e'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "11. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'pre-subscript e'",
+     "SPEECH OUTPUT: 'pre-superscript f'",
+     "SPEECH OUTPUT: 'pre-superscript g'",
+     "SPEECH OUTPUT: 'subscript b'",
+     "SPEECH OUTPUT: 'subscript c'",
+     "SPEECH OUTPUT: 'superscript d'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "12. Line Down",
+    ["BRAILLE LINE:  'End of test'",
+     "     VISIBLE:  'End of test', cursor=1",
+     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_table.params 
b/test/keystrokes/firefox/math_line_nav_table.params
new file mode 100644
index 0000000..d3a351a
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_table.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-table.html
diff --git a/test/keystrokes/firefox/math_line_nav_table.py b/test/keystrokes/firefox/math_line_nav_table.py
new file mode 100644
index 0000000..eec47eb
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_table.py
@@ -0,0 +1,42 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML table test cases (beyond all the torture-test test cases)'",
+     "     VISIBLE:  'MathML table test cases (beyond ', cursor=1",
+     "SPEECH OUTPUT: 'MathML table test cases (beyond all the torture-test test cases)'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'math table with 2 rows 3 columns.'",
+     "SPEECH OUTPUT: 'row 1.'",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'b.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'row 2.'",
+     "SPEECH OUTPUT: 'd.'",
+     "SPEECH OUTPUT: 'e.'",
+     "SPEECH OUTPUT: 'f.'",
+     "SPEECH OUTPUT: 'table end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["BRAILLE LINE:  'End of test'",
+     "     VISIBLE:  'End of test', cursor=1",
+     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/math_line_nav_torture_test.params 
b/test/keystrokes/firefox/math_line_nav_torture_test.params
new file mode 100644
index 0000000..c679194
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_torture_test.params
@@ -0,0 +1 @@
+PARAMS=$TEST_DIR/../../html/math-torture-test.html
diff --git a/test/keystrokes/firefox/math_line_nav_torture_test.py 
b/test/keystrokes/firefox/math_line_nav_torture_test.py
new file mode 100644
index 0000000..42e2f3f
--- /dev/null
+++ b/test/keystrokes/firefox/math_line_nav_torture_test.py
@@ -0,0 +1,482 @@
+#!/usr/bin/python
+
+from macaroon.playback import *
+import utils
+
+sequence = MacroSequence()
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("<Control>Home"))
+sequence.append(utils.AssertPresentationAction(
+    "1. Top of file",
+    ["BRAILLE LINE:  'MathML \"Torture Test\" test cases'",
+     "     VISIBLE:  'MathML \"Torture Test\" test cases', cursor=1",
+     "SPEECH OUTPUT: 'MathML \"Torture Test\" test cases'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "2. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'y.'",
+     "SPEECH OUTPUT: 'superscript 2.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "3. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'F.'",
+     "SPEECH OUTPUT: 'pre-subscript 2'",
+     "SPEECH OUTPUT: 'subscript 3'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "4. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'fraction start.'",
+     "SPEECH OUTPUT: 'x plus y.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'over k plus 1.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "5. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus y.'",
+     "SPEECH OUTPUT: 'superscript fraction start.'",
+     "SPEECH OUTPUT: '2 over k plus 1.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "6. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'fraction start.'",
+     "SPEECH OUTPUT: 'a over b slash 2.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "7. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'subscript 0.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: '1 over a.'",
+     "SPEECH OUTPUT: 'subscript 1.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: '1 over a.'",
+     "SPEECH OUTPUT: 'subscript 2.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: '1 over a.'",
+     "SPEECH OUTPUT: 'subscript 3.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: '1 over a.'",
+     "SPEECH OUTPUT: 'subscript 4.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "8. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'subscript 0.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: '1 over a.'",
+     "SPEECH OUTPUT: 'subscript 1.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: '1 over a.'",
+     "SPEECH OUTPUT: 'subscript 2.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: '1 over a.'",
+     "SPEECH OUTPUT: 'subscript 3.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: '1 over a.'",
+     "SPEECH OUTPUT: 'subscript 4.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "9. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left paren fraction without bar, start.'",
+     "SPEECH OUTPUT: 'n over k slash 2.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'right paren'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "10. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left paren fraction without bar, start.'",
+     "SPEECH OUTPUT: 'p over 2.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'right paren x.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'y.'",
+     "SPEECH OUTPUT: 'superscript p minus 2.'",
+     "SPEECH OUTPUT: 'minus fraction start.'",
+     "SPEECH OUTPUT: '1 over 1 minus x.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'fraction start.'",
+     "SPEECH OUTPUT: '1 over 1 minus x.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "11. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'sum.'",
+     "SPEECH OUTPUT: 'underscript fraction without bar, start.'",
+     "SPEECH OUTPUT: '0 less than or equal to i less than or equal to m over 0 less than j less than n.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'P left paren i comma j right paren'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "12. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x.'",
+     "SPEECH OUTPUT: 'superscript 2 y.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "13. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+    "SPEECH OUTPUT: 'sum.'",
+     "SPEECH OUTPUT: 'underscript i equals 1.'",
+     "SPEECH OUTPUT: 'overscript p.'",
+     "SPEECH OUTPUT: 'sum.'",
+     "SPEECH OUTPUT: 'underscript j equals 1.'",
+     "SPEECH OUTPUT: 'overscript q.'",
+     "SPEECH OUTPUT: 'sum.'",
+     "SPEECH OUTPUT: 'underscript k equals 1.'",
+     "SPEECH OUTPUT: 'overscript r.'",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'subscript i j.'",
+     "SPEECH OUTPUT: 'b.'",
+     "SPEECH OUTPUT: 'subscript j k.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript k i.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "14. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'square root of 1 plus square root of 1 plus square root of 1 plus square root of 1 
plus square root of 1 plus square root of 1 plus square root of 1 plus x.'",
+     "SPEECH OUTPUT: 'root end.'",
+     "SPEECH OUTPUT: 'root end.'",
+     "SPEECH OUTPUT: 'root end.'",
+     "SPEECH OUTPUT: 'root end.'",
+     "SPEECH OUTPUT: 'root end.'",
+     "SPEECH OUTPUT: 'root end.'",
+     "SPEECH OUTPUT: 'root end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "15. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left paren fraction start.'",
+     "SPEECH OUTPUT: 'partial differential.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'over partial differential x.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'plus fraction start.'",
+     "SPEECH OUTPUT: 'partial differential.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'over partial differential y.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'fraction end.'",
+     "SPEECH OUTPUT: 'right paren vertical bar φ  left paren x plus i y right paren vertical bar.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'equals 0'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "16. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: '2.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'superscript 2.'",
+     "SPEECH OUTPUT: 'superscript x.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "17. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'integral.'",
+     "SPEECH OUTPUT: 'subscript 1.'",
+     "SPEECH OUTPUT: 'superscript x.'",
+     "SPEECH OUTPUT: 'fraction start.'",
+     "SPEECH OUTPUT: 'd t over t.'",
+     "SPEECH OUTPUT: 'fraction end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "18. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+    "SPEECH OUTPUT: 'double integral.'",
+     "SPEECH OUTPUT: 'subscript D.'",
+     "SPEECH OUTPUT: 'd x d y'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "19. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'f left paren x right paren equals left brace math table with 3 rows 2 columns.'",
+     "SPEECH OUTPUT: 'row 1.'",
+     "SPEECH OUTPUT: '1 slash 3.'",
+     "SPEECH OUTPUT: 'if  0 less than or equal to x less than or equal to 1 semicolon.'",
+     "SPEECH OUTPUT: 'row 2.'",
+     "SPEECH OUTPUT: '2 slash 3.'",
+     "SPEECH OUTPUT: 'if  3 less than or equal to x less than or equal to 4 semicolon.'",
+     "SPEECH OUTPUT: 'row 3.'",
+     "SPEECH OUTPUT: '0.'",
+     "SPEECH OUTPUT: 'elsewhere.'",
+     "SPEECH OUTPUT: 'table end.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "20. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x plus ... plus x.'",
+     "SPEECH OUTPUT: 'overscript top brace.'",
+     "SPEECH OUTPUT: 'overscript k times.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "21. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'y.'",
+     "SPEECH OUTPUT: 'subscript x.'",
+     "SPEECH OUTPUT: 'superscript 2.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "22. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'sum.'",
+     "SPEECH OUTPUT: 'underscript p  prime.'",
+     "SPEECH OUTPUT: 'f left paren p right paren equals integral.'",
+     "SPEECH OUTPUT: 'subscript t greater than 1.'",
+     "SPEECH OUTPUT: 'f left paren t right paren d π left paren t right paren'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "23. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left brace a comma ... comma a.'",
+     "SPEECH OUTPUT: 'overscript top brace.'",
+     "SPEECH OUTPUT: 'overscript k   a 's.'",
+     "SPEECH OUTPUT: 'comma b comma ... comma b.'",
+     "SPEECH OUTPUT: 'overscript top brace.'",
+     "SPEECH OUTPUT: 'overscript l   b 's.'",
+     "SPEECH OUTPUT: 'underscript bottom brace.'",
+     "SPEECH OUTPUT: 'underscript k plus l  elements.'",
+     "SPEECH OUTPUT: 'right brace'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "24. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'left paren math table with 2 rows 2 columns.'",
+     "SPEECH OUTPUT: 'row 1.'",
+     "SPEECH OUTPUT: 'left paren nested math table with 2 rows 2 columns.'",
+     "SPEECH OUTPUT: 'row 1.'",
+     "SPEECH OUTPUT: 'a.'",
+     "SPEECH OUTPUT: 'b.'",
+     "SPEECH OUTPUT: 'row 2.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'd.'",
+     "SPEECH OUTPUT: 'nested table end.'",
+     "SPEECH OUTPUT: 'right paren.'",
+     "SPEECH OUTPUT: 'left paren nested math table with 2 rows 2 columns.'",
+     "SPEECH OUTPUT: 'row 1.'",
+     "SPEECH OUTPUT: 'e.'",
+     "SPEECH OUTPUT: 'f.'",
+     "SPEECH OUTPUT: 'row 2.'",
+     "SPEECH OUTPUT: 'g.'",
+     "SPEECH OUTPUT: 'h.'",
+     "SPEECH OUTPUT: 'nested table end.'",
+     "SPEECH OUTPUT: 'right paren.'",
+     "SPEECH OUTPUT: 'row 2.'",
+     "SPEECH OUTPUT: '0.'",
+     "SPEECH OUTPUT: 'left paren nested math table with 2 rows 2 columns.'",
+     "SPEECH OUTPUT: 'row 1.'",
+     "SPEECH OUTPUT: 'i.'",
+     "SPEECH OUTPUT: 'j.'",
+     "SPEECH OUTPUT: 'row 2.'",
+     "SPEECH OUTPUT: 'k.'",
+     "SPEECH OUTPUT: 'l.'",
+     "SPEECH OUTPUT: 'nested table end.'",
+     "SPEECH OUTPUT: 'right paren.'",
+     "SPEECH OUTPUT: 'table end.'",
+     "SPEECH OUTPUT: 'right paren'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "25. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'det vertical bar math table with 5 rows 5 columns.'",
+     "SPEECH OUTPUT: 'row 1.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 0.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 1.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 2.'",
+     "SPEECH OUTPUT: 'horizontal ellipsis.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript n.'",
+     "SPEECH OUTPUT: 'row 2.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 1.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 2.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 3.'",
+     "SPEECH OUTPUT: 'horizontal ellipsis.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript n plus 1.'",
+     "SPEECH OUTPUT: 'row 3.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 2.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 3.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 4.'",
+     "SPEECH OUTPUT: 'horizontal ellipsis.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript n plus 2.'",
+     "SPEECH OUTPUT: 'row 4.'",
+     "SPEECH OUTPUT: 'vertical ellipsis.'",
+     "SPEECH OUTPUT: 'vertical ellipsis.'",
+     "SPEECH OUTPUT: 'vertical ellipsis.'",
+     "SPEECH OUTPUT: 'blank.'",
+     "SPEECH OUTPUT: 'vertical ellipsis.'",
+     "SPEECH OUTPUT: 'row 5.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript n.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript n plus 1.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript n plus 2.'",
+     "SPEECH OUTPUT: 'horizontal ellipsis.'",
+     "SPEECH OUTPUT: 'c.'",
+     "SPEECH OUTPUT: 'subscript 2 n.'",
+     "SPEECH OUTPUT: 'table end.'",
+     "SPEECH OUTPUT: 'vertical bar greater than 0'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "26. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'y.'",
+     "SPEECH OUTPUT: 'subscript x.'",
+     "SPEECH OUTPUT: 'subscript 2.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "27. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x.'",
+     "SPEECH OUTPUT: 'subscript 92.'",
+     "SPEECH OUTPUT: 'superscript 31415.'",
+     "SPEECH OUTPUT: 'plus π'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "28. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'x.'",
+     "SPEECH OUTPUT: 'subscript y.'",
+     "SPEECH OUTPUT: 'subscript b.'",
+     "SPEECH OUTPUT: 'superscript a.'",
+     "SPEECH OUTPUT: 'superscript z.'",
+     "SPEECH OUTPUT: 'subscript c.'",
+     "SPEECH OUTPUT: 'superscript d.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "29. Line Down",
+    ["BRAILLE LINE:  'math'",
+     "     VISIBLE:  'math', cursor=0",
+     "SPEECH OUTPUT: 'y.'",
+     "SPEECH OUTPUT: 'subscript 3.'",
+     "SPEECH OUTPUT: 'superscript triple prime.'"]))
+
+sequence.append(utils.StartRecordingAction())
+sequence.append(KeyComboAction("Down"))
+sequence.append(utils.AssertPresentationAction(
+    "30. Line Down",
+    ["BRAILLE LINE:  'End of test'",
+     "     VISIBLE:  'End of test', cursor=1",
+     "SPEECH OUTPUT: 'End of test'"]))
+
+sequence.append(utils.AssertionSummaryAction())
+sequence.start()
diff --git a/test/keystrokes/firefox/object_nav_descriptions_down.py 
b/test/keystrokes/firefox/object_nav_descriptions_down.py
index e0cbe3d..b43d130 100644
--- a/test/keystrokes/firefox/object_nav_descriptions_down.py
+++ b/test/keystrokes/firefox/object_nav_descriptions_down.py
@@ -19,7 +19,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Line Down",
     ["BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
-     "SPEECH OUTPUT: 'Foo link'"]))
+     "SPEECH OUTPUT: 'Foo link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -35,7 +35,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'Bar'",
      "     VISIBLE:  'Bar', cursor=1",
-     "SPEECH OUTPUT: 'Bar link'"]))
+     "SPEECH OUTPUT: 'Bar link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -51,7 +51,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Line Down",
     ["BRAILLE LINE:  'Baz'",
      "     VISIBLE:  'Baz', cursor=1",
-     "SPEECH OUTPUT: 'Baz link'"]))
+     "SPEECH OUTPUT: 'Baz link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
diff --git a/test/keystrokes/firefox/object_nav_descriptions_up.py 
b/test/keystrokes/firefox/object_nav_descriptions_up.py
index f7edfa9..8896421 100644
--- a/test/keystrokes/firefox/object_nav_descriptions_up.py
+++ b/test/keystrokes/firefox/object_nav_descriptions_up.py
@@ -139,7 +139,7 @@ sequence.append(utils.AssertPresentationAction(
     "16. Line Up",
     ["BRAILLE LINE:  'Baz'",
      "     VISIBLE:  'Baz', cursor=1",
-     "SPEECH OUTPUT: 'Baz link'"]))
+     "SPEECH OUTPUT: 'Baz link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -155,7 +155,7 @@ sequence.append(utils.AssertPresentationAction(
     "18. Line Up",
     ["BRAILLE LINE:  'Bar'",
      "     VISIBLE:  'Bar', cursor=1",
-     "SPEECH OUTPUT: 'Bar link'"]))
+     "SPEECH OUTPUT: 'Bar link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -171,7 +171,7 @@ sequence.append(utils.AssertPresentationAction(
     "20. Line Up",
     ["BRAILLE LINE:  'Foo'",
      "     VISIBLE:  'Foo', cursor=1",
-     "SPEECH OUTPUT: 'Foo link'"]))
+     "SPEECH OUTPUT: 'Foo link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/object_nav_link_in_quotes.py 
b/test/keystrokes/firefox/object_nav_link_in_quotes.py
index be35925..8030d26 100644
--- a/test/keystrokes/firefox/object_nav_link_in_quotes.py
+++ b/test/keystrokes/firefox/object_nav_link_in_quotes.py
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Line Down",
     ["BRAILLE LINE:  'line 2'",
      "     VISIBLE:  'line 2', cursor=1",
-     "SPEECH OUTPUT: 'line 2 link'"]))
+     "SPEECH OUTPUT: 'line 2 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -65,7 +65,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Line Up",
     ["BRAILLE LINE:  'line 2'",
      "     VISIBLE:  'line 2', cursor=1",
-     "SPEECH OUTPUT: 'line 2 link'"]))
+     "SPEECH OUTPUT: 'line 2 link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/object_nav_links_in_text.py 
b/test/keystrokes/firefox/object_nav_links_in_text.py
index 6e99960..858f0c0 100644
--- a/test/keystrokes/firefox/object_nav_links_in_text.py
+++ b/test/keystrokes/firefox/object_nav_links_in_text.py
@@ -13,7 +13,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
     ["BRAILLE LINE:  'Home'",
      "     VISIBLE:  'Home', cursor=1",
-     "SPEECH OUTPUT: 'Home link'"]))
+     "SPEECH OUTPUT: 'Home link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("H"))
@@ -37,7 +37,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. line Down",
     ["BRAILLE LINE:  'Before reporting a bug, please read the'",
      "     VISIBLE:  'Before reporting a bug, please r', cursor=1",
-     "SPEECH OUTPUT: 'Before reporting a bug, please read the'"]))
+     "SPEECH OUTPUT: 'Before reporting a bug, please read the.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -45,7 +45,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. line Down",
     ["BRAILLE LINE:  'bug writing guidelines'",
      "     VISIBLE:  'bug writing guidelines', cursor=1",
-     "SPEECH OUTPUT: 'bug writing guidelines link'"]))
+     "SPEECH OUTPUT: 'bug writing guidelines link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -53,7 +53,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. line Down",
     ["BRAILLE LINE:  ','",
      "     VISIBLE:  ',', cursor=1",
-     "SPEECH OUTPUT: ','"]))
+     "SPEECH OUTPUT: ',.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -61,7 +61,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. line Down",
     ["BRAILLE LINE:  'please look at the list of'",
      "     VISIBLE:  'please look at the list of', cursor=1",
-     "SPEECH OUTPUT: 'please look at the list of'"]))
+     "SPEECH OUTPUT: 'please look at the list of.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -69,7 +69,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. line Down",
     ["BRAILLE LINE:  'most frequently reported bugs'",
      "     VISIBLE:  'most frequently reported bugs', cursor=1",
-     "SPEECH OUTPUT: 'most frequently reported bugs link'"]))
+     "SPEECH OUTPUT: 'most frequently reported bugs link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -77,7 +77,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. line Down",
     ["BRAILLE LINE:  ', and please'",
      "     VISIBLE:  ', and please', cursor=1",
-     "SPEECH OUTPUT: ', and please'"]))
+     "SPEECH OUTPUT: ', and please.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -85,7 +85,7 @@ sequence.append(utils.AssertPresentationAction(
     "10. line Down",
     ["BRAILLE LINE:  'search'",
      "     VISIBLE:  'search', cursor=1",
-     "SPEECH OUTPUT: 'search link'"]))
+     "SPEECH OUTPUT: 'search link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -93,7 +93,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. line Down",
     ["BRAILLE LINE:  ' or'",
      "     VISIBLE:  ' or', cursor=1",
-     "SPEECH OUTPUT: 'or'"]))
+     "SPEECH OUTPUT: 'or.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -101,7 +101,7 @@ sequence.append(utils.AssertPresentationAction(
     "12. line Down",
     ["BRAILLE LINE:  'browse'",
      "     VISIBLE:  'browse', cursor=1",
-     "SPEECH OUTPUT: 'browse link'"]))
+     "SPEECH OUTPUT: 'browse link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -117,7 +117,7 @@ sequence.append(utils.AssertPresentationAction(
     "14. line Up",
     ["BRAILLE LINE:  'browse'",
      "     VISIBLE:  'browse', cursor=1",
-     "SPEECH OUTPUT: 'browse link'"]))
+     "SPEECH OUTPUT: 'browse link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -125,7 +125,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. line Up",
     ["BRAILLE LINE:  ' or'",
      "     VISIBLE:  ' or', cursor=1",
-     "SPEECH OUTPUT: 'or'"]))
+     "SPEECH OUTPUT: 'or.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -133,7 +133,7 @@ sequence.append(utils.AssertPresentationAction(
     "16. line Up",
     ["BRAILLE LINE:  'search'",
      "     VISIBLE:  'search', cursor=1",
-     "SPEECH OUTPUT: 'search link'"]))
+     "SPEECH OUTPUT: 'search link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -141,7 +141,7 @@ sequence.append(utils.AssertPresentationAction(
     "17. line Up",
     ["BRAILLE LINE:  ', and please'",
      "     VISIBLE:  ', and please', cursor=1",
-     "SPEECH OUTPUT: ', and please'"]))
+     "SPEECH OUTPUT: ', and please.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -149,7 +149,7 @@ sequence.append(utils.AssertPresentationAction(
     "18. line Up",
     ["BRAILLE LINE:  'most frequently reported bugs'",
      "     VISIBLE:  'most frequently reported bugs', cursor=1",
-     "SPEECH OUTPUT: 'most frequently reported bugs link'"]))
+     "SPEECH OUTPUT: 'most frequently reported bugs link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -157,7 +157,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. line Up",
     ["BRAILLE LINE:  'please look at the list of'",
      "     VISIBLE:  'please look at the list of', cursor=1",
-     "SPEECH OUTPUT: 'please look at the list of'"]))
+     "SPEECH OUTPUT: 'please look at the list of.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -165,7 +165,7 @@ sequence.append(utils.AssertPresentationAction(
     "20. line Up",
     ["BRAILLE LINE:  ','",
      "     VISIBLE:  ',', cursor=1",
-     "SPEECH OUTPUT: ','"]))
+     "SPEECH OUTPUT: ',.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -173,7 +173,7 @@ sequence.append(utils.AssertPresentationAction(
     "21. line Up",
     ["BRAILLE LINE:  'bug writing guidelines'",
      "     VISIBLE:  'bug writing guidelines', cursor=1",
-     "SPEECH OUTPUT: 'bug writing guidelines link'"]))
+     "SPEECH OUTPUT: 'bug writing guidelines link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -181,7 +181,7 @@ sequence.append(utils.AssertPresentationAction(
     "22. line Up",
     ["BRAILLE LINE:  'Before reporting a bug, please read the'",
      "     VISIBLE:  'Before reporting a bug, please r', cursor=1",
-     "SPEECH OUTPUT: 'Before reporting a bug, please read the'"]))
+     "SPEECH OUTPUT: 'Before reporting a bug, please read the.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/object_nav_links_on_line.py 
b/test/keystrokes/firefox/object_nav_links_on_line.py
index b06bdd6..a671eaf 100644
--- a/test/keystrokes/firefox/object_nav_links_on_line.py
+++ b/test/keystrokes/firefox/object_nav_links_on_line.py
@@ -17,7 +17,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Top of file",
     ["BRAILLE LINE:  'Home'",
      "     VISIBLE:  'Home', cursor=1",
-     "SPEECH OUTPUT: 'Home link'"]))
+     "SPEECH OUTPUT: 'Home link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -33,7 +33,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. line Down",
     ["BRAILLE LINE:  'New bug'",
      "     VISIBLE:  'New bug', cursor=1",
-     "SPEECH OUTPUT: 'New bug link'"]))
+     "SPEECH OUTPUT: 'New bug link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -49,7 +49,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. line Down",
     ["BRAILLE LINE:  'Browse'",
      "     VISIBLE:  'Browse', cursor=1",
-     "SPEECH OUTPUT: 'Browse link'"]))
+     "SPEECH OUTPUT: 'Browse link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -65,7 +65,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. line Down",
     ["BRAILLE LINE:  'Search'",
      "     VISIBLE:  'Search', cursor=1",
-     "SPEECH OUTPUT: 'Search link'"]))
+     "SPEECH OUTPUT: 'Search link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -81,7 +81,7 @@ sequence.append(utils.AssertPresentationAction(
     "9. line Down",
     ["BRAILLE LINE:  'Reports'",
      "     VISIBLE:  'Reports', cursor=1",
-     "SPEECH OUTPUT: 'Reports link'"]))
+     "SPEECH OUTPUT: 'Reports link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -97,7 +97,7 @@ sequence.append(utils.AssertPresentationAction(
     "11. line Down",
     ["BRAILLE LINE:  'Account'",
      "     VISIBLE:  'Account', cursor=1",
-     "SPEECH OUTPUT: 'Account link'"]))
+     "SPEECH OUTPUT: 'Account link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -113,7 +113,7 @@ sequence.append(utils.AssertPresentationAction(
     "13. line Down",
     ["BRAILLE LINE:  'Admin'",
      "     VISIBLE:  'Admin', cursor=1",
-     "SPEECH OUTPUT: 'Admin link'"]))
+     "SPEECH OUTPUT: 'Admin link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -129,7 +129,7 @@ sequence.append(utils.AssertPresentationAction(
     "15. line Down",
     ["BRAILLE LINE:  'Help'",
      "     VISIBLE:  'Help', cursor=1",
-     "SPEECH OUTPUT: 'Help link'"]))
+     "SPEECH OUTPUT: 'Help link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -145,7 +145,7 @@ sequence.append(utils.AssertPresentationAction(
     "17. line Up",
     ["BRAILLE LINE:  'Admin'",
      "     VISIBLE:  'Admin', cursor=1",
-     "SPEECH OUTPUT: 'Admin link'"]))
+     "SPEECH OUTPUT: 'Admin link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -161,7 +161,7 @@ sequence.append(utils.AssertPresentationAction(
     "19. line Up",
     ["BRAILLE LINE:  'Account'",
      "     VISIBLE:  'Account', cursor=1",
-     "SPEECH OUTPUT: 'Account link'"]))
+     "SPEECH OUTPUT: 'Account link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -177,7 +177,7 @@ sequence.append(utils.AssertPresentationAction(
     "21. line Up",
     ["BRAILLE LINE:  'Reports'",
      "     VISIBLE:  'Reports', cursor=1",
-     "SPEECH OUTPUT: 'Reports link'"]))
+     "SPEECH OUTPUT: 'Reports link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -193,7 +193,7 @@ sequence.append(utils.AssertPresentationAction(
     "23. line Up",
     ["BRAILLE LINE:  'Search'",
      "     VISIBLE:  'Search', cursor=1",
-     "SPEECH OUTPUT: 'Search link'"]))
+     "SPEECH OUTPUT: 'Search link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -209,7 +209,7 @@ sequence.append(utils.AssertPresentationAction(
     "25. line Up",
     ["BRAILLE LINE:  'Browse'",
      "     VISIBLE:  'Browse', cursor=1",
-     "SPEECH OUTPUT: 'Browse link'"]))
+     "SPEECH OUTPUT: 'Browse link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -225,7 +225,7 @@ sequence.append(utils.AssertPresentationAction(
     "27. line Up",
     ["BRAILLE LINE:  'New bug'",
      "     VISIBLE:  'New bug', cursor=1",
-     "SPEECH OUTPUT: 'New bug link'"]))
+     "SPEECH OUTPUT: 'New bug link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -241,7 +241,7 @@ sequence.append(utils.AssertPresentationAction(
     "29. line Up",
     ["BRAILLE LINE:  'Home'",
      "     VISIBLE:  'Home', cursor=1",
-     "SPEECH OUTPUT: 'Home link'"]))
+     "SPEECH OUTPUT: 'Home link.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/object_nav_simple_form_down.py 
b/test/keystrokes/firefox/object_nav_simple_form_down.py
index 3006636..6abaa88 100644
--- a/test/keystrokes/firefox/object_nav_simple_form_down.py
+++ b/test/keystrokes/firefox/object_nav_simple_form_down.py
@@ -190,7 +190,8 @@ sequence.append(utils.AssertPresentationAction(
     "22. line Down",
     ["BRAILLE LINE:  'Hockey list box'",
      "     VISIBLE:  'Hockey list box', cursor=1",
-     "SPEECH OUTPUT: 'Hockey multi-select List with 4 items'"]))
+     "SPEECH OUTPUT: 'Hockey.'",
+     "SPEECH OUTPUT: 'multi-select List with 4 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -214,7 +215,8 @@ sequence.append(utils.AssertPresentationAction(
     "25. line Down",
     ["BRAILLE LINE:  '& y Yes radio button'",
      "     VISIBLE:  '& y Yes radio button', cursor=1",
-     "SPEECH OUTPUT: 'Yes not selected radio button'"]))
+     "SPEECH OUTPUT: 'Yes.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -230,7 +232,8 @@ sequence.append(utils.AssertPresentationAction(
     "27. line Down",
     ["BRAILLE LINE:  '& y No radio button'",
      "     VISIBLE:  '& y No radio button', cursor=1",
-     "SPEECH OUTPUT: 'No not selected radio button'"]))
+     "SPEECH OUTPUT: 'No.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
diff --git a/test/keystrokes/firefox/object_nav_simple_form_up.py 
b/test/keystrokes/firefox/object_nav_simple_form_up.py
index a597701..d27a66d 100644
--- a/test/keystrokes/firefox/object_nav_simple_form_up.py
+++ b/test/keystrokes/firefox/object_nav_simple_form_up.py
@@ -25,7 +25,8 @@ sequence.append(utils.AssertPresentationAction(
     "2. line Up",
     ["BRAILLE LINE:  '& y No radio button'",
      "     VISIBLE:  '& y No radio button', cursor=1",
-     "SPEECH OUTPUT: 'No not selected radio button'"]))
+     "SPEECH OUTPUT: 'No.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -41,7 +42,8 @@ sequence.append(utils.AssertPresentationAction(
     "4. line Up",
     ["BRAILLE LINE:  '& y Yes radio button'",
      "     VISIBLE:  '& y Yes radio button', cursor=1",
-     "SPEECH OUTPUT: 'Yes not selected radio button'"]))
+     "SPEECH OUTPUT: 'Yes.'",
+     "SPEECH OUTPUT: 'not selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -65,7 +67,8 @@ sequence.append(utils.AssertPresentationAction(
     "7. line Up",
     ["BRAILLE LINE:  'Hockey list box'",
      "     VISIBLE:  'Hockey list box', cursor=1",
-     "SPEECH OUTPUT: 'Hockey multi-select List with 4 items'"]))
+     "SPEECH OUTPUT: 'Hockey.'",
+     "SPEECH OUTPUT: 'multi-select List with 4 items.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
diff --git a/test/keystrokes/firefox/spelling_errors.py b/test/keystrokes/firefox/spelling_errors.py
index 79e736e..24f8b28 100644
--- a/test/keystrokes/firefox/spelling_errors.py
+++ b/test/keystrokes/firefox/spelling_errors.py
@@ -347,10 +347,8 @@ sequence.append(KeyComboAction("f"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "41. Insert+f",
-    ["SPEECH OUTPUT: 'size 9pt' voice=system",
-     "SPEECH OUTPUT: 'family name DejaVu Sans Mono' voice=system",
-     "SPEECH OUTPUT: 'weight 400' voice=system",
-     "SPEECH OUTPUT: 'style normal' voice=system"]))
+    ["SPEECH OUTPUT: 'size: 9' voice=system",
+     "SPEECH OUTPUT: 'family name: DejaVu Sans Mono' voice=system"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Right"))
@@ -391,10 +389,8 @@ sequence.append(KeyComboAction("f"))
 sequence.append(KeyReleaseAction(0, None, "KP_Insert"))
 sequence.append(utils.AssertPresentationAction(
     "46. Insert+f",
-    ["SPEECH OUTPUT: 'size 9pt' voice=system",
-     "SPEECH OUTPUT: 'family name DejaVu Sans Mono' voice=system",
-     "SPEECH OUTPUT: 'weight 400' voice=system",
-     "SPEECH OUTPUT: 'style normal' voice=system"]))
+    ["SPEECH OUTPUT: 'size: 9' voice=system",
+     "SPEECH OUTPUT: 'family name: DejaVu Sans Mono' voice=system"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/ui_doc_tabs.py b/test/keystrokes/firefox/ui_doc_tabs.py
index 223d64f..50c3c1c 100644
--- a/test/keystrokes/firefox/ui_doc_tabs.py
+++ b/test/keystrokes/firefox/ui_doc_tabs.py
@@ -19,10 +19,10 @@ sequence.append(utils.AssertPresentationAction(
     "1. Switch to second page tab - Orca wiki",
     ["BRAILLE LINE:  'Firefox application Orca - GNOME Live! - Mozilla Firefox frame Browser tabs tool bar 
Orca - GNOME Live! page tab'",
      "     VISIBLE:  'Orca - GNOME Live! page tab', cursor=1",
-     "BRAILLE LINE:  'Home'",
-     "     VISIBLE:  'Home', cursor=1",
-     "SPEECH OUTPUT: 'Orca - GNOME Live! page tab'",
-     "SPEECH OUTPUT: 'Home link'"]))
+     "BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=1",
+     "SPEECH OUTPUT: 'Orca - GNOME Live! page tab.'",
+     "SPEECH OUTPUT: 'document frame'"]))
 
 sequence.append(PauseAction(3000))
 
@@ -32,10 +32,10 @@ sequence.append(utils.AssertPresentationAction(
     "2. Switch to first page tab - Test page",
     ["BRAILLE LINE:  'Firefox application HTML test page - Mozilla Firefox frame Browser tabs tool bar HTML 
test page page tab'",
      "     VISIBLE:  'HTML test page page tab', cursor=1",
-     "BRAILLE LINE:  'Test Formats'",
-     "     VISIBLE:  'Test Formats', cursor=1",
-     "SPEECH OUTPUT: 'HTML test page page tab'",
-     "SPEECH OUTPUT: 'Test Formats link'"]))
+     "BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=0",
+     "SPEECH OUTPUT: 'HTML test page page tab.'",
+     "SPEECH OUTPUT: 'document frame blank'"]))
 
 sequence.append(PauseAction(3000))
 
@@ -49,7 +49,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  ' a bug # or some search terms:  ', cursor=32",
      "BRAILLE LINE:  'Focus mode'",
      "     VISIBLE:  'Focus mode', cursor=0",
-     "SPEECH OUTPUT: 'GNOME Bug Tracking System page tab'",
+     "SPEECH OUTPUT: 'GNOME Bug Tracking System page tab.'",
      "SPEECH OUTPUT: 'Enter a bug # or some search terms: entry'",
      "SPEECH OUTPUT: 'Focus mode' voice=system"]))
 
@@ -61,10 +61,10 @@ sequence.append(utils.AssertPresentationAction(
     "4. Close third page tab - land in second page",
     ["BRAILLE LINE:  'Firefox application Orca - GNOME Live! - Mozilla Firefox frame Browser tabs tool bar 
Orca - GNOME Live! page tab'",
      "     VISIBLE:  'Orca - GNOME Live! page tab', cursor=1",
-     "BRAILLE LINE:  'Home'",
-     "     VISIBLE:  'Home', cursor=1",
-     "SPEECH OUTPUT: 'Orca - GNOME Live! page tab'",
-     "SPEECH OUTPUT: 'Home link'"]))
+     "BRAILLE LINE:  ''",
+     "     VISIBLE:  '', cursor=1",
+     "SPEECH OUTPUT: 'Orca - GNOME Live! page tab.'",
+     "SPEECH OUTPUT: 'document frame'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()
diff --git a/test/keystrokes/firefox/ui_role_accel_label.py b/test/keystrokes/firefox/ui_role_accel_label.py
index f43e846..a1af9d8 100644
--- a/test/keystrokes/firefox/ui_role_accel_label.py
+++ b/test/keystrokes/firefox/ui_role_accel_label.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Down Arrow in File menu",
     ["BRAILLE LINE:  'Firefox application Mozilla Firefox frame Menu Bar tool bar Application menu bar New 
Window(Ctrl+N)'",
      "     VISIBLE:  'New Window(Ctrl+N)', cursor=1",
-     "SPEECH OUTPUT: 'New Window Ctrl+N'"]))
+     "SPEECH OUTPUT: 'New Window Ctrl+N.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -23,7 +23,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Down Arrow in File menu",
     ["BRAILLE LINE:  'Firefox application Mozilla Firefox frame Menu Bar tool bar Application menu bar New 
Private Window(Shift+Ctrl+P)'",
      "     VISIBLE:  'New Private Window(Shift+Ctrl+P)', cursor=1",
-     "SPEECH OUTPUT: 'New Private Window Shift+Ctrl+P'"]))
+     "SPEECH OUTPUT: 'New Private Window Shift+Ctrl+P.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -33,7 +33,10 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'New Private Window(Shift+Ctrl+P)', cursor=1",
      "SPEECH OUTPUT: 'Mozilla Firefox frame'",
      "SPEECH OUTPUT: 'File menu'",
-     "SPEECH OUTPUT: 'Menu Bar tool bar menu bar New Private Window Shift+Ctrl+P 3 of 12.'",
+     "SPEECH OUTPUT: 'Menu Bar tool bar.'",
+     "SPEECH OUTPUT: 'New Private Window.'",
+     "SPEECH OUTPUT: 'Shift+Ctrl+P.'",
+     "SPEECH OUTPUT: '3 of 12.'",
      "SPEECH OUTPUT: 'W'"]))
 
 sequence.append(utils.AssertionSummaryAction())
diff --git a/test/keystrokes/firefox/ui_role_check_box.py b/test/keystrokes/firefox/ui_role_check_box.py
index 497460a..80e05b9 100644
--- a/test/keystrokes/firefox/ui_role_check_box.py
+++ b/test/keystrokes/firefox/ui_role_check_box.py
@@ -17,7 +17,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Right Arrow to Page Setup",
     ["BRAILLE LINE:  'Firefox application Print dialog Page Setup page tab'",
      "     VISIBLE:  'Page Setup page tab', cursor=1",
-     "SPEECH OUTPUT: 'Page Setup page tab'"]))
+     "SPEECH OUTPUT: 'Page Setup page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -25,7 +25,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Right Arrow to Options",
     ["BRAILLE LINE:  'Firefox application Print dialog Options page tab'",
      "     VISIBLE:  'Options page tab', cursor=1",
-     "SPEECH OUTPUT: 'Options page tab'"]))
+     "SPEECH OUTPUT: 'Options page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
diff --git a/test/keystrokes/firefox/ui_role_check_menu_item.py 
b/test/keystrokes/firefox/ui_role_check_menu_item.py
index c22bd26..9b93573 100644
--- a/test/keystrokes/firefox/ui_role_check_menu_item.py
+++ b/test/keystrokes/firefox/ui_role_check_menu_item.py
@@ -15,7 +15,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Up Arrow in View menu",
     ["BRAILLE LINE:  'Firefox application Mozilla Firefox frame Menu Bar tool bar Application menu bar < > 
Full Screen check menu item'",
      "     VISIBLE:  '< > Full Screen check menu item', cursor=1",
-     "SPEECH OUTPUT: 'Full Screen check menu item not checked'"]))
+     "SPEECH OUTPUT: 'Full Screen check menu item not checked.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -25,7 +25,9 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  '< > Full Screen check menu item', cursor=1",
      "SPEECH OUTPUT: 'Mozilla Firefox frame'",
      "SPEECH OUTPUT: 'View menu'",
-     "SPEECH OUTPUT: 'Menu Bar tool bar Full Screen check menu item not checked 6 of 6.'",
+     "SPEECH OUTPUT: 'Menu Bar tool bar.'",
+     "SPEECH OUTPUT: 'Full Screen check menu item not checked.'",
+     "SPEECH OUTPUT: '6 of 6.'",
      "SPEECH OUTPUT: 'F'"]))
 
 sequence.append(KeyComboAction("Escape"))
diff --git a/test/keystrokes/firefox/ui_role_menu_bar.py b/test/keystrokes/firefox/ui_role_menu_bar.py
index 7f439c0..3170622 100644
--- a/test/keystrokes/firefox/ui_role_menu_bar.py
+++ b/test/keystrokes/firefox/ui_role_menu_bar.py
@@ -17,8 +17,8 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'Edit menu', cursor=1",
      "BRAILLE LINE:  'Firefox application Mozilla Firefox frame Menu Bar tool bar Application menu bar Undo 
grayed(Ctrl+Z)'",
      "     VISIBLE:  'Undo grayed(Ctrl+Z)', cursor=1",
-     "SPEECH OUTPUT: 'Edit menu'",
-     "SPEECH OUTPUT: 'Undo grayed Ctrl+Z'"]))
+     "SPEECH OUTPUT: 'Edit menu.'",
+     "SPEECH OUTPUT: 'Undo grayed Ctrl+Z.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
@@ -27,7 +27,7 @@ sequence.append(utils.AssertPresentationAction(
     ["BRAILLE LINE:  'Firefox application Mozilla Firefox frame Menu Bar tool bar Application menu bar New 
Tab(Ctrl+T)'",
      "     VISIBLE:  'New Tab(Ctrl+T)', cursor=1",
      "SPEECH OUTPUT: 'File menu'",
-     "SPEECH OUTPUT: 'New Tab Ctrl+T'"]))
+     "SPEECH OUTPUT: 'New Tab Ctrl+T.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -37,7 +37,10 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'New Tab(Ctrl+T)', cursor=1",
      "SPEECH OUTPUT: 'Mozilla Firefox frame'",
      "SPEECH OUTPUT: 'File menu'",
-     "SPEECH OUTPUT: 'Menu Bar tool bar menu bar New Tab Ctrl+T 1 of 12.'",
+     "SPEECH OUTPUT: 'Menu Bar tool bar.'",
+     "SPEECH OUTPUT: 'New Tab.'",
+     "SPEECH OUTPUT: 'Ctrl+T.'",
+     "SPEECH OUTPUT: '1 of 12.'",
      "SPEECH OUTPUT: 'T'"]))
 
 sequence.append(KeyComboAction("Escape"))
diff --git a/test/keystrokes/firefox/ui_role_page_tab.py b/test/keystrokes/firefox/ui_role_page_tab.py
index 2802df4..312c9b2 100644
--- a/test/keystrokes/firefox/ui_role_page_tab.py
+++ b/test/keystrokes/firefox/ui_role_page_tab.py
@@ -17,7 +17,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Right Arrow to next page tab",
     ["BRAILLE LINE:  'Firefox application Print dialog Page Setup page tab'",
      "     VISIBLE:  'Page Setup page tab', cursor=1",
-     "SPEECH OUTPUT: 'Page Setup page tab'"]))
+     "SPEECH OUTPUT: 'Page Setup page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -25,7 +25,7 @@ sequence.append(utils.AssertPresentationAction(
     "2. Right Arrow to next page tab",
     ["BRAILLE LINE:  'Firefox application Print dialog Options page tab'",
      "     VISIBLE:  'Options page tab', cursor=1",
-     "SPEECH OUTPUT: 'Options page tab'"]))
+     "SPEECH OUTPUT: 'Options page tab.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -33,7 +33,9 @@ sequence.append(utils.AssertPresentationAction(
     "3. Basic Where Am I",
     ["BRAILLE LINE:  'Firefox application Print dialog Options page tab'",
      "     VISIBLE:  'Options page tab', cursor=1",
-     "SPEECH OUTPUT: 'page tab list Options page tab [1-9] of [1-9]'"]))
+     "SPEECH OUTPUT: 'page tab list.'",
+     "SPEECH OUTPUT: 'Options page tab.'",
+     "SPEECH OUTPUT: '[1-9] of [1-9]'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
@@ -41,7 +43,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Left Arrow to previous page tab",
     ["BRAILLE LINE:  'Firefox application Print dialog Page Setup page tab'",
      "     VISIBLE:  'Page Setup page tab', cursor=1",
-     "SPEECH OUTPUT: 'Page Setup page tab'"]))
+     "SPEECH OUTPUT: 'Page Setup page tab.'"]))
 
 sequence.append(KeyComboAction("Escape"))
 
diff --git a/test/keystrokes/firefox/ui_role_radio_button.py b/test/keystrokes/firefox/ui_role_radio_button.py
index 822f460..c318e6f 100644
--- a/test/keystrokes/firefox/ui_role_radio_button.py
+++ b/test/keystrokes/firefox/ui_role_radio_button.py
@@ -16,9 +16,10 @@ sequence.append(utils.AssertPresentationAction(
     "1. Alt a to radio button group",
     ["BRAILLE LINE:  'Firefox application Print dialog General page tab Range Range &=y All Pages radio 
button'",
      "     VISIBLE:  '&=y All Pages radio button', cursor=1",
-     "SPEECH OUTPUT: 'General page tab'",
+     "SPEECH OUTPUT: 'General page tab.'",
      "SPEECH OUTPUT: 'Range panel'",
-     "SPEECH OUTPUT: 'All Pages selected radio button'"]))
+     "SPEECH OUTPUT: 'All Pages.'",
+     "SPEECH OUTPUT: 'selected radio button'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -26,7 +27,10 @@ sequence.append(utils.AssertPresentationAction(
     "2. Basic Where Am I",
     ["BRAILLE LINE:  'Firefox application Print dialog General page tab Range Range &=y All Pages radio 
button'",
      "     VISIBLE:  '&=y All Pages radio button', cursor=1",
-     "SPEECH OUTPUT: 'Range All Pages radio button selected 1 of 4.'",
+     "SPEECH OUTPUT: 'Range.'",
+     "SPEECH OUTPUT: 'All Pages radio button.'",
+     "SPEECH OUTPUT: 'selected.'",
+     "SPEECH OUTPUT: '1 of 4.'",
      "SPEECH OUTPUT: 'Alt+A'"]))
 
 sequence.append(KeyComboAction("Escape"))
diff --git a/test/keystrokes/firefox/ui_role_tree.py b/test/keystrokes/firefox/ui_role_tree.py
index 08c90a1..fbce498 100644
--- a/test/keystrokes/firefox/ui_role_tree.py
+++ b/test/keystrokes/firefox/ui_role_tree.py
@@ -16,7 +16,8 @@ sequence.append(utils.AssertPresentationAction(
     "1. Shift Tab for tree",
     ["BRAILLE LINE:  'Firefox application Library frame All Bookmarks expanded list item TREE LEVEL 1'",
      "     VISIBLE:  'All Bookmarks expanded list item', cursor=1",
-     "SPEECH OUTPUT: 'All Bookmarks expanded'"]))
+     "SPEECH OUTPUT: 'All Bookmarks.'",
+     "SPEECH OUTPUT: 'expanded.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -24,7 +25,9 @@ sequence.append(utils.AssertPresentationAction(
     "2. Down Arrow in tree",
     ["BRAILLE LINE:  'Firefox application Library frame Bookmarks Toolbar collapsed list item TREE LEVEL 2'",
      "     VISIBLE:  'Bookmarks Toolbar collapsed list', cursor=1",
-     "SPEECH OUTPUT: 'Bookmarks Toolbar collapsed tree level 2'"]))
+     "SPEECH OUTPUT: 'Bookmarks Toolbar.'",
+     "SPEECH OUTPUT: 'collapsed.'",
+     "SPEECH OUTPUT: 'tree level 2'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -32,7 +35,8 @@ sequence.append(utils.AssertPresentationAction(
     "3. Down Arrow in tree",
     ["BRAILLE LINE:  'Firefox application Library frame Bookmarks Menu collapsed list item TREE LEVEL 2'",
      "     VISIBLE:  'Bookmarks Menu collapsed list it', cursor=1",
-     "SPEECH OUTPUT: 'Bookmarks Menu collapsed'"]))
+     "SPEECH OUTPUT: 'Bookmarks Menu.'",
+     "SPEECH OUTPUT: 'collapsed.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("KP_Enter"))
@@ -40,7 +44,10 @@ sequence.append(utils.AssertPresentationAction(
     "4. Basic Where Am I", 
     ["BRAILLE LINE:  'Firefox application Library frame Bookmarks Menu collapsed list item TREE LEVEL 2'",
      "     VISIBLE:  'Bookmarks Menu collapsed list it', cursor=1",
-     "SPEECH OUTPUT: 'list item Bookmarks Menu 2 of 3 collapsed tree level 2'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: 'Bookmarks Menu.'",
+     "SPEECH OUTPUT: '2 of 3.'",
+     "SPEECH OUTPUT: 'collapsed tree level 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Right"))
@@ -56,7 +63,10 @@ sequence.append(utils.AssertPresentationAction(
     "6. Basic Where Am I", 
     ["BRAILLE LINE:  'Firefox application Library frame Bookmarks Menu expanded list item TREE LEVEL 2'",
      "     VISIBLE:  'Bookmarks Menu expanded list ite', cursor=1",
-     "SPEECH OUTPUT: 'list item Bookmarks Menu 2 of 3 expanded tree level 2'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: 'Bookmarks Menu.'",
+     "SPEECH OUTPUT: '2 of 3.'",
+     "SPEECH OUTPUT: 'expanded tree level 2.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Down"))
@@ -72,7 +82,10 @@ sequence.append(utils.AssertPresentationAction(
     "8. Basic Where Am I", 
     ["BRAILLE LINE:  'Firefox application Library frame Recently Bookmarked list item TREE LEVEL 3'",
      "     VISIBLE:  'Recently Bookmarked list item TR', cursor=1",
-     "SPEECH OUTPUT: 'list item Recently Bookmarked 1 of 4 tree level 3'"]))
+     "SPEECH OUTPUT: 'list item.'",
+     "SPEECH OUTPUT: 'Recently Bookmarked.'",
+     "SPEECH OUTPUT: '1 of 4.'",
+     "SPEECH OUTPUT: 'tree level 3.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -80,7 +93,9 @@ sequence.append(utils.AssertPresentationAction(
     "9. Up Arrow in tree",
     ["BRAILLE LINE:  'Firefox application Library frame Bookmarks Menu expanded list item TREE LEVEL 2'",
      "     VISIBLE:  'Bookmarks Menu expanded list ite', cursor=1",
-     "SPEECH OUTPUT: 'Bookmarks Menu expanded tree level 2'"]))
+     "SPEECH OUTPUT: 'Bookmarks Menu.'",
+     "SPEECH OUTPUT: 'expanded.'",
+     "SPEECH OUTPUT: 'tree level 2'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Left"))
@@ -96,7 +111,8 @@ sequence.append(utils.AssertPresentationAction(
     "11. Up Arrow in tree",
     ["BRAILLE LINE:  'Firefox application Library frame Bookmarks Toolbar collapsed list item TREE LEVEL 2'",
      "     VISIBLE:  'Bookmarks Toolbar collapsed list', cursor=1",
-     "SPEECH OUTPUT: 'Bookmarks Toolbar collapsed'"]))
+     "SPEECH OUTPUT: 'Bookmarks Toolbar.'",
+     "SPEECH OUTPUT: 'collapsed.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Up"))
@@ -104,7 +120,9 @@ sequence.append(utils.AssertPresentationAction(
     "12. Up Arrow in tree",
     ["BRAILLE LINE:  'Firefox application Library frame All Bookmarks expanded list item TREE LEVEL 1'",
      "     VISIBLE:  'All Bookmarks expanded list item', cursor=1",
-     "SPEECH OUTPUT: 'All Bookmarks expanded tree level 1'"]))
+     "SPEECH OUTPUT: 'All Bookmarks.'",
+     "SPEECH OUTPUT: 'expanded.'",
+     "SPEECH OUTPUT: 'tree level 1'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("Tab"))
diff --git a/test/keystrokes/firefox/word_nav_links.py b/test/keystrokes/firefox/word_nav_links.py
index 79e9d30..13c1a4d 100644
--- a/test/keystrokes/firefox/word_nav_links.py
+++ b/test/keystrokes/firefox/word_nav_links.py
@@ -28,10 +28,10 @@ sequence.append(utils.AssertPresentationAction(
     "2. Next Word",
     ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
      "     VISIBLE:  'd. Go odbye w orld.', cursor=3",
-     "SPEECH OUTPUT: 'W link'",
-     "SPEECH OUTPUT: 'o link'",
-     "SPEECH OUTPUT: 'r link'",
-     "SPEECH OUTPUT: 'l link'",
+     "SPEECH OUTPUT: 'W link.'",
+     "SPEECH OUTPUT: 'o link.'",
+     "SPEECH OUTPUT: 'r link.'",
+     "SPEECH OUTPUT: 'l link.'",
      "SPEECH OUTPUT: 'd.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -42,16 +42,16 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'odbye w orld.', cursor=1",
      "SPEECH OUTPUT: 'Go'",
      "SPEECH OUTPUT: 'odbye'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Right"))
 sequence.append(utils.AssertPresentationAction(
     "4. Next Word",
     ["BRAILLE LINE:  'Hello W o r l d. Go odbye w orld.'",
-     "     VISIBLE:  'Hello W o r l d. Go odbye w orld', cursor=0",
+     "     VISIBLE:  'orld', cursor=5",
      "SPEECH OUTPUT: 'w'",
-     "SPEECH OUTPUT: 'link'",
+     "SPEECH OUTPUT: 'link.'",
      "SPEECH OUTPUT: 'orld.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -68,7 +68,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Next Word",
     ["BRAILLE LINE:  'More stuff! Yay!'",
      "     VISIBLE:  'More stuff! Yay!', cursor=12",
-     "SPEECH OUTPUT: 'stuff link'",
+     "SPEECH OUTPUT: 'stuff link.'",
      "SPEECH OUTPUT: '!'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -77,7 +77,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Previous Word",
     ["BRAILLE LINE:  'More stuff! Yay!'",
      "     VISIBLE:  'More stuff! Yay!', cursor=6",
-     "SPEECH OUTPUT: 'stuff link'",
+     "SPEECH OUTPUT: 'stuff link.'",
      "SPEECH OUTPUT: '!'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -95,7 +95,7 @@ sequence.append(utils.AssertPresentationAction(
     ["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: 'link.'",
      "SPEECH OUTPUT: 'orld.'"]))
 
 sequence.append(utils.StartRecordingAction())
@@ -106,7 +106,7 @@ sequence.append(utils.AssertPresentationAction(
      "     VISIBLE:  'd. Go odbye w orld.', cursor=4",
      "SPEECH OUTPUT: 'Go'",
      "SPEECH OUTPUT: 'odbye'",
-     "SPEECH OUTPUT: 'link'"]))
+     "SPEECH OUTPUT: 'link.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
@@ -114,10 +114,10 @@ sequence.append(utils.AssertPresentationAction(
     "11. Previous Word",
     ["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 link'",
-     "SPEECH OUTPUT: 'o link'",
-     "SPEECH OUTPUT: 'r link'",
-     "SPEECH OUTPUT: 'l link'",
+     "SPEECH OUTPUT: 'W link.'",
+     "SPEECH OUTPUT: 'o link.'",
+     "SPEECH OUTPUT: 'r link.'",
+     "SPEECH OUTPUT: 'l link.'",
      "SPEECH OUTPUT: 'd.'"]))
 
 sequence.append(utils.StartRecordingAction())
diff --git a/test/keystrokes/firefox/word_nav_list_items.py b/test/keystrokes/firefox/word_nav_list_items.py
index 0add9b4..4da56af 100644
--- a/test/keystrokes/firefox/word_nav_list_items.py
+++ b/test/keystrokes/firefox/word_nav_list_items.py
@@ -16,7 +16,7 @@ sequence.append(utils.AssertPresentationAction(
     "1. Line Down",
     ["BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: '1. This is a short list item. '"]))
+     "SPEECH OUTPUT: '1. This is a short list item. .'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Right"))
@@ -32,7 +32,7 @@ sequence.append(utils.AssertPresentationAction(
     "3. Next Word",
     ["BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: 'This'"]))
+     "SPEECH OUTPUT: 'This.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Right"))
@@ -40,7 +40,7 @@ sequence.append(utils.AssertPresentationAction(
     "4. Next Word",
     ["BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: 'is'"]))
+     "SPEECH OUTPUT: 'is.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Right"))
@@ -48,7 +48,7 @@ sequence.append(utils.AssertPresentationAction(
     "5. Next Word",
     ["BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: 'a'"]))
+     "SPEECH OUTPUT: 'a.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
@@ -56,7 +56,7 @@ sequence.append(utils.AssertPresentationAction(
     "6. Previous Word",
     ["BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: 'a'"]))
+     "SPEECH OUTPUT: 'a.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
@@ -64,7 +64,7 @@ sequence.append(utils.AssertPresentationAction(
     "7. Previous Word",
     ["BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: 'is'"]))
+     "SPEECH OUTPUT: 'is.'"]))
 
 sequence.append(utils.StartRecordingAction())
 sequence.append(KeyComboAction("<Control>Left"))
@@ -72,7 +72,7 @@ sequence.append(utils.AssertPresentationAction(
     "8. Previous Word",
     ["BRAILLE LINE:  '1. This is a short list item.'",
      "     VISIBLE:  '1. This is a short list item.', cursor=1",
-     "SPEECH OUTPUT: 'This'"]))
+     "SPEECH OUTPUT: 'This.'"]))
 
 sequence.append(utils.AssertionSummaryAction())
 sequence.start()



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