Initial commit, very few changes from orca 45. Added xfce4-notification daemon support.

This commit is contained in:
Storm Dragon
2024-10-16 17:06:34 -04:00
parent cef8363cfd
commit a523205ac2
1447 changed files with 1537893 additions and 2 deletions

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,79 @@
#!/usr/bin/python
"""Test of accelerator labels in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(PauseAction(5000))
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("F10"))
sequence.append(WaitForFocus("File", acc_role=pyatspi.ROLE_MENU))
sequence.append(utils.AssertPresentationAction(
"1. F10 for File menu",
["KNOWN ISSUE - Sometimes more of the hierarchy is included in the braille; other times it is not. This applies to all tests here.",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane File Menu'",
" VISIBLE: 'File Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane File Menu'",
" VISIBLE: 'File Menu', cursor=1",
"SPEECH OUTPUT: 'File menu'"]))
########################################################################
# Down Arrow to the About menu item
#
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("About", acc_role=pyatspi.ROLE_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"2. Arrow Down",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar About'",
" VISIBLE: 'About', cursor=1",
"SPEECH OUTPUT: 'About'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"3. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar About'",
" VISIBLE: 'About', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 application SwingSet2 frame Swing demo menu bar menu bar File menu About 1 of 5.'",
"SPEECH OUTPUT: 'B'",
"SPEECH OUTPUT: 'Find out about the SwingSet2 application'"]))
########################################################################
# Down Arrow to the Exit menu item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Exit", acc_role=pyatspi.ROLE_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"4. Arrow Down",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar Exit'",
" VISIBLE: 'Exit', cursor=1",
"SPEECH OUTPUT: 'Exit'"]))
########################################################################
# Return SwingSet2 to beginning state.
sequence.append(KeyComboAction("Escape"))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,219 @@
#!/usr/bin/python
"""Test of check boxes in Java's SwingSet2.
"""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(10000))
##########################################################################
# Tab over to the button demo, and activate it.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(TypeAction(" "))
##########################################################################
# Tab all the way down to the button page tab.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Button Demo", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Tab"))
##########################################################################
# Select Check Boxes tab
#
sequence.append(WaitForFocus("Buttons", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Radio Buttons", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Check Boxes", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(PauseAction(5000))
##########################################################################
# Tab into check boxes container
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("One ", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(utils.AssertPresentationAction(
"One checkbox unchecked",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Text CheckBoxes Panel < > One CheckBox'",
" VISIBLE: '< > One CheckBox', cursor=1",
"SPEECH OUTPUT: 'Text CheckBoxes panel One check box not checked'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"One checkbox unchecked Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Text CheckBoxes Panel < > One CheckBox'",
" VISIBLE: '< > One CheckBox', cursor=1",
"SPEECH OUTPUT: 'Text CheckBoxes One check box not checked'"]))
########################################################################
# Now, change its state.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(' '))
sequence.append(WaitAction("object:state-changed:checked", None,
None, pyatspi.ROLE_CHECK_BOX, 5000))
sequence.append(utils.AssertPresentationAction(
"One checkbox checked",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Text CheckBoxes Panel <x> One CheckBox'",
" VISIBLE: '<x> One CheckBox', cursor=1",
"SPEECH OUTPUT: 'checked'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"One checked Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Text CheckBoxes Panel <x> One CheckBox'",
" VISIBLE: '<x> One CheckBox', cursor=1",
"SPEECH OUTPUT: 'Text CheckBoxes One check box checked'"]))
########################################################################
# Change the state back and move on to a few more check boxes. The
# presentation in speech and braille should be similar to the above.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(' '))
sequence.append(WaitAction("object:state-changed:checked", None,
None, pyatspi.ROLE_CHECK_BOX, 5000))
sequence.append(utils.AssertPresentationAction(
"One checkbox unchecked",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Text CheckBoxes Panel < > One CheckBox'",
" VISIBLE: '< > One CheckBox', cursor=1",
"SPEECH OUTPUT: 'not checked'"]))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Two", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Three", acc_role=pyatspi.ROLE_CHECK_BOX))
########################################################################
# Tab to the One lightbulb
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("One ", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(utils.AssertPresentationAction(
"One lightbulb checkbox unchecked",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Image CheckBoxes Panel < > One CheckBox'",
" VISIBLE: '< > One CheckBox', cursor=1",
"SPEECH OUTPUT: 'Image CheckBoxes panel One check box not checked'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"One lightbulb unchecked checkbox Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Image CheckBoxes Panel < > One CheckBox'",
" VISIBLE: '< > One CheckBox', cursor=1",
"SPEECH OUTPUT: 'Image CheckBoxes One check box not checked'"]))
########################################################################
# Change the state back and move on to a few more check boxes. The
# presentation in speech and braille should be similar to the above.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(' '))
sequence.append(WaitAction("object:state-changed:checked", None,
None, pyatspi.ROLE_CHECK_BOX, 5000))
sequence.append(utils.AssertPresentationAction(
"One lightbulb checkbox checked",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Image CheckBoxes Panel <x> One CheckBox'",
" VISIBLE: '<x> One CheckBox', cursor=1",
"SPEECH OUTPUT: 'checked'"]))
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(' '))
sequence.append(WaitAction("object:state-changed:checked", None,
None, pyatspi.ROLE_CHECK_BOX, 5000))
sequence.append(utils.AssertPresentationAction(
"One lightbulb unchecked checkbox",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Check Boxes TabList Check Boxes Page Image CheckBoxes Panel < > One CheckBox'",
" VISIBLE: '< > One CheckBox', cursor=1",
"SPEECH OUTPUT: 'not checked'"]))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Two", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Three", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Paint Border", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Paint Focus", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Enabled", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Content Filled", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Default", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("0", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("10", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
# Toggle the top left button, to return to normal state.
sequence.append(TypeAction(" "))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,116 @@
#!/usr/bin/python
"""Test of check menu items in Java's SwingSet2.
"""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(PauseAction(5000))
sequence.append(KeyComboAction("F10"))
sequence.append(WaitForFocus("File", acc_role=pyatspi.ROLE_MENU))
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Look & Feel", acc_role=pyatspi.ROLE_MENU))
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Themes", acc_role=pyatspi.ROLE_MENU))
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Options", acc_role=pyatspi.ROLE_MENU))
########################################################################
# Go Down to the Enable Tool Tips menu item
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Enable Tool Tips",
acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(utils.AssertPresentationAction(
"Enable Tool Tips checked check menu item",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar <x> Enable Tool Tips CheckBox'",
" VISIBLE: '<x> Enable Tool Tips CheckBox', cursor=1",
"SPEECH OUTPUT: 'Enable Tool Tips check box checked'"]))
########################################################################
# Go Down to the Enable Drag Support menu item
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Enable Drag Support",
acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(utils.AssertPresentationAction(
"Enable Drag Support unchecked menu item",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar < > Enable Drag Support CheckBox'",
" VISIBLE: '< > Enable Drag Support CheckBox', cursor=1",
"SPEECH OUTPUT: 'Enable Drag Support check box not checked'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"Enable Drag Support unchecked menu item Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar < > Enable Drag Support CheckBox'",
" VISIBLE: '< > Enable Drag Support CheckBox', cursor=1",
"SPEECH OUTPUT: 'Enable Drag Support check box not checked.'",
"SPEECH OUTPUT: 'D'",
"SPEECH OUTPUT: 'Enable or disable drag support'"]))
########################################################################
# Check the menu item.
#
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:state-changed:checked", None,
None, pyatspi.ROLE_CHECK_BOX, 5000))
########################################################################
# Go directly back to the checked menu item.
#
sequence.append(KeyComboAction("<Alt>p"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Enable Drag Support",
acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(utils.AssertPresentationAction(
"Enable Drag Support checked menu item",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar <x> Enable Drag Support CheckBox'",
" VISIBLE: '<x> Enable Drag Support CheckBox', cursor=1",
"SPEECH OUTPUT: 'Enable Drag Support check box checked'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"Enable Drag Support checked menu item Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar <x> Enable Drag Support CheckBox'",
" VISIBLE: '<x> Enable Drag Support CheckBox', cursor=1",
"SPEECH OUTPUT: 'Enable Drag Support check box checked.'",
"SPEECH OUTPUT: 'D'",
"SPEECH OUTPUT: 'Enable or disable drag support'"]))
########################################################################
# Uncheck the menu item.
#
sequence.append(TypeAction(" "))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,272 @@
#!/usr/bin/python
"""Test of combo boxes in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(5000))
##########################################################################
# Tab over to the combo box demo, and activate it.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(TypeAction(" "))
##########################################################################
# Tab all the way down to the button page tab.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("ComboBox Demo", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(PauseAction(5000))
##########################################################################
# Focusing over first combo box
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Philip, Howard, Jeff",
acc_role=pyatspi.ROLE_COMBO_BOX))
sequence.append(utils.AssertPresentationAction(
"1. focusing over first combo box",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Philip, Howard, Jeff Combo'",
" VISIBLE: 'Presets: Philip, Howard, Jeff Co', cursor=10",
"SPEECH OUTPUT: 'Presets: Philip, Howard, Jeff combo box'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"2. basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Philip, Howard, Jeff Combo'",
" VISIBLE: 'Presets: Philip, Howard, Jeff Co', cursor=10",
"SPEECH OUTPUT: 'Presets: combo box Philip, Howard, Jeff 1 of 10'"]))
##########################################################################
# Bring up combo box list by pressing space
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(utils.AssertPresentationAction(
"3. Expand combo box",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Philip, Howard, Jeff Combo'",
" VISIBLE: 'Presets: Philip, Howard, Jeff Co', cursor=10",
"SPEECH OUTPUT: 'Philip, Howard, Jeff'"]))
##########################################################################
# Arrow down to next list item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(utils.AssertPresentationAction(
"4. Arrow Down",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Jeff, Larry, Philip Combo'",
" VISIBLE: 'Presets: Jeff, Larry, Philip Com', cursor=10",
"SPEECH OUTPUT: 'Jeff, Larry, Philip'"]))
##########################################################################
# Arrow down to next list item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(utils.AssertPresentationAction(
"5. Arrow Down",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Howard, Scott, Hans Combo'",
" VISIBLE: 'Presets: Howard, Scott, Hans Com', cursor=10",
"SPEECH OUTPUT: 'Howard, Scott, Hans'"]))
########################################################################
# [[[BUG 483212: Missing significant information when performing where am i on combo box items]]]
# Do a basic "Where Am I" via KP_Enter. The following should be
# presented:
#
# SPEECH OUTPUT: 'Howard, Scott, Hans'
# SPEECH OUTPUT: 'label'
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"6. basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Howard, Scott, Hans Combo'",
" VISIBLE: 'Presets: Howard, Scott, Hans Com', cursor=10",
"SPEECH OUTPUT: 'Presets: combo box Howard, Scott, Hans 3 of 8'"]))
##########################################################################
# Arrow down to next list item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(utils.AssertPresentationAction(
"7. Arrow Down",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Philip, Jeff, Hans Combo'",
" VISIBLE: 'Presets: Philip, Jeff, Hans Comb', cursor=10",
"SPEECH OUTPUT: 'Philip, Jeff, Hans'"]))
##########################################################################
# Press return to close list and select current item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Return"))
sequence.append(utils.AssertPresentationAction(
"8. Collapse combo box",
["KNOWN ISSUE - Orca often doesn't speak when Return is used to collapse a combo box; this is not limited to Java."]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"9. basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Philip, Jeff, Hans Combo'",
" VISIBLE: 'Presets: Philip, Jeff, Hans Comb', cursor=10",
"SPEECH OUTPUT: 'Presets: combo box Philip, Jeff, Hans 4 of 8'"]))
##########################################################################
# Bring up combo box list by pressing space, the following should be
# in output:
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(utils.AssertPresentationAction(
"10. Expand combo box",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Philip, Jeff, Hans Combo'",
" VISIBLE: 'Presets: Philip, Jeff, Hans Comb', cursor=10",
"SPEECH OUTPUT: 'Philip, Jeff, Hans'"]))
##########################################################################
# Arrow up to previous list item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(utils.AssertPresentationAction(
"11. Arrow Up",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Howard, Scott, Hans Combo'",
" VISIBLE: 'Presets: Howard, Scott, Hans Com', cursor=10",
"SPEECH OUTPUT: 'Howard, Scott, Hans'"]))
##########################################################################
# Arrow up to previous list item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(utils.AssertPresentationAction(
"12. Arrow Up",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Jeff, Larry, Philip Combo'",
" VISIBLE: 'Presets: Jeff, Larry, Philip Com', cursor=10",
"SPEECH OUTPUT: 'Jeff, Larry, Philip'"]))
##########################################################################
# Arrow up to previous list item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(utils.AssertPresentationAction(
"13. Arrow Up",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Presets: Philip, Howard, Jeff Combo'",
" VISIBLE: 'Presets: Philip, Howard, Jeff Co', cursor=10",
"SPEECH OUTPUT: 'Philip, Howard, Jeff'"]))
##########################################################################
# Press return to close list and select current item.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Return"))
sequence.append(utils.AssertPresentationAction(
"14. Collapse combo box",
["KNOWN ISSUE - Orca often doesn't speak when Return is used to collapse a combo box; this is not limited to Java."]))
##########################################################################
# Tab to next combo box.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Philip", acc_role=pyatspi.ROLE_COMBO_BOX))
sequence.append(utils.AssertPresentationAction(
"15. Tab to next combo box",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Hair: Philip Combo'",
" VISIBLE: 'Hair: Philip Combo', cursor=7",
"SPEECH OUTPUT: 'Hair: Philip combo box'"]))
##########################################################################
# Tab to next combo box.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Howard", acc_role=pyatspi.ROLE_COMBO_BOX))
sequence.append(utils.AssertPresentationAction(
"16. Tab to next combo box",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Eyes & Nose: Howard Combo'",
" VISIBLE: 'Eyes & Nose: Howard Combo', cursor=14",
"SPEECH OUTPUT: 'Eyes & Nose: Howard combo box'"]))
##########################################################################
# Tab to next combo box.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Jeff", acc_role=pyatspi.ROLE_COMBO_BOX))
sequence.append(utils.AssertPresentationAction(
"17. Tab to next combo box",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ComboBox Demo TabList ComboBox Demo Page Mouth: Jeff Combo'",
" VISIBLE: 'Mouth: Jeff Combo', cursor=8",
"SPEECH OUTPUT: 'Mouth: Jeff combo box'"]))
##########################################################################
# Tab back up to starting state
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Toggle the top left button, to return to normal state.
sequence.append(TypeAction (" "))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,143 @@
#!/usr/bin/python
"""Test of dialogs in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(5000))
##########################################################################
# Tab over to the JOptionPane demo, and activate it.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(TypeAction(" "))
##########################################################################
# Tab down to the dialog activation button in the demo.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Option Pane Demo", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Show Input Dialog", acc_role=pyatspi.ROLE_PUSH_BUTTON))
########################################################################
# Dialog is activated
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(utils.AssertPresentationAction(
"1. Dialog is activated",
["BRAILLE LINE: 'SwingSet2 Application Input Dialog'",
" VISIBLE: 'Input Dialog', cursor=1",
"BRAILLE LINE: ' $l'",
" VISIBLE: ' $l', cursor=0",
"SPEECH OUTPUT: 'Input What is your favorite movie?'",
"SPEECH OUTPUT: 'text '"]))
########################################################################
# Type the best movie ever, and press return.
#
sequence.append(PauseAction(3000))
sequence.append(TypeAction("RoboCop"))
sequence.append(PauseAction(3000))
sequence.append(KeyComboAction("Return"))
########################################################################
# Expected output when "OK" button gets focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(WaitForFocus("OK", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(utils.AssertPresentationAction(
"2. OK button gains focus",
["BUG? - We don't always present anything here. Need to investigate.",
"BRAILLE LINE: 'SwingSet2 Application Message Dialog RootPane LayeredPane Alert OK Button'",
" VISIBLE: 'OK Button', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 frame 1 unfocused dialog'",
"SPEECH OUTPUT: 'Option Pane Demo tab list Option Pane Demo page Show Input Dialog button'",
"SPEECH OUTPUT: 'Message RoboCop: That was a pretty good movie!'",
"SPEECH OUTPUT: 'OK button'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"3. Where Am I",
["BRAILLE LINE: 'SwingSet2 Application Message Dialog RootPane LayeredPane Alert OK Button'",
" VISIBLE: 'OK Button', cursor=1",
"SPEECH OUTPUT: 'OK button'"]))
########################################################################
# Press return to close dialog.
sequence.append(KeyComboAction("Return"))
########################################################################
# Wait for main application to gain focus and return to starting state.
# sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("Show Input Dialog", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Show Warning Dialog", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Show Message Dialog", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Show Component Dialog", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Show Confirmation Dialog", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
# Toggle the top left button, to return to normal state.
sequence.append(TypeAction(" "))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,150 @@
#!/usr/bin/python
"""Test of menus in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(5000))
# Hack to deal with a timing issue which seems to interfere with our
# setting the locusOfFocus reliably.
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
##########################################################################
# Open File menu
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Alt>f"))
sequence.append(WaitForFocus("File", acc_role=pyatspi.ROLE_MENU))
sequence.append(utils.AssertPresentationAction(
"1. Open File menu",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane File Menu'",
" VISIBLE: 'File Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane File Menu'",
" VISIBLE: 'File Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane PopupMenu About'",
" VISIBLE: 'About', cursor=1",
"SPEECH OUTPUT: 'File menu'",
"SPEECH OUTPUT: 'About'"]))
########################################################################
# Basic Where Am I
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"2. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane PopupMenu About'",
" VISIBLE: 'About', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 application SwingSet2 frame About 1 of 5.'",
"SPEECH OUTPUT: 'B'",
"SPEECH OUTPUT: 'Find out about the SwingSet2 application'"]))
##########################################################################
# Move to Look & Feel menu
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Look & Feel", acc_role=pyatspi.ROLE_MENU))
sequence.append(utils.AssertPresentationAction(
"3. Move to Look & Feel menu",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Look & Feel Menu'",
" VISIBLE: 'Look & Feel Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Look & Feel Menu'",
" VISIBLE: 'Look & Feel Menu', cursor=1",
"SPEECH OUTPUT: 'Look & Feel menu'"]))
########################################################################
# Basic Where Am I
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"4. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Look & Feel Menu'",
" VISIBLE: 'Look & Feel Menu', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 application SwingSet2 frame Swing demo menu bar menu bar Look & Feel menu 2 of 5.'",
"SPEECH OUTPUT: 'L'",
"SPEECH OUTPUT: 'Menu that allows Look & Feel switching'"]))
##########################################################################
# Move to Themes menu
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Themes", acc_role=pyatspi.ROLE_MENU))
sequence.append(utils.AssertPresentationAction(
"5. Move to Themes menu",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Look & Feel Menu'",
" VISIBLE: 'Look & Feel Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Themes Menu'",
" VISIBLE: 'Themes Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Themes Menu'",
" VISIBLE: 'Themes Menu', cursor=1",
"SPEECH OUTPUT: 'Themes menu'"]))
########################################################################
# Basic Where Am I
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"6. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Themes Menu'",
" VISIBLE: 'Themes Menu', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 application SwingSet2 frame Swing demo menu bar menu bar Themes menu 3 of 5.'",
"SPEECH OUTPUT: 'T'",
"SPEECH OUTPUT: 'Menu to switch Metal color themes'"]))
##########################################################################
# Move to Audio menu
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Audio", acc_role=pyatspi.ROLE_MENU))
sequence.append(utils.AssertPresentationAction(
"7. Move to Audio menu",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar Audio Menu'",
" VISIBLE: 'Audio Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar Audio Menu'",
" VISIBLE: 'Audio Menu', cursor=1",
"SPEECH OUTPUT: 'Audio menu'"]))
########################################################################
# Basic Where Am I
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"8. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar Audio Menu'",
" VISIBLE: 'Audio Menu', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 application SwingSet2 frame Swing demo menu bar menu bar Themes menu Audio menu 1 of 9.'",
"SPEECH OUTPUT: 'A'",
"SPEECH OUTPUT: 'Menu to switch the amount of auditory feedback available within the Java look and feel'"]))
# Leave menus.
sequence.append(KeyComboAction("Escape"))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,204 @@
#!/usr/bin/python
"""Test of page tabs in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(5000))
##########################################################################
# Tab over to the JTabbedPane demo, and activate it.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(TypeAction(" "))
##########################################################################
# Tab all the way down to the demo.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("TabbedPane Demo", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Top", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Left", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Bottom", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Right", acc_role=pyatspi.ROLE_RADIO_BUTTON))
########################################################################
# Expected output when "Laine" tab gets focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Laine", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(utils.AssertPresentationAction(
"1. Move to Laine tab",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Laine Page'",
" VISIBLE: 'Laine Page', cursor=1",
"SPEECH OUTPUT: 'Laine tab list Laine page'"]))
########################################################################
# Expected output when "Ewan" tab gets focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Ewan", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(utils.AssertPresentationAction(
"2. Move to Ewan tab",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Ewan Page'",
" VISIBLE: 'Ewan Page', cursor=1",
"SPEECH OUTPUT: 'Ewan page'"]))
########################################################################
# Expected output when "Hania" tab gets focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Hania", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(utils.AssertPresentationAction(
"3. Move to Hania tab",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Hania Page'",
" VISIBLE: 'Hania Page', cursor=1",
"SPEECH OUTPUT: 'Hania page'"]))
########################################################################
# Expected output when "Bouncing Babies!" tab gets focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("<html><font color=blue><bold><center>Bouncing Babies!</center></bold></font></html>", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(utils.AssertPresentationAction(
"4. Move to Bouncing Babies! tab",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page <html><font color=blue><bold><center>Bouncing Babies!</center></bold></font></html> Page'",
" VISIBLE: '<html><font color=blue><bold><ce', cursor=1",
"SPEECH OUTPUT: '<html><font color=blue><bold><center>Bouncing Babies!</center></bold></font></html> page'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"5. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page <html><font color=blue><bold><center>Bouncing Babies!</center></bold></font></html> Page'",
" VISIBLE: '<html><font color=blue><bold><ce', cursor=1",
"SPEECH OUTPUT: 'tab list <html><font color=blue><bold><center>Bouncing Babies!</center></bold></font></html> page 4 of 4'"]))
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Left"))
sequence.append(WaitForFocus("Hania", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(utils.AssertPresentationAction(
"6. Back to Hania tab",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Hania Page'",
" VISIBLE: 'Hania Page', cursor=1",
"SPEECH OUTPUT: 'Hania page'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"7. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Hania Page'",
" VISIBLE: 'Hania Page', cursor=1",
"SPEECH OUTPUT: 'tab list Hania page 3 of 4'"]))
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Left"))
sequence.append(WaitForFocus("Ewan", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(utils.AssertPresentationAction(
"8. Back to Ewan tab",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Ewan Page'",
" VISIBLE: 'Ewan Page', cursor=1",
"SPEECH OUTPUT: 'Ewan page'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"9. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Ewan Page'",
" VISIBLE: 'Ewan Page', cursor=1",
"SPEECH OUTPUT: 'tab list Ewan page 2 of 4'"]))
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Left"))
sequence.append(WaitForFocus("Laine", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(utils.AssertPresentationAction(
"10. Back to Laine tab",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Laine Page'",
" VISIBLE: 'Laine Page', cursor=1",
"SPEECH OUTPUT: 'Laine page'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"11. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane TabbedPane Demo TabList TabbedPane Demo Page Laine Page'",
" VISIBLE: 'Laine Page', cursor=1",
"SPEECH OUTPUT: 'tab list Laine page 1 of 4'"]))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
# Toggle the top left button, to return to normal state.
sequence.append(TypeAction (" "))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,180 @@
#!/usr/bin/python
"""Test of push buttons in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(5000))
##########################################################################
# Tab over to the button demo, and activate it.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(TypeAction(" "))
##########################################################################
# Tab all the way down to the button page tab.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Button Demo", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Buttons", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(PauseAction(5000))
##########################################################################
# Expected output when focusing over first button.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("One ", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(utils.AssertPresentationAction(
"1. Move to One button",
["BRAILLE LINE: 'SwingSet2 Application (SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page |)Buttons TabList Buttons Page Text Buttons Panel One Button'",
" VISIBLE: 'One Button', cursor=1",
"SPEECH OUTPUT: 'Text Buttons panel One button'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"2. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application (SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page |)Buttons TabList Buttons Page Text Buttons Panel One Button'",
" VISIBLE: 'One Button', cursor=1",
"SPEECH OUTPUT: 'One button'"]))
##########################################################################
# Expected output when focusing over second button.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Two", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(utils.AssertPresentationAction(
"3. Move to Two button",
["BRAILLE LINE: 'SwingSet2 Application (SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page |)Buttons TabList Buttons Page Text Buttons Panel Two Button'",
" VISIBLE: 'Two Button', cursor=1",
"SPEECH OUTPUT: 'Two button'"]))
##########################################################################
# Expected output when focusing over third button.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("<html><font size=2 color=red><bold>Three!</font></html>", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(utils.AssertPresentationAction(
"4. Move to Three button",
["BUG? - What's up with the extra whitespace in the speech?",
"BRAILLE LINE: 'SwingSet2 Application (SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page |)Buttons TabList Buttons Page Text Buttons Panel Three! Button'",
" VISIBLE: 'Three! Button', cursor=1",
"SPEECH OUTPUT: '",
"Three! button'"]))
##########################################################################
# Image buttons
##########################################################################
# Expected output when focusing over first image button.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(utils.AssertPresentationAction(
"5. Move to first image button",
["BRAILLE LINE: 'SwingSet2 Application (SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page |)Buttons TabList Buttons Page Image Buttons Panel Button'",
" VISIBLE: 'Button', cursor=1",
"SPEECH OUTPUT: 'Image Buttons panel button'"]))
##########################################################################
# Expected output when focusing over second image button.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(utils.AssertPresentationAction(
"6. Move to second image button",
["BRAILLE LINE: 'SwingSet2 Application (SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page |)Buttons TabList Buttons Page Image Buttons Panel Button'",
" VISIBLE: 'Button', cursor=1",
"SPEECH OUTPUT: 'button'"]))
##########################################################################
# Expected output when focusing over third image button.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(utils.AssertPresentationAction(
"7. Move to third image button",
["BRAILLE LINE: 'SwingSet2 Application (SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page |)Buttons TabList Buttons Page Image Buttons Panel Button'",
" VISIBLE: 'Button', cursor=1",
"SPEECH OUTPUT: 'button'"]))
##########################################################################
# Wrap around tabbing to top left toggle button.
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Paint Border", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Paint Focus", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Enabled", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Content Filled", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Default", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("0", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("10", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
# Toggle the top left button, to return to normal state.
sequence.append(TypeAction (" "))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,297 @@
#!/usr/bin/python
"""Test of radio buttons in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(5000))
##########################################################################
# Tab over to the button demo, and activate it.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(TypeAction(" "))
##########################################################################
# Tab all the way down to the button page tab.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Button Demo", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Tab"))
##########################################################################
# Select Check Boxes tab
#
sequence.append(WaitForFocus("Buttons", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Right"))
sequence.append(WaitForFocus("Radio Buttons", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(PauseAction(5000))
##########################################################################
# Tab into check boxes container
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Radio One ", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(utils.AssertPresentationAction(
"1. Move to Radio One radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Text Radio Buttons Panel Text Radio Buttons & y Radio One RadioButton'",
" VISIBLE: '& y Radio One RadioButton', cursor=1",
"SPEECH OUTPUT: 'Text Radio Buttons panel Radio One not selected radio button'"]))
########################################################################
# Expected output when radio button is selected.
#
# BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Radio Buttons TabList Radio Buttons Text Radio Buttons Panel &=y Radio One RadioButton'
# VISIBLE: '&=y Radio One RadioButton', cursor=1
#
# SPEECH OUTPUT: 'selected'
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:property-change:accessible-value", None,
None, pyatspi.ROLE_RADIO_BUTTON, 5000))
sequence.append(utils.AssertPresentationAction(
"2. Select the focused radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Text Radio Buttons Panel Text Radio Buttons &=y Radio One RadioButton'",
" VISIBLE: '&=y Radio One RadioButton', cursor=1",
"SPEECH OUTPUT: 'selected'"]))
########################################################################
# Expected output when radio button comes into focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Radio Two", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(utils.AssertPresentationAction(
"3. Move to Radio Two radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Text Radio Buttons Panel Text Radio Buttons & y Radio Two RadioButton'",
" VISIBLE: '& y Radio Two RadioButton', cursor=1",
"SPEECH OUTPUT: 'Radio Two not selected radio button'"]))
########################################################################
# Expected output when radio button is selected.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:property-change:accessible-value", None,
None, pyatspi.ROLE_RADIO_BUTTON, 5000))
sequence.append(utils.AssertPresentationAction(
"4. Select the focused radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Text Radio Buttons Panel Text Radio Buttons &=y Radio Two RadioButton'",
" VISIBLE: '&=y Radio Two RadioButton', cursor=1",
"SPEECH OUTPUT: 'selected'"]))
########################################################################
# Expected output when radio button comes into focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Radio Three", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(utils.AssertPresentationAction(
"5. Move to Radio Three radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Text Radio Buttons Panel Text Radio Buttons & y Radio Three RadioButton'",
" VISIBLE: '& y Radio Three RadioButton', cursor=1",
"SPEECH OUTPUT: 'Radio Three not selected radio button'"]))
########################################################################
# Expected output when radio button is selected.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:property-change:accessible-value", None,
None, pyatspi.ROLE_RADIO_BUTTON, 5000))
sequence.append(utils.AssertPresentationAction(
"6. Select the focused radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Text Radio Buttons Panel Text Radio Buttons &=y Radio Three RadioButton'",
" VISIBLE: '&=y Radio Three RadioButton', cursor=1",
"SPEECH OUTPUT: 'selected'"]))
########################################################################
# Expected output when radio button comes into focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Radio One ", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(utils.AssertPresentationAction(
"7. Move to Radio One radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons & y Radio One RadioButton'",
" VISIBLE: '& y Radio One RadioButton', cursor=1",
"SPEECH OUTPUT: 'Image Radio Buttons panel Radio One not selected radio button'"]))
########################################################################
# Basic Where Am I
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"8. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons & y Radio One RadioButton'",
" VISIBLE: '& y Radio One RadioButton', cursor=1",
"SPEECH OUTPUT: 'Image Radio Buttons Radio One radio button not selected 3 of 3'"]))
########################################################################
# Expected output when radio button is selected.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:property-change:accessible-value", None,
None, pyatspi.ROLE_RADIO_BUTTON, 5000))
sequence.append(utils.AssertPresentationAction(
"9. Select the focused radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons &=y Radio One RadioButton'",
" VISIBLE: '&=y Radio One RadioButton', cursor=1",
"SPEECH OUTPUT: 'selected'"]))
########################################################################
# Basic Where Am I
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"10. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons &=y Radio One RadioButton'",
" VISIBLE: '&=y Radio One RadioButton', cursor=1",
"SPEECH OUTPUT: 'Image Radio Buttons Radio One radio button selected 3 of 3'"]))
########################################################################
# Expected output when radio button comes into focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Radio Two", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(utils.AssertPresentationAction(
"11. Move to Radio Two radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons & y Radio Two RadioButton'",
" VISIBLE: '& y Radio Two RadioButton', cursor=1",
"SPEECH OUTPUT: 'Radio Two not selected radio button'"]))
########################################################################
# Basic Where Am I
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"12. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons & y Radio Two RadioButton'",
" VISIBLE: '& y Radio Two RadioButton', cursor=1",
"SPEECH OUTPUT: 'Image Radio Buttons Radio Two radio button not selected 2 of 3'"]))
########################################################################
# Expected output when radio button is selected.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:property-change:accessible-value", None,
None, pyatspi.ROLE_RADIO_BUTTON, 5000))
sequence.append(utils.AssertPresentationAction(
"13. Select the focused radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons &=y Radio Two RadioButton'",
" VISIBLE: '&=y Radio Two RadioButton', cursor=1",
"SPEECH OUTPUT: 'selected'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"14. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons &=y Radio Two RadioButton'",
" VISIBLE: '&=y Radio Two RadioButton', cursor=1",
"SPEECH OUTPUT: 'Image Radio Buttons Radio Two radio button selected 2 of 3'"]))
########################################################################
# Expected output when radio button comes into focus.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Radio Three", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(utils.AssertPresentationAction(
"15. Move to Radio Three radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons & y Radio Three RadioButton'",
" VISIBLE: '& y Radio Three RadioButton', cursor=1",
"SPEECH OUTPUT: 'Radio Three not selected radio button'"]))
########################################################################
# Expected output when radio button is selected.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:property-change:accessible-value", None,
None, pyatspi.ROLE_RADIO_BUTTON, 5000))
sequence.append(utils.AssertPresentationAction(
"16. Select the focused radio button",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Button Demo TabList Button Demo Page Radio Buttons TabList Radio Buttons Page Image Radio Buttons Panel Image Radio Buttons &=y Radio Three RadioButton'",
" VISIBLE: '&=y Radio Three RadioButton', cursor=1",
"SPEECH OUTPUT: 'selected'"]))
# Tab back up to beginning
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Paint Border", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Paint Focus", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Enabled", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Content Filled", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Default", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("0", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("10", acc_role=pyatspi.ROLE_RADIO_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
# Toggle the top left button, to return to normal state.
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,294 @@
#!/usr/bin/python
"""Test of radio menu items in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(PauseAction(5000))
##########################################################################
# Invoke Themes menu
sequence.append(KeyComboAction("<Alt>t"))
sequence.append(WaitForFocus("Audio", acc_role=pyatspi.ROLE_MENU))
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Fonts", acc_role=pyatspi.ROLE_MENU))
sequence.append(PauseAction(5000))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Ocean", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"1. Down Arrow to Ocean",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar Fonts Menu'",
" VISIBLE: 'Fonts Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar &=y Ocean RadioItem'",
" VISIBLE: '&=y Ocean RadioItem', cursor=1",
"SPEECH OUTPUT: 'Ocean selected radio menu item'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"2. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar &=y Ocean RadioItem'",
" VISIBLE: '&=y Ocean RadioItem', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 application SwingSet2 frame Swing demo menu bar menu bar Themes menu Ocean radio menu item selected 3 of 9.'",
"SPEECH OUTPUT: 'O'",
"SPEECH OUTPUT: 'The Ocean Metal Theme'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Steel", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"3. Down Arrow to Steel",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Steel RadioItem'",
" VISIBLE: '& y Steel RadioItem', cursor=1",
"SPEECH OUTPUT: 'Steel not selected radio menu item'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"4. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Steel RadioItem'",
" VISIBLE: '& y Steel RadioItem', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 application SwingSet2 frame Swing demo menu bar menu bar Themes menu Steel radio menu item not selected 4 of 9.'",
"SPEECH OUTPUT: 'S'",
"SPEECH OUTPUT: 'The blue/purple Metal Theme'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Aqua", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"5. Down Arrow to Aqua",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Aqua RadioItem'",
" VISIBLE: '& y Aqua RadioItem', cursor=1",
"SPEECH OUTPUT: 'Aqua not selected radio menu item'"]))
#########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Charcoal", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"6. Down Arrow to Charcoal",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Charcoal RadioItem'",
" VISIBLE: '& y Charcoal RadioItem', cursor=1",
"SPEECH OUTPUT: 'Charcoal not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("High Contrast", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"7. Down Arrow to High Contrast",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y High Contrast RadioItem'",
" VISIBLE: '& y High Contrast RadioItem', cursor=1",
"SPEECH OUTPUT: 'High Contrast not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Emerald", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"8. Down Arrow to Emerald",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Emerald RadioItem'",
" VISIBLE: '& y Emerald RadioItem', cursor=1",
"SPEECH OUTPUT: 'Emerald not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Ruby", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"9. Down Arrow to Ruby",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Ruby RadioItem'",
" VISIBLE: '& y Ruby RadioItem', cursor=1",
"SPEECH OUTPUT: 'Ruby not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitForFocus("Emerald", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"10. Up Arrow to Emerald",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Emerald RadioItem'",
" VISIBLE: '& y Emerald RadioItem', cursor=1",
"SPEECH OUTPUT: 'Emerald not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitForFocus("High Contrast", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"11. Up Arrow to High Contrast",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y High Contrast RadioItem'",
" VISIBLE: '& y High Contrast RadioItem', cursor=1",
"SPEECH OUTPUT: 'High Contrast not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitForFocus("Charcoal", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"12. Up Arrow to Charcoal",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Charcoal RadioItem'",
" VISIBLE: '& y Charcoal RadioItem', cursor=1",
"SPEECH OUTPUT: 'Charcoal not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitForFocus("Aqua", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"13. Up Arrow to Aqua",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Aqua RadioItem'",
" VISIBLE: '& y Aqua RadioItem', cursor=1",
"SPEECH OUTPUT: 'Aqua not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitForFocus("Steel", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"14. Up Arrow to Steel",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Steel RadioItem'",
" VISIBLE: '& y Steel RadioItem', cursor=1",
"SPEECH OUTPUT: 'Steel not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item is selected.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:property-change:accessible-value", None,
None, pyatspi.ROLE_RADIO_MENU_ITEM, 5000))
sequence.append(utils.AssertPresentationAction(
"15. Select the radio menu item",
["BUG? - Why are we speaking JInternalFrame demo? Also, some times the state of the toggle button is wrong. Need to investigate.",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar &=y Steel RadioItem'",
" VISIBLE: '&=y Steel RadioItem', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane ToolBar &=y ToggleButton'",
" VISIBLE: '&=y ToggleButton', cursor=1",
"SPEECH OUTPUT: 'Steel selected radio menu item'",
"SPEECH OUTPUT: 'JInternalFrame demo toggle button pressed'"]))
sequence.append(KeyComboAction("<Alt>t"))
sequence.append(WaitForFocus("Audio", acc_role=pyatspi.ROLE_MENU))
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Fonts", acc_role=pyatspi.ROLE_MENU))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Ocean", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"16. Down Arrow to Ocean",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar Fonts Menu'",
" VISIBLE: 'Fonts Menu', cursor=1",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Ocean RadioItem'",
" VISIBLE: '& y Ocean RadioItem', cursor=1",
"SPEECH OUTPUT: 'Ocean not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Steel", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"17. Down Arrow to Steel",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar &=y Steel RadioItem'",
" VISIBLE: '&=y Steel RadioItem', cursor=1",
"SPEECH OUTPUT: 'Steel selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitForFocus("Aqua", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"18. Down Arrow to Aqua",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Aqua RadioItem'",
" VISIBLE: '& y Aqua RadioItem', cursor=1",
"SPEECH OUTPUT: 'Aqua not selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitForFocus("Steel", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"19. Up Arrow to Steel",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar &=y Steel RadioItem'",
" VISIBLE: '&=y Steel RadioItem', cursor=1",
"SPEECH OUTPUT: 'Steel selected radio menu item'"]))
##########################################################################
# Expected output when radio menu item gets focused.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitForFocus("Ocean", acc_role=pyatspi.ROLE_RADIO_MENU_ITEM))
sequence.append(utils.AssertPresentationAction(
"20. Up Arrow to Ocean",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Swing demo menu bar MenuBar & y Ocean RadioItem'",
" VISIBLE: '& y Ocean RadioItem', cursor=1",
"SPEECH OUTPUT: 'Ocean not selected radio menu item'"]))
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:property-change:accessible-value", None,
None, pyatspi.ROLE_RADIO_MENU_ITEM, 5000))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,422 @@
#!/usr/bin/python
"""Test of push buttons in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(5000))
##########################################################################
# Tab over to the button demo, and activate it.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(TypeAction(" "))
##########################################################################
# Tab all the way down to the table.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Table Demo", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Reordering allowed", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Row selection", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Horiz. Lines", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Column selection", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Vert. Lines", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Inter-cell spacing", acc_role=pyatspi.ROLE_SLIDER))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Row height", acc_role=pyatspi.ROLE_SLIDER))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Multiple ranges", acc_role=pyatspi.ROLE_COMBO_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Subsequent columns", acc_role=pyatspi.ROLE_COMBO_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Fit Width", acc_role=pyatspi.ROLE_CHECK_BOX))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Print", acc_role=pyatspi.ROLE_PUSH_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TABLE))
##########################################################################
# Expected output when focus is on "Mike" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Right"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"1. Control Right Arrow into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on "Albers" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Right"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"2. Control Right Arrow into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
########################################################################
# [[[BUG 483217: Where am i in JTable cells gives no info]]]
# Do a basic "Where Am I" via KP_Enter. The following should be
# presented:
#
# SPEECH OUTPUT: ''
# SPEECH OUTPUT: 'table'
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"3. Basic Where Am I",
["KNOWN ISSUE - Because of the cell problem, we think the locusOfFocus is the Table",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table'",
" VISIBLE: 'Table', cursor=1",
"SPEECH OUTPUT: 'table'"]))
##########################################################################
# TODO: Is there a keboard way to edit a combo box in a cell?
# Expected output when focus is on "Green" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Right"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"4 Control Right Arrow into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on "Bazil" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Right"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"5. Control Right Arrow into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on "44" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Right"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"6. Control Right Arrow into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on picture cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Right"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"7. Control Right Arrow into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on picture cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Down"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"8. Control Down Arrow into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on "3" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Left"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"9. Control Left into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on "Curse of the Demon" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Left"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"10. Control Left into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on "Blue" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Left"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"11. Control Left into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Expected output when focus is on "Andrews" cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Control>Left"))
sequence.append(WaitAction("object:selection-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"12. Control Left into the cell",
["BUG? - No output when navigating JTable with cursor. See bug 483214."]))
##########################################################################
# Press Space Bar on the current cell
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"13. Space Bar on the cell",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table Last Name ColumnHeader Andrews'",
" VISIBLE: 'Andrews', cursor=1",
"SPEECH OUTPUT: 'Last Name column header Andrews'"]))
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(utils.AssertPresentationAction(
"14. Remove the text in the cell.",
["BUG? - We aren't told what text is being removed. I believe this is due to the lack of any_data."]))
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction("Andy"))
sequence.append(utils.AssertPresentationAction(
"15. Type 'Andy' into the cell",
["BUG? - We're not presenting anything here."]))
##########################################################################
# Expected output when focus is on cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Return"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"16. Press Return",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table Last Name ColumnHeader Beck'",
" VISIBLE: 'Beck', cursor=1",
"SPEECH OUTPUT: 'Last Name column header Beck'"]))
##########################################################################
# Expected output when focus is on cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Left"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"17. Press Left Arrow",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table First Name ColumnHeader Brian'",
" VISIBLE: 'Brian', cursor=1",
"SPEECH OUTPUT: 'First Name column header Brian'"]))
##########################################################################
# Expected output when focus is on cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"18. Press Up Arrow",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table First Name ColumnHeader Mark'",
" VISIBLE: 'Mark', cursor=1",
"SPEECH OUTPUT: 'First Name column header Mark'"]))
##########################################################################
# Expected output when focus is on cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"19. Press Right Arrow",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table Last Name ColumnHeader Andy'",
" VISIBLE: 'Andy', cursor=1",
"SPEECH OUTPUT: 'Last Name column header Andy'"]))
##########################################################################
# Return cell to previous text.
#
sequence.append(utils.StartRecordingAction())
sequence.append(TypeAction(" "))
sequence.append(utils.AssertPresentationAction(
"20. Press Space Bar",
["BUG? - We're not presenting anything here."]))
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(KeyComboAction("BackSpace"))
sequence.append(TypeAction("ndrews "))
sequence.append(utils.AssertPresentationAction(
"21. BackSpace over the newly-added text and type 'ndrews'",
["BUG? - We're not presenting anything here."]))
##########################################################################
# Expected output when focus is on cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Return"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"22. Press Return",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table Last Name ColumnHeader Beck'",
" VISIBLE: 'Beck', cursor=1",
"SPEECH OUTPUT: 'Last Name column header Beck'"]))
##########################################################################
# Expected output when focus is on cell:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Left"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"23. Press Left Arrow",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table First Name ColumnHeader Brian'",
" VISIBLE: 'Brian', cursor=1",
"SPEECH OUTPUT: 'First Name column header Brian'"]))
##########################################################################
# Expected output when row is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Shift>Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"24. Shift Up Arrow to select the row",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table First Name ColumnHeader Mark'",
" VISIBLE: 'Mark', cursor=1",
"SPEECH OUTPUT: 'First Name column header Mark'"]))
##########################################################################
# Expected output when row is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("<Shift>Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(utils.AssertPresentationAction(
"25. Shift Up Arrow to select the row",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table First Name ColumnHeader Mike'",
" VISIBLE: 'Mike', cursor=1",
"SPEECH OUTPUT: 'Mike'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"26. Basic Where Am I",
["BUG? - Not much detail. See bug 483217.",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Table Demo TabList Table Demo Page ScrollPane Viewport Table First Name ColumnHeader Mike'",
" VISIBLE: 'Mike', cursor=1",
"SPEECH OUTPUT: 'Mike'"]))
##########################################################################
# Unselect rows. First select only current row, then unselect it.
sequence.append(KeyComboAction("Right"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
sequence.append(KeyComboAction("Left"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TABLE, 5000))
##########################################################################
# Leave table.
sequence.append(KeyComboAction("<Control>Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
# Toggle the top left button, to return to normal state.
sequence.append(TypeAction(" "))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()

View File

@ -0,0 +1 @@
PARAMS="-jar $JDK_DEMO_DIR/jfc/SwingSet2/SwingSet2.jar"

View File

@ -0,0 +1,466 @@
#!/usr/bin/python
"""Test of push buttons in Java's SwingSet2."""
from macaroon.playback import *
import utils
sequence = MacroSequence()
##########################################################################
# We wait for the demo to come up and for focus to be on the toggle button
#
#sequence.append(WaitForWindowActivate("SwingSet2",None))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
# Wait for entire window to get populated.
sequence.append(PauseAction(5000))
##########################################################################
# Tab over to the button demo, and activate it.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TOGGLE_BUTTON))
sequence.append(TypeAction(" "))
##########################################################################
# Tab all the way down to the tree.
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("Tree Demo", acc_role=pyatspi.ROLE_PAGE_TAB))
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TREE))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"1. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Tree Demo TabList Tree Demo Page ScrollPane Viewport Tree Music expanded TREE LEVEL 1'",
" VISIBLE: 'Music expanded TREE LEVEL 1', cursor=1",
"SPEECH OUTPUT: 'Music expanded 3 items tree level 1'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"2. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Classical collapsed TREE LEVEL 2'",
" VISIBLE: 'Classical collapsed TREE LEVEL 2', cursor=1",
"SPEECH OUTPUT: 'Classical collapsed tree level 2'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"3. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Jazz collapsed TREE LEVEL 2'",
" VISIBLE: 'Jazz collapsed TREE LEVEL 2', cursor=1",
"SPEECH OUTPUT: 'Jazz collapsed'"]))
##########################################################################
# Expected output when node is expanded:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitAction("object:state-changed:expanded", None, None,
pyatspi.ROLE_LABEL, 5000))
sequence.append(utils.AssertPresentationAction(
"4. Right Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Jazz expanded TREE LEVEL 2'",
" VISIBLE: 'Jazz expanded TREE LEVEL 2', cursor=1",
"SPEECH OUTPUT: 'expanded 4 items'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"5. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Albert Ayler collapsed TREE LEVEL 3'",
" VISIBLE: 'Albert Ayler collapsed TREE LEVE', cursor=1",
"SPEECH OUTPUT: 'Albert Ayler collapsed tree level 3'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"6. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Chet Baker collapsed TREE LEVEL 3'",
" VISIBLE: 'Chet Baker collapsed TREE LEVEL ', cursor=1",
"SPEECH OUTPUT: 'Chet Baker collapsed'"]))
##########################################################################
# Expected output when node is expanded:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitAction("object:state-changed:expanded", None, None,
pyatspi.ROLE_LABEL, 5000))
sequence.append(utils.AssertPresentationAction(
"7. Right Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Chet Baker expanded TREE LEVEL 3'",
" VISIBLE: 'Chet Baker expanded TREE LEVEL 3', cursor=1",
"SPEECH OUTPUT: 'expanded 4 items'"]))
##########################################################################
# Expected output when node is expanded:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"8. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Sings and Plays collapsed TREE LEVEL 4'",
" VISIBLE: 'Sings and Plays collapsed TREE L', cursor=1",
"SPEECH OUTPUT: 'Sings and Plays collapsed tree level 4'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"9. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application My Funny Valentine collapsed TREE LEVEL 4'",
" VISIBLE: 'My Funny Valentine collapsed TRE', cursor=1",
"SPEECH OUTPUT: 'My Funny Valentine collapsed'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"10. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Grey December collapsed TREE LEVEL 4'",
" VISIBLE: 'Grey December collapsed TREE LEV', cursor=1",
"SPEECH OUTPUT: 'Grey December collapsed'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"11. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application Grey December collapsed TREE LEVEL 4'",
" VISIBLE: 'Grey December collapsed TREE LEV', cursor=1",
"SPEECH OUTPUT: 'Grey December collapsed tree level 4'"]))
##########################################################################
# Expected output when node is expanded:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Right"))
sequence.append(WaitAction("object:state-changed:expanded", None, None,
pyatspi.ROLE_LABEL, 5000))
sequence.append(utils.AssertPresentationAction(
"12. Right Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Grey December expanded TREE LEVEL 4'",
" VISIBLE: 'Grey December expanded TREE LEVE', cursor=1",
"SPEECH OUTPUT: 'expanded 9 items'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"13. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application Grey December expanded TREE LEVEL 4'",
" VISIBLE: 'Grey December expanded TREE LEVE', cursor=1",
"SPEECH OUTPUT: 'Grey December expanded 9 items tree level 4'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"14. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Grey December TREE LEVEL 5'",
" VISIBLE: 'Grey December TREE LEVEL 5', cursor=1",
"SPEECH OUTPUT: 'Grey December tree level 5'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"15. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application I Wish I Knew TREE LEVEL 5'",
" VISIBLE: 'I Wish I Knew TREE LEVEL 5', cursor=1",
"SPEECH OUTPUT: 'I Wish I Knew'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Down"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"16. Down Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Someone To Watch Over Me TREE LEVEL 5'",
" VISIBLE: 'Someone To Watch Over Me TREE LE', cursor=1",
"SPEECH OUTPUT: 'Someone To Watch Over Me'"]))
########################################################################
# Do a basic "Where Am I" via KP_Enter.
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("KP_Enter"))
sequence.append(PauseAction(3000))
sequence.append(utils.AssertPresentationAction(
"17. Basic Where Am I",
["BRAILLE LINE: 'SwingSet2 Application Someone To Watch Over Me TREE LEVEL 5'",
" VISIBLE: 'Someone To Watch Over Me TREE LE', cursor=1",
"SPEECH OUTPUT: 'Someone To Watch Over Me tree level 5'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"18. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application I Wish I Knew TREE LEVEL 5'",
" VISIBLE: 'I Wish I Knew TREE LEVEL 5', cursor=1",
"SPEECH OUTPUT: 'I Wish I Knew'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"19. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Grey December TREE LEVEL 5'",
" VISIBLE: 'Grey December TREE LEVEL 5', cursor=1",
"SPEECH OUTPUT: 'Grey December'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"20. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Grey December expanded TREE LEVEL 4'",
" VISIBLE: 'Grey December expanded TREE LEVE', cursor=1",
"SPEECH OUTPUT: 'Grey December expanded 9 items tree level 4'"]))
##########################################################################
# Expected output when node is collaped:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Left"))
sequence.append(WaitAction("object:state-changed:expanded", None, None,
pyatspi.ROLE_LABEL, 5000))
sequence.append(utils.AssertPresentationAction(
"21. Left Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Grey December collapsed TREE LEVEL 4'",
" VISIBLE: 'Grey December collapsed TREE LEV', cursor=1",
"SPEECH OUTPUT: 'collapsed'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"22. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application My Funny Valentine collapsed TREE LEVEL 4'",
" VISIBLE: 'My Funny Valentine collapsed TRE', cursor=1",
"SPEECH OUTPUT: 'My Funny Valentine collapsed'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"23. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Sings and Plays collapsed TREE LEVEL 4'",
" VISIBLE: 'Sings and Plays collapsed TREE L', cursor=1",
"SPEECH OUTPUT: 'Sings and Plays collapsed'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"24. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Chet Baker expanded TREE LEVEL 3'",
" VISIBLE: 'Chet Baker expanded TREE LEVEL 3', cursor=1",
"SPEECH OUTPUT: 'Chet Baker expanded 4 items tree level 3'"]))
##########################################################################
# Expected output when node is collaped:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Left"))
sequence.append(WaitAction("object:state-changed:expanded", None, None,
pyatspi.ROLE_LABEL, 5000))
sequence.append(utils.AssertPresentationAction(
"25. Left Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Chet Baker collapsed TREE LEVEL 3'",
" VISIBLE: 'Chet Baker collapsed TREE LEVEL ', cursor=1",
"SPEECH OUTPUT: 'collapsed'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"26. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Albert Ayler collapsed TREE LEVEL 3'",
" VISIBLE: 'Albert Ayler collapsed TREE LEVE', cursor=1",
"SPEECH OUTPUT: 'Albert Ayler collapsed'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"27. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Jazz expanded TREE LEVEL 2'",
" VISIBLE: 'Jazz expanded TREE LEVEL 2', cursor=1",
"SPEECH OUTPUT: 'Jazz expanded 4 items tree level 2'"]))
##########################################################################
# Expected output when node is collaped:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Left"))
sequence.append(WaitAction("object:state-changed:expanded", None, None,
pyatspi.ROLE_LABEL, 5000))
sequence.append(utils.AssertPresentationAction(
"28. Left Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Jazz collapsed TREE LEVEL 2'",
" VISIBLE: 'Jazz collapsed TREE LEVEL 2', cursor=1",
"SPEECH OUTPUT: 'collapsed'"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"29. Up Arrow in the tree",
["BRAILLE LINE: 'SwingSet2 Application Classical collapsed TREE LEVEL 2'",
" VISIBLE: 'Classical collapsed TREE LEVEL 2', cursor=1",
"SPEECH OUTPUT: 'Classical collapsed"]))
##########################################################################
# Expected output when node is selected:
#
sequence.append(utils.StartRecordingAction())
sequence.append(KeyComboAction("Up"))
sequence.append(WaitAction("object:active-descendant-changed", None, None,
pyatspi.ROLE_TREE, 5000))
sequence.append(utils.AssertPresentationAction(
"30. Up Arrow in the tree",
["BUG? - Seems a bit chatty",
"BRAILLE LINE: 'SwingSet2 Application SwingSet2 Frame RootPane LayeredPane Tree Demo TabList Tree Demo Page ScrollPane Viewport Tree Music expanded TREE LEVEL 1'",
" VISIBLE: 'Music expanded TREE LEVEL 1', cursor=1",
"SPEECH OUTPUT: 'SwingSet2 frame Tree Demo tab list Tree Demo page Music expanded 3 items tree level 1'"]))
##########################################################################
# Leave tree
#
sequence.append(KeyComboAction("Tab"))
sequence.append(WaitForFocus("", acc_role=pyatspi.ROLE_TEXT))
sequence.append(KeyComboAction("Tab"))
# Toggle the top left button, to return to normal state.
sequence.append(TypeAction(" "))
# Just a little extra wait to let some events get through.
#
sequence.append(PauseAction(3000))
sequence.append(utils.AssertionSummaryAction())
sequence.start()