#!/usr/bin/env python3 # # Copyright (c) 2024 Stormux # Copyright (c) 2010-2012 The Orca Team # Copyright (c) 2012 Igalia, S.L. # Copyright (c) 2005-2010 Sun Microsystems Inc. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., Franklin Street, Fifth Floor, # Boston MA 02110-1301 USA. # # Fork of Orca Screen Reader (GNOME) # Original source: https://gitlab.gnome.org/GNOME/orca """Test of line navigation output of Firefox.""" from macaroon.playback import * import utils sequence = MacroSequence() #sequence.append(WaitForDocLoad()) sequence.append(PauseAction(5000)) # Work around some new quirk in Gecko that causes this test to fail if # run via the test harness rather than manually. sequence.append(KeyComboAction("r")) sequence.append(PauseAction(3000)) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Home")) sequence.append(utils.AssertPresentationAction( "1. Top of file", ["BRAILLE LINE: 'separator'", " VISIBLE: 'separator', cursor=1", "SPEECH OUTPUT: 'separator'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "2. Line Down", ["BRAILLE LINE: 'HTML Form and Widgets'", " VISIBLE: 'HTML Form and Widgets', cursor=1", "SPEECH OUTPUT: 'HTML Form and Widgets'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "3. Line Down", ["BRAILLE LINE: 'Textfield :'", " VISIBLE: 'Textfield :', cursor=1", "SPEECH OUTPUT: 'Textfield :'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "4. Line Down", ["BRAILLE LINE: 'Enter your Name:  $l text field using default type=text'", " VISIBLE: 'Enter your Name:  $l text field ', cursor=1", "SPEECH OUTPUT: 'Enter your Name:'", "SPEECH OUTPUT: 'entry.'", "SPEECH OUTPUT: 'text field using default type=text'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "5. Line Down", ["BRAILLE LINE: '1. Enter your Address:  $l text field using SIZE and MAXLENGTH'", " VISIBLE: '1. Enter your Address:  $l text ', cursor=1", "SPEECH OUTPUT: '1. Enter your Address:'", "SPEECH OUTPUT: 'entry.'", "SPEECH OUTPUT: 'text field using SIZE and MAXLENGTH'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "6. Line Down", ["BRAILLE LINE: '2. Enter your City:  $l 3. Enter your State:  $l 4. Enter your Country: US $l text field using'", " VISIBLE: '2. Enter your City:  $l 3. Enter', cursor=1", "SPEECH OUTPUT: '2. Enter your City:'", "SPEECH OUTPUT: 'entry.'", "SPEECH OUTPUT: '3. Enter your State:'", "SPEECH OUTPUT: 'entry.'", "SPEECH OUTPUT: '4. Enter your Country:'", "SPEECH OUTPUT: 'entry'", "SPEECH OUTPUT: 'US.'", "SPEECH OUTPUT: 'text field using'"])) sequence.append(KeyComboAction("Down")) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "7. Line Down", ["BRAILLE LINE: '5. Enter your Zip:  $l'", " VISIBLE: '5. Enter your Zip:  $l', cursor=1", "SPEECH OUTPUT: '5. Enter your Zip:'", "SPEECH OUTPUT: 'entry.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "8. Line Down", ["BRAILLE LINE: '6. What happens when a fixed-width font(the default) is used for a one-byte text input area, let's try it.. Enter one'", " VISIBLE: '6. What happens when a fixed-wid', cursor=1", "SPEECH OUTPUT: '6. What happens when a fixed-width font(the default) is used for a one-byte text input area, let's try it.. Enter one'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "9. Line Down", ["BRAILLE LINE: 'character:  $l '", " VISIBLE: 'character:  $l ', cursor=1", "SPEECH OUTPUT: 'character:'", "SPEECH OUTPUT: 'entry.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "10. Line Down", ["BRAILLE LINE: 'separator'", " VISIBLE: 'separator', cursor=1", "SPEECH OUTPUT: 'separator'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "11. Line Down", ["BRAILLE LINE: ' CheckBox:'", " VISIBLE: ' CheckBox:', cursor=1", "SPEECH OUTPUT: 'CheckBox:'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "12. Line Down", ["BRAILLE LINE: 'What are your favorite pets? h2'", " VISIBLE: 'What are your favorite pets? h2', cursor=1", "SPEECH OUTPUT: 'What are your favorite pets? heading level 2'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "13. Line Down", ["BRAILLE LINE: '< > bird check box'", " VISIBLE: '< > bird check box', cursor=1", "SPEECH OUTPUT: 'bird check box not checked.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "14. Line Down", ["BRAILLE LINE: '< > fish check box'", " VISIBLE: '< > fish check box', cursor=1", "SPEECH OUTPUT: 'fish check box not checked.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "15. Line Down", ["BRAILLE LINE: '< > wild animal check box'", " VISIBLE: '< > wild animal check box', cursor=1", "SPEECH OUTPUT: 'wild animal check box not checked.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "16. Line Down", ["BRAILLE LINE: 'separator'", " VISIBLE: 'separator', cursor=1", "SPEECH OUTPUT: 'separator'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "17. Line Down", ["BRAILLE LINE: 'Radio Buttons:'", " VISIBLE: 'Radio Buttons:', cursor=1", "SPEECH OUTPUT: 'Radio Buttons:'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "18. Line Down", ["BRAILLE LINE: 'Would type of wine do you like? h2'", " VISIBLE: 'Would type of wine do you like? ', cursor=1", "SPEECH OUTPUT: 'Would type of wine do you like? heading level 2'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "19. Line Down", ["BRAILLE LINE: '&=y cabernet sauvignon radio button'", " VISIBLE: '&=y cabernet sauvignon radio but', cursor=1", "SPEECH OUTPUT: 'cabernet sauvignon.'", "SPEECH OUTPUT: 'selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "20. Line Down", ["BRAILLE LINE: '& y merlot radio button'", " VISIBLE: '& y merlot radio button', cursor=1", "SPEECH OUTPUT: 'merlot.'", "SPEECH OUTPUT: 'not selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "21. Line Down", ["BRAILLE LINE: '& y nebbiolo radio button'", " VISIBLE: '& y nebbiolo radio button', cursor=1", "SPEECH OUTPUT: 'nebbiolo.'", "SPEECH OUTPUT: 'not selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "22. Line Down", ["BRAILLE LINE: '& y pinot noir radio button'", " VISIBLE: '& y pinot noir radio button', cursor=1", "SPEECH OUTPUT: 'pinot noir.'", "SPEECH OUTPUT: 'not selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Down")) sequence.append(utils.AssertPresentationAction( "23. 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.'", "SPEECH OUTPUT: 'not selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "24. Line Up", ["BRAILLE LINE: '& y pinot noir radio button'", " VISIBLE: '& y pinot noir radio button', cursor=1", "SPEECH OUTPUT: 'pinot noir.'", "SPEECH OUTPUT: 'not selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "25. Line Up", ["BRAILLE LINE: '& y nebbiolo radio button'", " VISIBLE: '& y nebbiolo radio button', cursor=1", "SPEECH OUTPUT: 'nebbiolo.'", "SPEECH OUTPUT: 'not selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "26. Line Up", ["BRAILLE LINE: '& y merlot radio button'", " VISIBLE: '& y merlot radio button', cursor=1", "SPEECH OUTPUT: 'merlot.'", "SPEECH OUTPUT: 'not selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "27. Line Up", ["BRAILLE LINE: '&=y cabernet sauvignon radio button'", " VISIBLE: '&=y cabernet sauvignon radio but', cursor=1", "SPEECH OUTPUT: 'cabernet sauvignon.'", "SPEECH OUTPUT: 'selected radio button'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "28. Line Up", ["BRAILLE LINE: 'Would type of wine do you like? h2'", " VISIBLE: 'Would type of wine do you like? ', cursor=1", "SPEECH OUTPUT: 'Would type of wine do you like? heading level 2'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "29. Line Up", ["BRAILLE LINE: 'Radio Buttons:'", " VISIBLE: 'Radio Buttons:', cursor=1", "SPEECH OUTPUT: 'Radio Buttons:'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "30. Line Up", ["BRAILLE LINE: 'separator'", " VISIBLE: 'separator', cursor=1", "SPEECH OUTPUT: 'separator'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "31. Line Up", ["BRAILLE LINE: '< > wild animal check box'", " VISIBLE: '< > wild animal check box', cursor=1", "SPEECH OUTPUT: 'wild animal check box not checked.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "32. Line Up", ["BRAILLE LINE: '< > fish check box'", " VISIBLE: '< > fish check box', cursor=1", "SPEECH OUTPUT: 'fish check box not checked.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "33. Line Up", ["BRAILLE LINE: '< > bird check box'", " VISIBLE: '< > bird check box', cursor=1", "SPEECH OUTPUT: 'bird check box not checked.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "34. Line Up", ["BRAILLE LINE: 'What are your favorite pets? h2'", " VISIBLE: 'What are your favorite pets? h2', cursor=1", "SPEECH OUTPUT: 'What are your favorite pets? heading level 2'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "35. Line Up", ["BRAILLE LINE: ' CheckBox:'", " VISIBLE: ' CheckBox:', cursor=1", "SPEECH OUTPUT: 'CheckBox:'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "36. Line Up", ["BRAILLE LINE: 'separator'", " VISIBLE: 'separator', cursor=1", "SPEECH OUTPUT: 'separator'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "37. Line Up", ["BRAILLE LINE: 'character:  $l '", " VISIBLE: 'character:  $l ', cursor=1", "SPEECH OUTPUT: 'character:'", "SPEECH OUTPUT: 'entry.'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "38. Line Up", ["BRAILLE LINE: '6. What happens when a fixed-width font(the default) is used for a one-byte text input area, let's try it.. Enter one'", " VISIBLE: '6. What happens when a fixed-wid', cursor=1", "SPEECH OUTPUT: '6. What happens when a fixed-width font(the default) is used for a one-byte text input area, let's try it.. Enter one'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "39. Line Up", ["BRAILLE LINE: '5. Enter your Zip:  $l'", " VISIBLE: '5. Enter your Zip:  $l', cursor=1", "SPEECH OUTPUT: '5. Enter your Zip:'", "SPEECH OUTPUT: 'entry.'"])) sequence.append(KeyComboAction("Up")) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "40. Line Up", ["BRAILLE LINE: '2. Enter your City:  $l 3. Enter your State:  $l 4. Enter your Country: US $l text field using'", " VISIBLE: '2. Enter your City:  $l 3. Enter', cursor=1", "SPEECH OUTPUT: '2. Enter your City:'", "SPEECH OUTPUT: 'entry.'", "SPEECH OUTPUT: '3. Enter your State:'", "SPEECH OUTPUT: 'entry.'", "SPEECH OUTPUT: '4. Enter your Country:'", "SPEECH OUTPUT: 'entry'", "SPEECH OUTPUT: 'US.'", "SPEECH OUTPUT: 'text field using'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "41. Line Up", ["BRAILLE LINE: '1. Enter your Address:  $l text field using SIZE and MAXLENGTH'", " VISIBLE: '1. Enter your Address:  $l text ', cursor=1", "SPEECH OUTPUT: '1. Enter your Address:'", "SPEECH OUTPUT: 'entry.'", "SPEECH OUTPUT: 'text field using SIZE and MAXLENGTH'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "42. Line Up", ["BRAILLE LINE: 'Enter your Name:  $l text field using default type=text'", " VISIBLE: 'Enter your Name:  $l text field ', cursor=1", "SPEECH OUTPUT: 'Enter your Name:'", "SPEECH OUTPUT: 'entry.'", "SPEECH OUTPUT: 'text field using default type=text'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "43. Line Up", ["BRAILLE LINE: 'Textfield :'", " VISIBLE: 'Textfield :', cursor=1", "SPEECH OUTPUT: 'Textfield :'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "44. Line Up", ["BRAILLE LINE: 'HTML Form and Widgets'", " VISIBLE: 'HTML Form and Widgets', cursor=1", "SPEECH OUTPUT: 'HTML Form and Widgets'"])) sequence.append(utils.StartRecordingAction()) sequence.append(KeyComboAction("Up")) sequence.append(utils.AssertPresentationAction( "45. Line Up", ["BRAILLE LINE: 'separator'", " VISIBLE: 'separator', cursor=1", "SPEECH OUTPUT: 'separator'"])) sequence.append(utils.AssertionSummaryAction()) sequence.start()