332 lines
13 KiB
Python
332 lines
13 KiB
Python
#!/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
|
|
|
|
from macaroon.playback import *
|
|
import utils
|
|
|
|
sequence = MacroSequence()
|
|
|
|
#sequence.append(WaitForDocLoad())
|
|
sequence.append(PauseAction(5000))
|
|
sequence.append(PauseAction(3000))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"1. Tab to the <button> button",
|
|
["BRAILLE LINE: '<button> push button'",
|
|
" VISIBLE: '<button> push button', cursor=1",
|
|
"SPEECH OUTPUT: '<button> push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("KP_Enter"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"2. Basic Where Am I on <button>",
|
|
["BRAILLE LINE: '<button> push button'",
|
|
" VISIBLE: '<button> push button', cursor=1",
|
|
"SPEECH OUTPUT: '<button> push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"3. Tab to <input type='button'>",
|
|
["BRAILLE LINE: '<input type='button'> push button'",
|
|
" VISIBLE: '<input type='button'> push butto', cursor=1",
|
|
"SPEECH OUTPUT: '<input type='button'> push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("KP_Enter"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"4. Basic Where Am I on <input type='button'>",
|
|
["BRAILLE LINE: '<input type='button'> push button'",
|
|
" VISIBLE: '<input type='button'> push butto', cursor=1",
|
|
"SPEECH OUTPUT: '<input type='button'> push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"5. Tab to first Create button",
|
|
["BRAILLE LINE: 'Create push button'",
|
|
" VISIBLE: 'Create push button', cursor=1",
|
|
"SPEECH OUTPUT: 'Create push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("KP_Enter"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"6. Basic Where Am I on first Create button",
|
|
["BRAILLE LINE: 'Create push button'",
|
|
" VISIBLE: 'Create push button', cursor=1",
|
|
"SPEECH OUTPUT: 'Create push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"7. Tab to View push button",
|
|
["BRAILLE LINE: 'View push button'",
|
|
" VISIBLE: 'View push button', cursor=1",
|
|
"SPEECH OUTPUT: 'View push button view title'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"8. Tab to second Create button",
|
|
["BRAILLE LINE: 'Create push button'",
|
|
" VISIBLE: 'Create push button', cursor=1",
|
|
"SPEECH OUTPUT: 'Create push button creative title'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"9. Tab to drop down menu on Create -- whose tooltip and accessible name is 'save options'",
|
|
["BRAILLE LINE: 'save options push button'",
|
|
" VISIBLE: 'save options push button', cursor=1",
|
|
"SPEECH OUTPUT: 'save options push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(TypeAction(" "))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"10. Open drop down menu on Create",
|
|
["BRAILLE LINE: 'push button'",
|
|
" VISIBLE: 'push button', cursor=1",
|
|
"BRAILLE LINE: 'Create blank'",
|
|
" VISIBLE: 'Create blank', cursor=1",
|
|
"BRAILLE LINE: 'Focus mode'",
|
|
" VISIBLE: 'Focus mode', cursor=0",
|
|
"SPEECH OUTPUT: 'expanded'",
|
|
"SPEECH OUTPUT: 'Create save options menu'",
|
|
"SPEECH OUTPUT: 'Create blank.'",
|
|
"SPEECH OUTPUT: 'Focus mode' voice=system"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Down"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"11. Down to Create from template",
|
|
["BRAILLE LINE: 'Create blank'",
|
|
" VISIBLE: 'Create blank', cursor=1",
|
|
"BRAILLE LINE: 'Create from template'",
|
|
" VISIBLE: 'Create from template', cursor=1",
|
|
"SPEECH OUTPUT: 'Create from template.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Escape"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"12. Close Create drop down menu",
|
|
["BRAILLE LINE: 'save options collapsed push button'",
|
|
" VISIBLE: 'save options collapsed push butt', cursor=1",
|
|
"SPEECH OUTPUT: 'save options collapsed push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"13. Go to Edit!",
|
|
["BRAILLE LINE: 'Edit! push button'",
|
|
" VISIBLE: 'Edit! push button', cursor=1",
|
|
"BRAILLE LINE: 'Browse mode'",
|
|
" VISIBLE: 'Browse mode', cursor=0",
|
|
"SPEECH OUTPUT: 'Edit! push button edit title'",
|
|
"SPEECH OUTPUT: 'Browse mode' voice=system"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("space"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"14. Open the Edit! menu",
|
|
["BRAILLE LINE: 'Edit! push button'",
|
|
" VISIBLE: 'Edit! push button', cursor=1",
|
|
"BRAILLE LINE: 'Edit! menu button'",
|
|
" VISIBLE: 'Edit! menu button', cursor=1",
|
|
"BRAILLE LINE: 'Cut'",
|
|
" VISIBLE: 'Cut', cursor=1",
|
|
"BRAILLE LINE: 'Focus mode'",
|
|
" VISIBLE: 'Focus mode', cursor=0",
|
|
"SPEECH OUTPUT: 'Edit! edit title menu'",
|
|
"SPEECH OUTPUT: 'Cut.'",
|
|
"SPEECH OUTPUT: 'Focus mode' voice=system"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Down"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"15. Go to Copy",
|
|
["BRAILLE LINE: 'Cut'",
|
|
" VISIBLE: 'Cut', cursor=1",
|
|
"BRAILLE LINE: 'Copy'",
|
|
" VISIBLE: 'Copy', cursor=1",
|
|
"SPEECH OUTPUT: 'Copy.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Down"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"16. Go to Paste",
|
|
["BRAILLE LINE: 'Paste'",
|
|
" VISIBLE: 'Paste', cursor=1",
|
|
"SPEECH OUTPUT: 'Paste.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Down"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"17. Go to Submenu",
|
|
["BRAILLE LINE: 'Submenu menu'",
|
|
" VISIBLE: 'Submenu menu', cursor=1",
|
|
"SPEECH OUTPUT: 'Submenu menu.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("space"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"18. Open Submenu",
|
|
["BRAILLE LINE: 'Submenu Item One'",
|
|
" VISIBLE: 'Submenu Item One', cursor=1",
|
|
"SPEECH OUTPUT: 'Submenu menu'",
|
|
"SPEECH OUTPUT: 'Submenu Item One.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Down"))
|
|
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.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Down"))
|
|
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.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Escape"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"21. Close the Submenu",
|
|
["BRAILLE LINE: 'Submenu menu'",
|
|
" VISIBLE: 'Submenu menu', cursor=1",
|
|
"SPEECH OUTPUT: 'Submenu menu.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Escape"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"22. Close the Edit! menu",
|
|
["BRAILLE LINE: 'Edit! collapsed push button'",
|
|
" VISIBLE: 'Edit! collapsed push button', cursor=1",
|
|
"SPEECH OUTPUT: 'Edit! collapsed push button edit title'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"23. Tab to the Color button",
|
|
["BRAILLE LINE: 'Color push button'",
|
|
" VISIBLE: 'Color push button', cursor=1",
|
|
"BRAILLE LINE: 'Browse mode'",
|
|
" VISIBLE: 'Browse mode', cursor=0",
|
|
"SPEECH OUTPUT: 'Color push button'",
|
|
"SPEECH OUTPUT: 'Browse mode' voice=system"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("space"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"24. Open the Color menu",
|
|
["BRAILLE LINE: 'Color push button'",
|
|
" VISIBLE: 'Color push button', cursor=1",
|
|
"BRAILLE LINE: 'Color push button'",
|
|
" VISIBLE: 'Color push button', cursor=1",
|
|
"BRAILLE LINE: 'white table cell'",
|
|
" VISIBLE: 'white table cell', cursor=1",
|
|
"BRAILLE LINE: 'Focus mode'",
|
|
" VISIBLE: 'Focus mode', cursor=0",
|
|
"SPEECH OUTPUT: 'white.'",
|
|
"SPEECH OUTPUT: 'Focus mode' voice=system"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Right"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"25. Go to lime",
|
|
["KNOWN ISSUE: This is a side effect of working around Roundcube's message list table.",
|
|
"BRAILLE LINE: 'white table cell'",
|
|
" VISIBLE: 'white table cell', cursor=1",
|
|
"BRAILLE LINE: 'white white lime lime green green blue blue table row'",
|
|
" VISIBLE: 'white white lime lime green gree', cursor=1",
|
|
"SPEECH OUTPUT: 'white white lime lime green green blue blue.'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Escape"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"26. Close the Color menu",
|
|
["BRAILLE LINE: 'Color collapsed push button'",
|
|
" VISIBLE: 'Color collapsed push button', cursor=1",
|
|
"SPEECH OUTPUT: 'Color collapsed push button'"]))
|
|
|
|
for i in range(18):
|
|
sequence.append(KeyComboAction("Tab"))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"27. Tab to the toggle me off button",
|
|
["BRAILLE LINE: '&=y Toggle me off toggle button'",
|
|
" VISIBLE: '&=y Toggle me off toggle button', cursor=1",
|
|
"SPEECH OUTPUT: 'Toggle me off toggle button pressed'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("space"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"28. Toggle the state of the toggle me off button",
|
|
["BRAILLE LINE: '& y toggle me on toggle button'",
|
|
" VISIBLE: '& y toggle me on toggle button', cursor=1",
|
|
"SPEECH OUTPUT: 'not pressed'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("space"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"29. Toggle the state of the toggle me off button",
|
|
["BRAILLE LINE: '&=y toggle me on toggle button'",
|
|
" VISIBLE: '&=y toggle me on toggle button', cursor=1",
|
|
"SPEECH OUTPUT: 'pressed'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("Tab"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"30. Tab to the toggle me button",
|
|
["BRAILLE LINE: 'Toggle me push button'",
|
|
" VISIBLE: 'Toggle me push button', cursor=1",
|
|
"SPEECH OUTPUT: 'Toggle me push button'"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("space"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"31. Toggle the state of the toggle me button",
|
|
["KNOWN ISSUE: This claims to be a toggle button in name; in role it's a push button. We don't announce pressing buttons.",
|
|
"BRAILLE LINE: 'Toggle me push button'",
|
|
" VISIBLE: 'Toggle me push button', cursor=1"]))
|
|
|
|
sequence.append(utils.StartRecordingAction())
|
|
sequence.append(KeyComboAction("space"))
|
|
sequence.append(utils.AssertPresentationAction(
|
|
"32. Toggle the state of the toggle me button",
|
|
["KNOWN ISSUE: This claims to be a toggle button in name; in role it's a push button. We don't announce pressing buttons.",
|
|
"BRAILLE LINE: 'Toggle me push button'",
|
|
" VISIBLE: 'Toggle me push button', cursor=1"]))
|
|
|
|
sequence.append(utils.AssertionSummaryAction())
|
|
sequence.start()
|