summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/wai-aria
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
commit43a97878ce14b72f0981164f87f2e35e14151312 (patch)
tree620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/wai-aria
parentInitial commit. (diff)
downloadfirefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz
firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/wai-aria')
-rw-r--r--testing/web-platform/tests/wai-aria/META.yml5
-rw-r--r--testing/web-platform/tests/wai-aria/README.md65
-rw-r--r--testing/web-platform/tests/wai-aria/alertdialog_modal_false-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/alertdialog_modal_true-manual.html107
-rw-r--r--testing/web-platform/tests/wai-aria/application_activedescendant-manual.html202
-rw-r--r--testing/web-platform/tests/wai-aria/application_activedescendant_value_changes-manual.html253
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_not_declared-manual.html116
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_with_value_changes-manual.html110
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_with_value_date-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_with_value_location-manual.html114
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_with_value_page-manual.html120
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_with_value_step-manual.html120
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_with_value_time-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_with_value_true-manual.html116
-rw-r--r--testing/web-platform/tests/wai-aria/aria-current_with_value_unspecified-manual.html110
-rw-r--r--testing/web-platform/tests/wai-aria/aria-details_pointing_to_details_element-manual.html90
-rw-r--r--testing/web-platform/tests/wai-aria/aria-details_pointing_to_div_element-manual.html89
-rw-r--r--testing/web-platform/tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html170
-rw-r--r--testing/web-platform/tests/wai-aria/article_in_feed_setsize_-1-manual.html140
-rw-r--r--testing/web-platform/tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html174
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_dialog-manual.html132
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_emptystring-manual.html129
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_false-manual.html123
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_foo-manual.html129
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_grid-manual.html136
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_listbox-manual.html134
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_menu-manual.html134
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_tree-manual.html140
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_true-manual.html129
-rw-r--r--testing/web-platform/tests/wai-aria/button_haspopup_unspecified-manual.html129
-rw-r--r--testing/web-platform/tests/wai-aria/button_roledescription_empty-manual.html104
-rw-r--r--testing/web-platform/tests/wai-aria/button_roledescription_valid-manual.html102
-rw-r--r--testing/web-platform/tests/wai-aria/button_roledescription_whitespace_only-manual.html104
-rw-r--r--testing/web-platform/tests/wai-aria/cell-manual.html216
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_div-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html115
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html109
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html113
-rw-r--r--testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/cell_colindex_4-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/cell_rowindex_4-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/checkbox_readonly_false-manual.html120
-rw-r--r--testing/web-platform/tests/wai-aria/checkbox_readonly_true-manual.html126
-rw-r--r--testing/web-platform/tests/wai-aria/checkbox_readonly_unspecified-manual.html120
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html109
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html113
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_colindex_4-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_rowindex_4-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html133
-rw-r--r--testing/web-platform/tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html133
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_controls_an_invalid_id-manual.html98
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_haspopup_dialog-manual.html162
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_haspopup_false-manual.html156
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_haspopup_grid-manual.html164
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_haspopup_listbox-manual.html154
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_haspopup_menu-manual.html154
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_haspopup_tree-manual.html171
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_haspopup_true-manual.html162
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_haspopup_unspecified-manual.html159
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_orientation_horizontal-manual.html123
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_orientation_unspecified-manual.html129
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_orientation_vertical-manual.html123
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_readonly_false-manual.html149
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_readonly_true-manual.html155
-rw-r--r--testing/web-platform/tests/wai-aria/combobox_readonly_unspecified-manual.html149
-rw-r--r--testing/web-platform/tests/wai-aria/dialog_modal_false-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/dialog_modal_true-manual.html108
-rw-r--r--testing/web-platform/tests/wai-aria/dialog_modal_unspecified-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/div_element_without_role_roledescription_valid-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/errormessage_object_in_invalid_state-manual.html100
-rw-r--r--testing/web-platform/tests/wai-aria/errormessage_object_in_valid_state-manual.html100
-rw-r--r--testing/web-platform/tests/wai-aria/feed-manual.html105
-rw-r--r--testing/web-platform/tests/wai-aria/figure-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html249
-rw-r--r--testing/web-platform/tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html249
-rw-r--r--testing/web-platform/tests/wai-aria/grid_busy_false-manual.html163
-rw-r--r--testing/web-platform/tests/wai-aria/grid_busy_true-manual.html157
-rw-r--r--testing/web-platform/tests/wai-aria/grid_busy_value_changes-manual.html200
-rw-r--r--testing/web-platform/tests/wai-aria/grid_colcount_8-manual.html130
-rw-r--r--testing/web-platform/tests/wai-aria/grid_columnheader_readonly_false-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/grid_columnheader_readonly_true-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html98
-rw-r--r--testing/web-platform/tests/wai-aria/grid_columnheader_required_false-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/grid_columnheader_required_true-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/grid_columnheader_required_unspecified-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/grid_rowcount_3-manual.html132
-rw-r--r--testing/web-platform/tests/wai-aria/grid_rowheader_readonly_false-manual.html98
-rw-r--r--testing/web-platform/tests/wai-aria/grid_rowheader_readonly_true-manual.html98
-rw-r--r--testing/web-platform/tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html98
-rw-r--r--testing/web-platform/tests/wai-aria/grid_rowheader_required_false-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/grid_rowheader_required_true-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/grid_rowheader_required_unspecified-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/gridcell_colindex_4-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/gridcell_rowindex_4-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html80
-rw-r--r--testing/web-platform/tests/wai-aria/group_hidden_undefined_element_rendered-manual.html116
-rw-r--r--testing/web-platform/tests/wai-aria/heading_level_unspecified-manual.html120
-rw-r--r--testing/web-platform/tests/wai-aria/idlharness.window.js15
-rw-r--r--testing/web-platform/tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html82
-rw-r--r--testing/web-platform/tests/wai-aria/keyshortcuts_one_shortcut-manual.html82
-rw-r--r--testing/web-platform/tests/wai-aria/listbox_busy_false-manual.html121
-rw-r--r--testing/web-platform/tests/wai-aria/listbox_busy_true-manual.html109
-rw-r--r--testing/web-platform/tests/wai-aria/listbox_orientation_horizontal-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/listbox_orientation_unspecified-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/listbox_orientation_vertical-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/listbox_readonly_false-manual.html124
-rw-r--r--testing/web-platform/tests/wai-aria/listbox_readonly_true-manual.html130
-rw-r--r--testing/web-platform/tests/wai-aria/listbox_readonly_unspecified-manual.html124
-rw-r--r--testing/web-platform/tests/wai-aria/listitem_setsize_-1-manual.html134
-rw-r--r--testing/web-platform/tests/wai-aria/menu_orientation_horizontal-manual.html123
-rw-r--r--testing/web-platform/tests/wai-aria/menu_orientation_unspecified-manual.html122
-rw-r--r--testing/web-platform/tests/wai-aria/menu_orientation_vertical-manual.html123
-rw-r--r--testing/web-platform/tests/wai-aria/menubar_busy_false-manual.html130
-rw-r--r--testing/web-platform/tests/wai-aria/menubar_busy_true-manual.html130
-rw-r--r--testing/web-platform/tests/wai-aria/menubar_orientation_horizontal-manual.html123
-rw-r--r--testing/web-platform/tests/wai-aria/menubar_orientation_unspecified-manual.html123
-rw-r--r--testing/web-platform/tests/wai-aria/menubar_orientation_vertical-manual.html111
-rw-r--r--testing/web-platform/tests/wai-aria/menuitem_expanded_false-manual.html78
-rw-r--r--testing/web-platform/tests/wai-aria/menuitem_expanded_true-manual.html82
-rw-r--r--testing/web-platform/tests/wai-aria/menuitem_posinset_and_setsize-manual.html148
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemcheckbox_expanded_false-manual.html78
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemcheckbox_expanded_true-manual.html82
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html185
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_false-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_true-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html122
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemradio_expanded_false-manual.html78
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemradio_expanded_true-manual.html82
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html196
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemradio_readonly_false-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemradio_readonly_true-manual.html140
-rw-r--r--testing/web-platform/tests/wai-aria/menuitemradio_readonly_unspecified-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/none-manual.html78
-rw-r--r--testing/web-platform/tests/wai-aria/option_selected_false-manual.html131
-rw-r--r--testing/web-platform/tests/wai-aria/option_selected_true-manual.html131
-rw-r--r--testing/web-platform/tests/wai-aria/option_selected_undefined-manual.html131
-rw-r--r--testing/web-platform/tests/wai-aria/option_selected_value_changes-manual.html146
-rw-r--r--testing/web-platform/tests/wai-aria/radiogroup_orientation_horizontal-manual.html123
-rw-r--r--testing/web-platform/tests/wai-aria/radiogroup_orientation_unspecified-manual.html135
-rw-r--r--testing/web-platform/tests/wai-aria/radiogroup_orientation_vertical-manual.html111
-rw-r--r--testing/web-platform/tests/wai-aria/radiogroup_readonly_false-manual.html115
-rw-r--r--testing/web-platform/tests/wai-aria/radiogroup_readonly_true-manual.html115
-rw-r--r--testing/web-platform/tests/wai-aria/radiogroup_readonly_unspecified-manual.html115
-rw-r--r--testing/web-platform/tests/wai-aria/region_with_name-manual.html114
-rw-r--r--testing/web-platform/tests/wai-aria/region_without_name-manual.html128
-rw-r--r--testing/web-platform/tests/wai-aria/row_colindex_4-manual.html149
-rw-r--r--testing/web-platform/tests/wai-aria/row_rowindex_4-manual.html149
-rw-r--r--testing/web-platform/tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/rowheader_colindex_4-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/rowheader_rowindex_4-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html133
-rw-r--r--testing/web-platform/tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html133
-rw-r--r--testing/web-platform/tests/wai-aria/scripts/ATTAcomm.js947
-rw-r--r--testing/web-platform/tests/wai-aria/scripts/manual.css70
-rw-r--r--testing/web-platform/tests/wai-aria/scrollbar_all_values_unspecified-manual.html182
-rw-r--r--testing/web-platform/tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html182
-rw-r--r--testing/web-platform/tests/wai-aria/scrollbar_orientation_unspecified-manual.html132
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox-manual.html120
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_activedescendant-manual.html222
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_activedescendant_value_changes-manual.html271
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_autocomplete_both-manual.html133
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_autocomplete_inline-manual.html133
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_autocomplete_list-manual.html133
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_autocomplete_none-manual.html133
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_autocomplete_unspecified-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_multiline_false-manual.html126
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_multiline_true-manual.html138
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_multiline_unspecified-manual.html108
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_placeholder-manual.html140
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_readonly_false-manual.html139
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_readonly_true-manual.html139
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_readonly_unspecified-manual.html139
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_required_false-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_required_true-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/searchbox_required_unspecified-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/separator_focusable_all_values_unspecified-manual.html182
-rw-r--r--testing/web-platform/tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html182
-rw-r--r--testing/web-platform/tests/wai-aria/separator_focusable_valuetext-manual.html206
-rw-r--r--testing/web-platform/tests/wai-aria/separator_orientation_unspecified-manual.html120
-rw-r--r--testing/web-platform/tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html90
-rw-r--r--testing/web-platform/tests/wai-aria/separator_unfocusable_valuetext-manual.html116
-rw-r--r--testing/web-platform/tests/wai-aria/slider_all_values_unspecified-manual.html182
-rw-r--r--testing/web-platform/tests/wai-aria/slider_only_valuenow_unspecified-manual.html182
-rw-r--r--testing/web-platform/tests/wai-aria/slider_orientation_unspecified-manual.html132
-rw-r--r--testing/web-platform/tests/wai-aria/slider_readonly_false-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/slider_readonly_true-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/slider_readonly_unspecified-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/spinbutton_all_values_unspecified-manual.html183
-rw-r--r--testing/web-platform/tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html183
-rw-r--r--testing/web-platform/tests/wai-aria/spinbutton_readonly_false-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/spinbutton_readonly_true-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/spinbutton_readonly_unspecified-manual.html127
-rw-r--r--testing/web-platform/tests/wai-aria/switch_checked_false-manual.html124
-rw-r--r--testing/web-platform/tests/wai-aria/switch_checked_mixed-manual.html130
-rw-r--r--testing/web-platform/tests/wai-aria/switch_checked_true-manual.html138
-rw-r--r--testing/web-platform/tests/wai-aria/switch_checked_undefined-manual.html124
-rw-r--r--testing/web-platform/tests/wai-aria/switch_checked_value_changes-manual.html163
-rw-r--r--testing/web-platform/tests/wai-aria/switch_readonly_false-manual.html119
-rw-r--r--testing/web-platform/tests/wai-aria/switch_readonly_true-manual.html119
-rw-r--r--testing/web-platform/tests/wai-aria/switch_readonly_unspecified-manual.html119
-rw-r--r--testing/web-platform/tests/wai-aria/tab_posinset_and_setsize-manual.html189
-rw-r--r--testing/web-platform/tests/wai-aria/table_colcount_-1-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/table_colcount_8-manual.html112
-rw-r--r--testing/web-platform/tests/wai-aria/table_rowcount_-1-manual.html126
-rw-r--r--testing/web-platform/tests/wai-aria/table_rowcount_3-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/tablist_orientation_horizontal-manual.html142
-rw-r--r--testing/web-platform/tests/wai-aria/tablist_orientation_unspecified-manual.html136
-rw-r--r--testing/web-platform/tests/wai-aria/tablist_orientation_vertical-manual.html130
-rw-r--r--testing/web-platform/tests/wai-aria/term_role-manual.html106
-rw-r--r--testing/web-platform/tests/wai-aria/textbox_placeholder-manual.html134
-rw-r--r--testing/web-platform/tests/wai-aria/toolbar_orientation_horizontal-manual.html122
-rw-r--r--testing/web-platform/tests/wai-aria/toolbar_orientation_unspecified-manual.html122
-rw-r--r--testing/web-platform/tests/wai-aria/toolbar_orientation_vertical-manual.html122
-rw-r--r--testing/web-platform/tests/wai-aria/tools/convert_wiki.pl648
-rw-r--r--testing/web-platform/tests/wai-aria/tools/make_tests.pl544
-rw-r--r--testing/web-platform/tests/wai-aria/tree_orientation_horizontal-manual.html129
-rw-r--r--testing/web-platform/tests/wai-aria/tree_orientation_unspecified-manual.html129
-rw-r--r--testing/web-platform/tests/wai-aria/tree_orientation_vertical-manual.html129
-rw-r--r--testing/web-platform/tests/wai-aria/treegrid_colcount_8-manual.html118
-rw-r--r--testing/web-platform/tests/wai-aria/treegrid_orientation_horizontal-manual.html137
-rw-r--r--testing/web-platform/tests/wai-aria/treegrid_orientation_unspecified-manual.html155
-rw-r--r--testing/web-platform/tests/wai-aria/treegrid_orientation_vertical-manual.html137
-rw-r--r--testing/web-platform/tests/wai-aria/treegrid_rowcount_3-manual.html120
-rw-r--r--testing/web-platform/tests/wai-aria/treeitem_selected_false-manual.html125
-rw-r--r--testing/web-platform/tests/wai-aria/treeitem_selected_true-manual.html125
-rw-r--r--testing/web-platform/tests/wai-aria/treeitem_selected_undefined-manual.html125
-rw-r--r--testing/web-platform/tests/wai-aria/treeitem_selected_value_changes-manual.html146
240 files changed, 32536 insertions, 0 deletions
diff --git a/testing/web-platform/tests/wai-aria/META.yml b/testing/web-platform/tests/wai-aria/META.yml
new file mode 100644
index 0000000000..864132a5a3
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/META.yml
@@ -0,0 +1,5 @@
+spec: https://w3c.github.io/aria/
+suggested_reviewers:
+ - halindrome
+ - joanmarie
+ - michael-n-cooper
diff --git a/testing/web-platform/tests/wai-aria/README.md b/testing/web-platform/tests/wai-aria/README.md
new file mode 100644
index 0000000000..4e1a7706e3
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/README.md
@@ -0,0 +1,65 @@
+Wai-aria: Tests for the WAI-ARIA Recommendations
+================================================
+
+The [WAI ARIA Recommendations](https://www.w3.org/TR/wai-aria)
+define extensions to HTML4/5 for support of extended semantics. These
+semantics make it easier for Assistive Technologies to interpret and
+present content to users with varying physical and cognitive abilities.
+
+The purpose of these tests is to help ensure that user agents support the
+requirements of the Recommendations.
+
+The general approach for this testing is to enable both manual and automated
+testing, with a preference for automation.
+
+
+Running Tests
+-------------
+
+In order to run these tests in an automated fashion, you will need to have a
+special Assistive Technology Test Adapter (ATTA) for the platform under test. We will
+provide a list of these for popular platforms here as they are made available.
+
+The ATTA will monitor the window under test via the platforms Accessibility
+Layer, forwarding information about the Accessibility Tree to the running test
+so that it can evaluate support for the various features under test.
+
+The workflow for running these tests is something like:
+
+1. Start up the ATTA for the platform under test, informing it of the location
+ of the test server and the user agent to be tested.
+2. Start up the test driver window and select the wai-aria tests to be run
+ (e.g., the ARIA 1.1 tests) - click "Start"
+3. A window pops up that shows a test - the description of which tells the
+ tester what is being tested. In an automated test, the test with proceed
+ without user intervention. In a manual test, some user input may be required
+ in order to stimulate the test.
+4. The test runs. Success or failure is determined and reported to the test
+ driver window, which then cycles to the next test in the sequence.
+5. Repeat steps 2-4 until done.
+6. Download the JSON format report of test results, which can then be visually
+ inspected, reported on using various tools, or passed on to W3C for
+ evaluation and collection in the Implementation Report via github.
+
+**Remember that while these tests are written to help exercise implementations,
+their other (important) purpose is to increase confidence that there are
+interoperable implementations.** So, implementers are the audience, but these
+tests are not meant to be a comprehensive collection of tests for a client that
+might implement the Recommendation.
+
+
+Capturing and Reporting Results
+-------------------------------
+
+As tests are run against implementations, if the results of testing are
+submitted to [test-results](https://github.com/w3c/test-results/) then they will
+be automatically included in documents generated by
+[wptreport](https://www.github.com/w3c/wptreport). The same tool can be used
+locally to view reports about recorded results.
+
+
+Writing Tests
+-------------
+
+If you are interested in writing tests for this environment, see the
+associated [CONTRIBUTING](CONTRIBUTING.md) document.
diff --git a/testing/web-platform/tests/wai-aria/alertdialog_modal_false-manual.html b/testing/web-platform/tests/wai-aria/alertdialog_modal_false-manual.html
new file mode 100644
index 0000000000..ee64c9dbf0
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/alertdialog_modal_false-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>alertdialog modal false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_MODAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXApplicationAlertDialog"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "web alert dialog"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_MODAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Pane"
+ ],
+ [
+ "result",
+ "Window.isModal",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "Test2",
+ "test" : {
+ "AXAPI" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "alertdialog modal false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for alertdialog modal false.</p>
+ <h1 id="Test2">Modal Dialog Box Test</h1>
+ <div role="alertdialog" aria-modal="false" id="test">
+ You have an error.
+ <input type="button" value="ok"/>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/alertdialog_modal_true-manual.html b/testing/web-platform/tests/wai-aria/alertdialog_modal_true-manual.html
new file mode 100644
index 0000000000..4affe2fd5e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/alertdialog_modal_true-manual.html
@@ -0,0 +1,107 @@
+<!doctype html>
+<html>
+ <head>
+ <title>alertdialog modal true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_MODAL"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_MODAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Pane"
+ ],
+ [
+ "result",
+ "Window.isModal",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "Test2",
+ "test" : {
+ "AXAPI" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "alertdialog modal true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for alertdialog modal true.</p>
+ <h1 id="Test2">Modal Dialog Box Test</h1>
+ <div role="alertdialog" aria-modal="true" id="test">
+ You have an error.
+ <input type="button" value="ok"/>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/application_activedescendant-manual.html b/testing/web-platform/tests/wai-aria/application_activedescendant-manual.html
new file mode 100644
index 0000000000..a6ef85ac3d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/application_activedescendant-manual.html
@@ -0,0 +1,202 @@
+<!doctype html>
+<html>
+ <head>
+ <title>application activedescendant</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "event" : "focus",
+ "title" : "step 1",
+ "type" : "event"
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_EMBEDDED"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXWebApplication"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "web application"
+ ],
+ [
+ "property",
+ "AXFocused",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_APPLICATION"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Pane"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "application"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_IsKeyboardFocusablePropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_HasKeyboardFocusPropertyId",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ },
+ {
+ "element" : "bob",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXFocused",
+ "is",
+ "true"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXFocused)",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.UIA_IsKeyboardFocusablePropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_HasKeyboardFocusPropertyId",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 3",
+ "type" : "test"
+ }
+ ],
+ "title" : "application activedescendant"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for application activedescendant.</p>
+ <div id='test' tabindex="0" aria-activedescendant="bob" role='application'>
+ <div id='bob' role='group'>Hello world</div>
+ </div>
+ then role:application, aria-activedescendant: bob
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/application_activedescendant_value_changes-manual.html b/testing/web-platform/tests/wai-aria/application_activedescendant_value_changes-manual.html
new file mode 100644
index 0000000000..d923c84dea
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/application_activedescendant_value_changes-manual.html
@@ -0,0 +1,253 @@
+<!doctype html>
+<html>
+ <head>
+ <title>application activedescendant value changes</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "event" : "focus",
+ "title" : "step 1",
+ "type" : "event"
+ },
+ {
+ "attribute" : "aria-activedescendant",
+ "element" : "test",
+ "title" : "step 2",
+ "type" : "attribute",
+ "value" : "\"bob\""
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_EMBEDDED"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXWebApplication"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "web application"
+ ],
+ [
+ "property",
+ "AXFocused",
+ "is",
+ "false"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXFocused)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_FOCUS"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_APPLICATION"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Pane"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "application"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_IsKeyboardFocusablePropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_HasKeyboardFocusPropertyId",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 3",
+ "type" : "test"
+ },
+ {
+ "element" : "bob",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSABLE"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:focused"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXFocused",
+ "is",
+ "true"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXFocused)",
+ "is",
+ "true"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "AXFocusedUIElementChanged"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSABLE"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_FOCUS"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.UIA_IsKeyboardFocusablePropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_HasKeyboardFocusPropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "UIA_AutomationFocusChangedEventId"
+ ]
+ ]
+ },
+ "title" : "step 4",
+ "type" : "test"
+ }
+ ],
+ "title" : "application activedescendant value changes"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for application activedescendant value changes.</p>
+ <div id='test' tabindex="0" role='application'>
+ <div id='bob' role='group'>Hello world</div>
+ </div>
+ then role:application, aria-activedescendant: bob generates a state change event
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_not_declared-manual.html b/testing/web-platform/tests/wai-aria/aria-current_not_declared-manual.html
new file mode 100644
index 0000000000..ecf95bb64f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_not_declared-manual.html
@@ -0,0 +1,116 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current not declared</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_ACTIVE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "current:false"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXARIACurrent",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "current:false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ListItem"
+ ],
+ [
+ "property",
+ "current",
+ "is",
+ ""
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current not declared"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current not declared.</p>
+ <ul role="list">
+ <li id="test" role="listitem">2</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_with_value_changes-manual.html b/testing/web-platform/tests/wai-aria/aria-current_with_value_changes-manual.html
new file mode 100644
index 0000000000..d3f1eae005
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_with_value_changes-manual.html
@@ -0,0 +1,110 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current with value changes</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "attribute" : "aria-current",
+ "element" : "test",
+ "title" : "step 1",
+ "type" : "attribute",
+ "value" : "\"false\""
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_ACTIVE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:false"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:active"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "0"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXARIACurrent",
+ "contains",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:false"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "current",
+ "is",
+ "false"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "PropertyChangedEvent"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current with value changes"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current with value changes.</p>
+ <ul role="list">
+ <li id="test" role="listitem" aria-current="true">1</li>
+ <li role="listitem" aria-current="false">2</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_with_value_date-manual.html b/testing/web-platform/tests/wai-aria/aria-current_with_value_date-manual.html
new file mode 100644
index 0000000000..b15f5ec13a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_with_value_date-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current with value date</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_ACTIVE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:date"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIACurrent",
+ "is",
+ "date"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:date"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "TableItem"
+ ],
+ [
+ "property",
+ "current",
+ "is",
+ "date"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current with value date"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current with value date.</p>
+ <table>
+ <tr>
+ <td id="test" role="cell" aria-current="date">1</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_with_value_location-manual.html b/testing/web-platform/tests/wai-aria/aria-current_with_value_location-manual.html
new file mode 100644
index 0000000000..e8cf762c0e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_with_value_location-manual.html
@@ -0,0 +1,114 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current with value location</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_IMAGE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_ACTIVE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:location"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXImage"
+ ],
+ [
+ "property",
+ "AXARIACurrent",
+ "is",
+ "location"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GRAPHIC"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:location"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleImage"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GRAPHIC"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Image"
+ ],
+ [
+ "property",
+ "current",
+ "is",
+ "location"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current with value location"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current with value location.</p>
+ <div id="test" role="img" aria-current="location">1</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_with_value_page-manual.html b/testing/web-platform/tests/wai-aria/aria-current_with_value_page-manual.html
new file mode 100644
index 0000000000..ba48b738cc
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_with_value_page-manual.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current with value page</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LINK"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_ACTIVE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:page"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXLink"
+ ],
+ [
+ "property",
+ "AXARIACurrent",
+ "is",
+ "page"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LINK"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:page"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleHypertext"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LINK"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_LINKED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HyperLink"
+ ],
+ [
+ "property",
+ "current",
+ "is",
+ "page"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current with value page"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current with value page.</p>
+ <div id="test" role="link" aria-current="page">1</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_with_value_step-manual.html b/testing/web-platform/tests/wai-aria/aria-current_with_value_step-manual.html
new file mode 100644
index 0000000000..6f4d5986c6
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_with_value_step-manual.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current with value step</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LINK"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_ACTIVE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:step"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXLink"
+ ],
+ [
+ "property",
+ "AXARIACurrent",
+ "is",
+ "step"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LINK"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:step"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleHypertext"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LINK"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_LINKED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HyperLink"
+ ],
+ [
+ "property",
+ "current",
+ "is",
+ "step"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current with value step"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current with value step.</p>
+ <div id="test" role="link" aria-current="step">1</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_with_value_time-manual.html b/testing/web-platform/tests/wai-aria/aria-current_with_value_time-manual.html
new file mode 100644
index 0000000000..046fb81769
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_with_value_time-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current with value time</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_ACTIVE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:time"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIACurrent",
+ "is",
+ "time"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:time"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "TableItem"
+ ],
+ [
+ "property",
+ "current",
+ "is",
+ "time"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current with value time"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current with value time.</p>
+ <table>
+ <tr>
+ <td id="test" role="cell" aria-current="time">1</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_with_value_true-manual.html b/testing/web-platform/tests/wai-aria/aria-current_with_value_true-manual.html
new file mode 100644
index 0000000000..3ce799f8b2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_with_value_true-manual.html
@@ -0,0 +1,116 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current with value true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_ACTIVE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:true"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXARIACurrent",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "current:true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ListItem"
+ ],
+ [
+ "property",
+ "current",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current with value true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current with value true.</p>
+ <ul role="list">
+ <li id="test" role="listitem" aria-current="true">1</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-current_with_value_unspecified-manual.html b/testing/web-platform/tests/wai-aria/aria-current_with_value_unspecified-manual.html
new file mode 100644
index 0000000000..c017a000a1
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-current_with_value_unspecified-manual.html
@@ -0,0 +1,110 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-current with value unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_ACTIVE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXARIACurrent",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "current:false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ListItem"
+ ],
+ [
+ "property",
+ "current",
+ "is",
+ ""
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-current with value unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-current with value unspecified.</p>
+ <ul role="list">
+ <li id="test" role="listitem" aria-current="">1</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-details_pointing_to_details_element-manual.html b/testing/web-platform/tests/wai-aria/aria-details_pointing_to_details_element-manual.html
new file mode 100644
index 0000000000..6a0d9d776a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-details_pointing_to_details_element-manual.html
@@ -0,0 +1,90 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-details pointing to details element</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "relation",
+ "RELATION_DETAILS",
+ "is",
+ "[details]"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "contains",
+ "IA2_RELATION_DETAILS"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.DescribedBy",
+ "is",
+ "[details]"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "details",
+ "test" : {
+ "ATK" : [
+ [
+ "relation",
+ "RELATION_DETAILS_FOR",
+ "is",
+ "[test]"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "contains",
+ "IA2_RELATION_DETAILS_FOR"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-details pointing to details element"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-details pointing to details element.</p>
+ <img id="test" src="foo.jpg" aria-details="details">
+ <details id="details">
+ <summary>More information at W3.org</summary>
+ <iframe src="data:text/html,<body>foo</body>"/>
+ </details>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/aria-details_pointing_to_div_element-manual.html b/testing/web-platform/tests/wai-aria/aria-details_pointing_to_div_element-manual.html
new file mode 100644
index 0000000000..8a46e78d97
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/aria-details_pointing_to_div_element-manual.html
@@ -0,0 +1,89 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-details pointing to div element</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "relation",
+ "RELATION_DETAILS",
+ "is",
+ "[details]"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "contains",
+ "IA2_RELATION_DETAILS"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.DescribedBy",
+ "is",
+ "[details]"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "details",
+ "test" : {
+ "ATK" : [
+ [
+ "relation",
+ "RELATION_DETAILS_FOR",
+ "is",
+ "[test]"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "contains",
+ "IA2_RELATION_DETAILS_FOR"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-details pointing to div element"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-details pointing to div element.</p>
+ <img id="test" src="foo.jpg" aria-details="details">
+ <div id="details">
+ <iframe src="data:text/html,<body>foo</body>"/>
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html b/testing/web-platform/tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html
new file mode 100644
index 0000000000..9c89dc3fa9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/article_in_feed_posinset_and_setsize-manual.html
@@ -0,0 +1,170 @@
+<!doctype html>
+<html>
+ <head>
+ <title>article in feed posinset and setsize</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ARTICLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:article"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXDocumentArticle"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "article"
+ ],
+ [
+ "property",
+ "AXARIAPosInSet",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AXARIASetSize",
+ "is",
+ "8"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:article"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "positionInGroup:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DOCUMENT"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Group"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "article"
+ ],
+ [
+ "property",
+ "AriaProperties.posinset",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AriaProperties.setsize",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "article in feed posinset and setsize"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for article in feed posinset and setsize.</p>
+ <div role="feed">
+ <div id="test" role="article" aria-posinset="4" aria-setsize="8">test cell</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/article_in_feed_setsize_-1-manual.html b/testing/web-platform/tests/wai-aria/article_in_feed_setsize_-1-manual.html
new file mode 100644
index 0000000000..0552f926e9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/article_in_feed_setsize_-1-manual.html
@@ -0,0 +1,140 @@
+<!doctype html>
+<html>
+ <head>
+ <title>article in feed setsize -1</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ARTICLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:article"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:-1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXDocumentArticle"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "article"
+ ],
+ [
+ "property",
+ "AXARIASetSize",
+ "is",
+ "-1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:article"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:-1"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:-1"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DOCUMENT"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Group"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "article"
+ ],
+ [
+ "property",
+ "AriaProperties.setsize",
+ "is",
+ "-1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "article in feed setsize -1"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for article in feed setsize -1.</p>
+ <div role="feed">
+ <div id="test" role="article" aria-setsize="-1">test cell</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html b/testing/web-platform/tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html
new file mode 100644
index 0000000000..91cb0e0eb4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/article_not_in_feed_posinset_and_setsize-manual.html
@@ -0,0 +1,174 @@
+<!doctype html>
+<html>
+ <head>
+ <title>article not in feed posinset and setsize</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ARTICLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:article"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXDocumentArticle"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "article"
+ ],
+ [
+ "property",
+ "AXARIAPosInSet",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AXARIASetSize",
+ "is",
+ "8"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DOCUMENT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:article"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "positionInGroup:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DOCUMENT"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Group"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "article"
+ ],
+ [
+ "property",
+ "AriaProperties.posinset",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AriaProperties.setsize",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "article not in feed posinset and setsize"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for article not in feed posinset and setsize.</p>
+ <div id="test" role="article" aria-posinset="4" aria-setsize="8">test cell</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_dialog-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_dialog-manual.html
new file mode 100644
index 0000000000..8ba0a22a8d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_dialog-manual.html
@@ -0,0 +1,132 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup dialog</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:dialog"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXPopUpButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "pop up button"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:dialog"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup dialog"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup dialog.</p>
+ <div id="test" role="button" aria-haspopup="dialog">
+ OK
+ </div>
+ <div role="dialog">
+ This is the dialog box
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_emptystring-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_emptystring-manual.html
new file mode 100644
index 0000000000..e909148906
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_emptystring-manual.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup emptystring</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:false"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "button"
+ ],
+ [
+ "property",
+ "actions",
+ "doesNotContain",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "doesNotContain",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup emptystring"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup emptystring.</p>
+ <div id="test" role="button" aria-haspopup="">
+ OK
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_false-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_false-manual.html
new file mode 100644
index 0000000000..97188995e5
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_false-manual.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "button"
+ ],
+ [
+ "property",
+ "actions",
+ "doesNotContain",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "doesNotContain",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup false.</p>
+ <div id="test" role="button" aria-haspopup="false">
+ OK
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_foo-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_foo-manual.html
new file mode 100644
index 0000000000..a09d21c074
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_foo-manual.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup foo</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:false"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "button"
+ ],
+ [
+ "property",
+ "actions",
+ "doesNotContain",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "doesNotContain",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup foo"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup foo.</p>
+ <div id="test" role="button" aria-haspopup="foo">
+ OK
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_grid-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_grid-manual.html
new file mode 100644
index 0000000000..57c8efbde2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_grid-manual.html
@@ -0,0 +1,136 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup grid</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:grid"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXPopUpButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "pop up button"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:grid"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup grid"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup grid.</p>
+ <div id="test" role="button" aria-haspopup="grid">
+ OK
+ </div>
+ <table role="grid">
+ <tr>
+ <th>c1</th><th>c2</th>
+ </tr>
+ <tr>
+ <td>A</td><td>B</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_listbox-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_listbox-manual.html
new file mode 100644
index 0000000000..4191fc40a3
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_listbox-manual.html
@@ -0,0 +1,134 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup listbox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXPopUpButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "pop up button"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup listbox"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup listbox.</p>
+ <div id="test" role="button" aria-haspopup="listbox">
+ OK
+ </div>
+ <ul role="listbox">
+ <li tabindex="0" role="option">sprouts</li>
+ <li tabindex="-1" role="option">cucumbers</li>
+ </ul>
+
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_menu-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_menu-manual.html
new file mode 100644
index 0000000000..9378993f55
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_menu-manual.html
@@ -0,0 +1,134 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup menu</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:menu"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXPopUpButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "pop up button"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:menu"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup menu"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup menu.</p>
+ <div id="test" role="button" aria-haspopup="menu">
+ OK
+ </div>
+ <ul tabindex="0" aria-activedescendant="foo" role="menu">
+ <li id="foo" tabindex="-1" role="menuitem">sprouts</li>
+ <li tabindex="-1" role="menuitem">cucumbers</li>
+ </ul>
+
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_tree-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_tree-manual.html
new file mode 100644
index 0000000000..e62b87f59d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_tree-manual.html
@@ -0,0 +1,140 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup tree</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:tree"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXPopUpButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "pop up button"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:tree"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup tree"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup tree.</p>
+ <div id="test" role="button" aria-haspopup="tree">
+ OK
+ </div>
+ <ul tabindex="0" aria-activedescendant="foo" role="tree">
+ <li id="foo" tabindex="-1" role="treeitem">
+ squash
+ <ul role="group">
+ <li tabindex="-1"id="t1" role="treeitem">yellow</li>
+ <li tabindex="-1"id="t2" role="treeitem">summmer</li>
+ </ul>
+ </li>
+ <li tabindex="-1" role="treeitem">cucumbers</li>
+ </ul>
+
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_true-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_true-manual.html
new file mode 100644
index 0000000000..a6d94658d2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_true-manual.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:menu"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXPopUpButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "pop up button"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:menu"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup true.</p>
+ <div role="button" aria-haspopup="true" id="test">
+ OK
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_haspopup_unspecified-manual.html b/testing/web-platform/tests/wai-aria/button_haspopup_unspecified-manual.html
new file mode 100644
index 0000000000..96d7095d4d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_haspopup_unspecified-manual.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button haspopup unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "haspopup"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "button"
+ ],
+ [
+ "property",
+ "actions",
+ "doesNotContain",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_HASPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "doesNotContain",
+ "ExpandCollapse"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button haspopup unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button haspopup unspecified.</p>
+ <div id="test" role="button">
+ OK
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_roledescription_empty-manual.html b/testing/web-platform/tests/wai-aria/button_roledescription_empty-manual.html
new file mode 100644
index 0000000000..d9eb0fe7cc
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_roledescription_empty-manual.html
@@ -0,0 +1,104 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button roledescription empty</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "roledescription"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "button"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "localizedExtendedRole",
+ "is",
+ "null"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "Button"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button roledescription empty"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button roledescription empty.</p>
+ <div role="button" aria-roledescription="" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_roledescription_valid-manual.html b/testing/web-platform/tests/wai-aria/button_roledescription_valid-manual.html
new file mode 100644
index 0000000000..cdcf6071e6
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_roledescription_valid-manual.html
@@ -0,0 +1,102 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button roledescription valid</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "roledescription:SassyButton"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "SassyButton"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "localizedExtendedRole",
+ "is",
+ "SassyButton"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "SassyButton"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button roledescription valid"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button roledescription valid.</p>
+ <input type="button" value="Go Fish" aria-roledescription="SassyButton" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/button_roledescription_whitespace_only-manual.html b/testing/web-platform/tests/wai-aria/button_roledescription_whitespace_only-manual.html
new file mode 100644
index 0000000000..59e463778a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/button_roledescription_whitespace_only-manual.html
@@ -0,0 +1,104 @@
+<!doctype html>
+<html>
+ <head>
+ <title>button roledescription whitespace only</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "roledescription"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "button"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "localizedExtendedRole",
+ "is",
+ "null"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "Button"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "button roledescription whitespace only"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for button roledescription whitespace only.</p>
+ <div role="button" aria-roledescription=" " id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell-manual.html b/testing/web-platform/tests/wai-aria/cell-manual.html
new file mode 100644
index 0000000000..d9f0eafbe0
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell-manual.html
@@ -0,0 +1,216 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "foo",
+ "test" : {
+ "ATK" : [
+ [
+ "result",
+ "atk_table_get_n_columns()",
+ "is",
+ "8"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "table"
+ ],
+ [
+ "property",
+ "AXARIAColumnCount",
+ "is",
+ "8"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Grid.ColumnCount",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "column=3"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "TableCell"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "cell"
+ ],
+ [
+ "property",
+ "AXARIAColumnIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "positionInGroup:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "GridItem pattern"
+ ],
+ [
+ "property",
+ "GridItem.Column",
+ "is",
+ "3"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "property",
+ "interfaces",
+ "MUST NOT contain",
+ "invoke pattern"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell.</p>
+ <div id="foo" role="table" aria-colcount="8">
+ <div role="row">
+ <span id="test" role="cell" aria-colindex="4" >test cell</span>
+ </div>
+ </div>
+ then role: cell, aria-colindex: 4, aria-colcount:8
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_div-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_div-manual.html
new file mode 100644
index 0000000000..fa120dc5e4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_div-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-colspan 2 on div</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.ColumnSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-colspan 2 on div"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-colspan 2 on div.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="cell" aria-colspan="2">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html
new file mode 100644
index 0000000000..a7c65fed3d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-colspan 2 on td html colspan 3</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "doesNotContain",
+ "column_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "isNot",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "colspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.ColumnSpan",
+ "isNot",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-colspan 2 on td html colspan 3"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-colspan 2 on td html colspan 3.</p>
+ <table>
+ <tr>
+ <td id="test" colspan="3" aria-colspan="2">test cell</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html
new file mode 100644
index 0000000000..057918c6b0
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_headers_and_border-manual.html
@@ -0,0 +1,115 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-colspan 2 on td html colspan 3 with headers and border</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "3"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "colspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.ColumnSpan",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-colspan 2 on td html colspan 3 with headers and border"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-colspan 2 on td html colspan 3 with headers and border.</p>
+ <table border="1">
+ <tr>
+ <th>test header 1</th><th>test header 2</th><th>test header 3</th>
+ </tr>
+ <tr>
+ <td id="test" colspan="3" aria-colspan="2">test cell</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html
new file mode 100644
index 0000000000..2c05e6ea71
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_html_colspan_3_with_three_actual_columns-manual.html
@@ -0,0 +1,109 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-colspan 2 on td html colspan 3 with three actual columns</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "3"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "colspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.ColumnSpan",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-colspan 2 on td html colspan 3 with three actual columns"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-colspan 2 on td html colspan 3 with three actual columns.</p>
+ <table>
+ <tr>
+ <td>1</td><td>2</td><td>3</td>
+ </tr>
+ <tr>
+ <td id="test" colspan="3" aria-colspan="2">test cell</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html
new file mode 100644
index 0000000000..06212078b7
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-colspan_2_on_td_with_html_colspan_not_specified-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-colspan 2 on td with html colspan not specified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.ColumnSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-colspan 2 on td with html colspan not specified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-colspan 2 on td with html colspan not specified.</p>
+ <table>
+ <tr>
+ <td id="test" aria-colspan="2">test cell</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html
new file mode 100644
index 0000000000..e94303848d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_div-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-rowspan 2 on div</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "row_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.RowSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-rowspan 2 on div"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-rowspan 2 on div.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="cell" aria-rowspan="2">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html
new file mode 100644
index 0000000000..86ea1a4aec
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-rowspan 2 on td html rowspan 3</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "rowspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "doesNotContain",
+ "row_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "isNot",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "rowspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.RowSpan",
+ "isNot",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-rowspan 2 on td html rowspan 3"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-rowspan 2 on td html rowspan 3.</p>
+ <table>
+ <tr>
+ <td id="test" role="cell" rowspan="3" aria-rowspan="2">test cell</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html
new file mode 100644
index 0000000000..f1572046f2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_html_rowspan_3_with_three_actual_rows-manual.html
@@ -0,0 +1,113 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-rowspan 2 on td html rowspan 3 with three actual rows</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "row_span=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "is",
+ "3"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "rowspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.RowSpan",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-rowspan 2 on td html rowspan 3 with three actual rows"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-rowspan 2 on td html rowspan 3 with three actual rows.</p>
+ <table>
+ <tr>
+ <td>1</td>
+ <td id="test" role="cell" rowspan="3" aria-rowspan="2">test cell</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html b/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html
new file mode 100644
index 0000000000..0978186feb
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_aria-rowspan_2_on_td_with_html_rowspan_not_specified-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell aria-rowspan 2 on td with html rowspan not specified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "row_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.RowSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell aria-rowspan 2 on td with html rowspan not specified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell aria-rowspan 2 on td with html rowspan not specified.</p>
+ <table>
+ <tr>
+ <td id="test" role="cell" aria-rowspan="2">test cell</td>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_colindex_4-manual.html b/testing/web-platform/tests/wai-aria/cell_colindex_4-manual.html
new file mode 100644
index 0000000000..02003065e0
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_colindex_4-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell colindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "column=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIAColumnIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "TableItem.Column",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell colindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell colindex 4.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="cell" aria-colindex="4" aria-colcount="8">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/cell_rowindex_4-manual.html b/testing/web-platform/tests/wai-aria/cell_rowindex_4-manual.html
new file mode 100644
index 0000000000..ea2937efcb
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/cell_rowindex_4-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>cell rowindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "row=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIARowIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "Row",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "cell rowindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for cell rowindex 4.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="cell" aria-rowindex="4">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/checkbox_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/checkbox_readonly_false-manual.html
new file mode 100644
index 0000000000..558dc8e391
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/checkbox_readonly_false-manual.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<html>
+ <head>
+ <title>checkbox readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_CHECK_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "checkbox"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CHECKBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CHECKBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Checkbox"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "checkbox readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for checkbox readonly false.</p>
+ <div id="test" aria-readonly="false" role="checkbox">test cell</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/checkbox_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/checkbox_readonly_true-manual.html
new file mode 100644
index 0000000000..f3c879038f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/checkbox_readonly_true-manual.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<html>
+ <head>
+ <title>checkbox readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_CHECK_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "checkbox"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CHECKBUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Checkbox"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "checkbox readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for checkbox readonly true.</p>
+ <div id="test" aria-readonly="true" role="checkbox">test cell</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/checkbox_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/checkbox_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..583985f000
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/checkbox_readonly_unspecified-manual.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<html>
+ <head>
+ <title>checkbox readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_CHECK_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "checkbox"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CHECKBUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CHECKBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Checkbox"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "checkbox readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for checkbox readonly unspecified.</p>
+ <div id="test" role="checkbox">test cell</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html b/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html
new file mode 100644
index 0000000000..4789ced84d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_div-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader aria-colspan 2 on div</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.ColumnSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader aria-colspan 2 on div"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader aria-colspan 2 on div.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="columnheader" aria-colspan="2">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html b/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html
new file mode 100644
index 0000000000..2ad8cb4bed
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader aria-colspan 2 on th html colspan 3</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "doesNotContain",
+ "column_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "isNot",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "colspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.ColumnSpan",
+ "isNot",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader aria-colspan 2 on th html colspan 3"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader aria-colspan 2 on th html colspan 3.</p>
+ <table>
+ <tr>
+ <th id="test" role="columnheader" colspan="3" aria-colspan="2">test cell</th>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html b/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html
new file mode 100644
index 0000000000..3ac8701f5d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_html_colspan_3_with_three_actual_columns-manual.html
@@ -0,0 +1,109 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader aria-colspan 2 on th html colspan 3 with three actual columns</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "3"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "colspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "TableItem.ColumnSpan",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader aria-colspan 2 on th html colspan 3 with three actual columns"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader aria-colspan 2 on th html colspan 3 with three actual columns.</p>
+ <table>
+ <tr>
+ <th>1</th><th>2</th><th>3</th>
+ </tr>
+ <tr>
+ <th id="test" role="columnheader" colspan="3" aria-colspan="2">test cell</th>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html b/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html
new file mode 100644
index 0000000000..82c7599188
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_aria-colspan_2_on_th_with_html_colspan_not_specified-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader aria-colspan 2 on th with html colspan not specified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.ColumnSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader aria-colspan 2 on th with html colspan not specified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader aria-colspan 2 on th with html colspan not specified.</p>
+ <table>
+ <tr>
+ <th id="test" role="columnheader" aria-colspan="2">test cell</th>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html b/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html
new file mode 100644
index 0000000000..00c0068392
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_div-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader aria-rowspan 2 on div</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "row_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.RowSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader aria-rowspan 2 on div"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader aria-rowspan 2 on div.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="columnheader" aria-rowspan="2">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html b/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html
new file mode 100644
index 0000000000..256a3d73bd
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader aria-rowspan 2 on th html rowspan 3</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "rowspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "doesNotContain",
+ "row_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "isNot",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "rowspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.RowSpan",
+ "isNot",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader aria-rowspan 2 on th html rowspan 3"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader aria-rowspan 2 on th html rowspan 3.</p>
+ <table>
+ <tr>
+ <th id="test" role="columnheader" rowspan="3" aria-rowspan="2">test cell</th>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html b/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html
new file mode 100644
index 0000000000..6327e5fb4e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_html_rowspan_3_with_three_actual_rows-manual.html
@@ -0,0 +1,113 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader aria-rowspan 2 on th html rowspan 3 with three actual rows</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "row_span=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "is",
+ "3"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "rowspan:2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.RowSpan",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader aria-rowspan 2 on th html rowspan 3 with three actual rows"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader aria-rowspan 2 on th html rowspan 3 with three actual rows.</p>
+ <table>
+ <tr>
+ <th>1</th>
+ <th id="test" role="columnheader" rowspan="3" aria-rowspan="2">test cell</th>
+ </tr>
+ <tr>
+ <th>2</th>
+ </tr>
+ <tr>
+ <th>3</th>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html b/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html
new file mode 100644
index 0000000000..425eb5b15e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_aria-rowspan_2_on_th_with_html_rowspan_not_specified-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader aria-rowspan 2 on th with html rowspan not specified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "row_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.RowSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader aria-rowspan 2 on th with html rowspan not specified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader aria-rowspan 2 on th with html rowspan not specified.</p>
+ <table>
+ <tr>
+ <th id="test" role="columnheader" aria-rowspan="2">test cell</th>
+ </tr>
+ </table>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_colindex_4-manual.html b/testing/web-platform/tests/wai-aria/columnheader_colindex_4-manual.html
new file mode 100644
index 0000000000..f44e8343fb
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_colindex_4-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader colindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "column=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIAColumnIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Column",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader colindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader colindex 4.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="columnheader" aria-colindex="4" aria-colcount="8">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_rowindex_4-manual.html b/testing/web-platform/tests/wai-aria/columnheader_rowindex_4-manual.html
new file mode 100644
index 0000000000..7ab7e9c8d0
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_rowindex_4-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader rowindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "row=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIARowIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.Row",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader rowindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader rowindex 4.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="columnheader" aria-rowindex="4">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html b/testing/web-platform/tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html
new file mode 100644
index 0000000000..7624f2a3b8
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_selected_false_not_automatically_propagated-manual.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader selected false not automatically propagated</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "cell"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "SelectionItem.IsSelected",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "SelectionItem.selectionContainer",
+ "is",
+ "test1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader selected false not automatically propagated"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader selected false not automatically propagated.</p>
+ <div id="test1" role="grid">
+ <div role="row">
+ <div role="columnheader" aria-selected="false">C1</div>
+ <div role="columnheader">C2</div>
+ </div>
+ <div role="row">
+ <div id="test" aria-selected="true" role="gridcell">A1</div>
+ <div role="gridcell">A2</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html b/testing/web-platform/tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html
new file mode 100644
index 0000000000..1bc364cb88
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/columnheader_selected_true_not_automatically_propagated-manual.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html>
+ <head>
+ <title>columnheader selected true not automatically propagated</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "cell"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "SelectionItem.IsSelected",
+ "is",
+ "false"
+ ],
+ [
+ "property",
+ "SelectionItem.selectionContainer",
+ "is",
+ "test1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "columnheader selected true not automatically propagated"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for columnheader selected true not automatically propagated.</p>
+ <div id="test1" role="grid">
+ <div role="row">
+ <div role="columnheader" aria-selected="true">C1</div>
+ <div role="columnheader">C2</div>
+ </div>
+ <div role="row">
+ <div id="test" role="gridcell">A1</div>
+ <div role="gridcell">A2</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_controls_an_invalid_id-manual.html b/testing/web-platform/tests/wai-aria/combobox_controls_an_invalid_id-manual.html
new file mode 100644
index 0000000000..91188d8e3c
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_controls_an_invalid_id-manual.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox controls an invalid ID</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "relations",
+ "doesNotContain",
+ "RELATION_CONTROLLER_FOR"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXLinkedUIElements",
+ "doesNotContain",
+ "myID"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "doesNotContain",
+ "IA2_RELATION_CONTROLLER_FOR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomation.ControllerFor",
+ "doesNotContain",
+ "myID"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "myID",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "relations",
+ "doesNotContain",
+ "RELATION_CONTROLLED_BY"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "doesNotContain",
+ "IA2_RELATION_CONTROLLED_BY"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox controls an invalid ID"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox controls an invalid ID.</p>
+ <div id="test" role="combobox" aria-controls="fakeID" aria-owns="myID" aria-expanded="true" aria-haspopup="listbox"><span role="textbox">option 3</span></div>
+ <div role="listbox" id="myID">
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+ <div role="option">option 3</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_haspopup_dialog-manual.html b/testing/web-platform/tests/wai-aria/combobox_haspopup_dialog-manual.html
new file mode 100644
index 0000000000..d9cf618d9b
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_haspopup_dialog-manual.html
@@ -0,0 +1,162 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox haspopup dialog</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:dialog"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:dialog"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "ExpandCollapse pattern"
+ ],
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox haspopup dialog"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox haspopup dialog.</p>
+ <div aria-label="Tag" aria-haspopup="dialog" id="test" role="combobox" aria-expanded="true" aria-owns="owned_dialog">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_dialog" aria-activedescendant="selected_cell">
+ <div role="radiogroup">
+ <div role="radio" id="selected_radio" tabindex="-1">R1</div><div role="radio" tabindex="-1">R2</div>
+ </div>
+ <div role="button" tabindex="0">ok</div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_haspopup_false-manual.html b/testing/web-platform/tests/wai-aria/combobox_haspopup_false-manual.html
new file mode 100644
index 0000000000..2b0ca94745
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_haspopup_false-manual.html
@@ -0,0 +1,156 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox haspopup false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HAS_POPUP"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "actions",
+ "doesNotContain",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "ExpandCollapse pattern"
+ ],
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox haspopup false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox haspopup false.</p>
+ <div aria-label="Tag" id="test" aria-haspopup="false" role="combobox" aria-expanded="true" aria-owns="owned_dialog">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_dialog" aria-activedescendant="selected_cell">
+ <div role="radiogroup">
+ <div role="radio" id="selected_radio" tabindex="-1">R1</div><div role="radio" tabindex="-1">R2</div>
+ </div>
+ <div role="button" tabindex="0">ok</div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_haspopup_grid-manual.html b/testing/web-platform/tests/wai-aria/combobox_haspopup_grid-manual.html
new file mode 100644
index 0000000000..a3929cf79e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_haspopup_grid-manual.html
@@ -0,0 +1,164 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox haspopup grid</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:grid"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:grid"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "ExpandCollapse pattern"
+ ],
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox haspopup grid"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox haspopup grid.</p>
+ <div aria-label="Tag" aria-haspopup="grid" id="test" role="combobox" aria-expanded="true" aria-owns="owned_grid">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_grid" aria-activedescendant="selected_cell">
+ </div>
+ <table id="owned_grid" role="grid">
+ <tr>
+ <th tabindex="-1" id="selected_cell" role="colomnheader">c1</th><th role="colomnheader">c2</th>
+ </tr>
+ <tr>
+ <td role="gridcell">A1</td><td role="gridcell">A2</td>
+ </tr>
+ <tr>
+ <td role="gridcell">A3</td><td role="gridcell">A4</td>
+ </tr>
+ </table>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_haspopup_listbox-manual.html b/testing/web-platform/tests/wai-aria/combobox_haspopup_listbox-manual.html
new file mode 100644
index 0000000000..e1c9084fd5
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_haspopup_listbox-manual.html
@@ -0,0 +1,154 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox haspopup listbox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "ExpandCollapse pattern"
+ ],
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox haspopup listbox"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox haspopup listbox.</p>
+ <div aria-label="Tag" aria-haspopup="listbox" id="test" role="combobox" aria-expanded="true" aria-owns="owned_listbox">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_listbox" aria-activedescendant="selected_cell">
+ <div role="option">foo</div>
+ <div role="option">baz</div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_haspopup_menu-manual.html b/testing/web-platform/tests/wai-aria/combobox_haspopup_menu-manual.html
new file mode 100644
index 0000000000..a9439ed496
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_haspopup_menu-manual.html
@@ -0,0 +1,154 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox haspopup menu</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:menu"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:menu"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "ExpandCollapse pattern"
+ ],
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox haspopup menu"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox haspopup menu.</p>
+ <div aria-label="Tag" aria-haspopup="menu" id="test" role="combobox" aria-expanded="true" aria-owns="owned_menu">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_menu" aria-activedescendant="selected_cell">
+ <div role="menuitem">foo</div>
+ <div role="menuitem">baz</div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_haspopup_tree-manual.html b/testing/web-platform/tests/wai-aria/combobox_haspopup_tree-manual.html
new file mode 100644
index 0000000000..a0602b520f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_haspopup_tree-manual.html
@@ -0,0 +1,171 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox haspopup tree</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:tree"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:tree"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "ExpandCollapse pattern"
+ ],
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox haspopup tree"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox haspopup tree.</p>
+ <div aria-label="Tag" id="test" role="combobox" aria-expanded="true" aria-owns="owned_tree" aria-haspopup="tree">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_tree" aria-activedescendant="oranges">
+ <li id="fruits" role="treeitem" tabindex="0" aria-expanded="true"><span>Fruits</span>
+ <ul id="fruit-grp" role="group">
+ <li id="oranges" role="treeitem" tabindex="-1">Oranges</li>
+ <li id="apples" role="treeitem" tabindex="-1" aria-expanded="false"><span>Apples</span>
+ <ul id="apple-grp" role="group">
+ <li id="macintosh" role="treeitem" tabindex="-1">Macintosh</li>
+ <li id="granny_smith" role="treeitem" tabindex="-1" aria-expanded="false"><span>Granny Smith</span>
+ <ul id="granny-grp" role="group">
+ <li id="Washington" role="treeitem" tabindex="-1">Washington State</li>
+ <li id="Michigan" role="treeitem" tabindex="-1">Michigan</li>
+ </ul>
+ </li>
+ <li id="fuji" role="treeitem" tabindex="-1">Fuji</li>
+ </ul>
+ </li>
+ <li id="bananas" role="treeitem" tabindex="-1">Bananas</li>
+ <li id="pears" role="treeitem" tabindex="-1">Pears</li>
+ </ul>
+ </li>
+ <li id="vegetables" role="treeitem" tabindex="-1" aria-expanded="true">Vegetables</li>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_haspopup_true-manual.html b/testing/web-platform/tests/wai-aria/combobox_haspopup_true-manual.html
new file mode 100644
index 0000000000..c7548ce5cd
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_haspopup_true-manual.html
@@ -0,0 +1,162 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox haspopup true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:true"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "ExpandCollapse pattern"
+ ],
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox haspopup true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox haspopup true.</p>
+ <div aria-label="Tag" id="test" aria-haspopup="true" role="combobox" aria-expanded="true" aria-owns="owned_dialog">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_dialog" aria-activedescendant="selected_cell">
+ <div role="radiogroup">
+ <div role="radio" id="selected_radio" tabindex="-1">R1</div><div role="radio" tabindex="-1">R2</div>
+ </div>
+ <div role="button" tabindex="0">ok</div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_haspopup_unspecified-manual.html b/testing/web-platform/tests/wai-aria/combobox_haspopup_unspecified-manual.html
new file mode 100644
index 0000000000..cd61076fb4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_haspopup_unspecified-manual.html
@@ -0,0 +1,159 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox haspopup unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "actions",
+ "contains",
+ "AXShowMenu"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "ExpandCollapse pattern"
+ ],
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox haspopup unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox haspopup unspecified.</p>
+ <div aria-label="Tag" id="test" role="combobox" aria-expanded="true" aria-owns="owned_listbox">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_listbox" aria-activedescendant="selected_option">
+ <li role="option">Zebra</li>
+ <li role="option" id="selected_option">Zoom</li>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/combobox_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..a5bcc700ec
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_orientation_horizontal-manual.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox orientation horizontal.</p>
+ <div aria-label="Tag" id="test" role="combobox" aria-orientation="horizontal" aria-expanded="true" aria-owns="owned_listbox">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_listbox" aria-activedescendant="selected_option">
+ <li role="option">Zebra</li>
+ <li role="option" id="selected_option">Zoom</li>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/combobox_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..20bd53d8d1
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_orientation_unspecified-manual.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXUnknownOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "isNot",
+ "vertical"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "isNot",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox orientation unspecified.</p>
+ <div aria-label="Tag" id="test" role="combobox" aria-expanded="true" aria-owns="owned_listbox">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_listbox" aria-activedescendant="selected_option">
+ <li role="option">Zebra</li>
+ <li role="option" id="selected_option">Zoom</li>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/combobox_orientation_vertical-manual.html
new file mode 100644
index 0000000000..189345c415
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_orientation_vertical-manual.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox orientation vertical.</p>
+ <div aria-label="Tag" id="test" role="combobox" aria-orientation="vertical" aria-expanded="true" aria-owns="owned_listbox">
+ <input type="text" aria-autocomplete="list" aria-controls="owned_listbox" aria-activedescendant="selected_option">
+ <li role="option">Zebra</li>
+ <li role="option" id="selected_option">Zoom</li>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/combobox_readonly_false-manual.html
new file mode 100644
index 0000000000..978ab11948
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_readonly_false-manual.html
@@ -0,0 +1,149 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox readonly false.</p>
+ <div id="test" role="combobox" aria-readonly="false" aria-owns="myID" aria-expanded="true" aria-haspopup="listbox"><span role="textbox">option 3</span></div>
+ <div role="listbox" id="myID">
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+ <div role="option">option 3</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/combobox_readonly_true-manual.html
new file mode 100644
index 0000000000..26a4302c24
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_readonly_true-manual.html
@@ -0,0 +1,155 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox readonly true.</p>
+ <div id="test" role="combobox" aria-readonly="true" aria-owns="myID" aria-expanded="true" aria-haspopup="listbox"><span role="textbox">option 3</span></div>
+ <div role="listbox" id="myID">
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+ <div role="option">option 3</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/combobox_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/combobox_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..4ad87b2c0a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/combobox_readonly_unspecified-manual.html
@@ -0,0 +1,149 @@
+<!doctype html>
+<html>
+ <head>
+ <title>combobox readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COMBO_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HAS_POPUP"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXComboBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "combo box"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "haspopup:listbox"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COMBOBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_HASPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Combobox"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "combobox readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for combobox readonly unspecified.</p>
+ <div id="test" role="combobox" aria-owns="myID" aria-expanded="true" aria-haspopup="listbox"><span role="textbox">option 3</span></div>
+ <div role="listbox" id="myID">
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+ <div role="option">option 3</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/dialog_modal_false-manual.html b/testing/web-platform/tests/wai-aria/dialog_modal_false-manual.html
new file mode 100644
index 0000000000..6c906d320f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/dialog_modal_false-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>dialog modal false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_MODAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXApplicationDialog"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "web dialog"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_MODAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Pane"
+ ],
+ [
+ "result",
+ "Window.isModal",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "Test2",
+ "test" : {
+ "AXAPI" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "dialog modal false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for dialog modal false.</p>
+ <h1 id="Test2">Modal Dialog Box Test</h1>
+ <div role="dialog" aria-modal="false" id="test">
+ You have an error.
+ <input type="button" value="ok"/>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/dialog_modal_true-manual.html b/testing/web-platform/tests/wai-aria/dialog_modal_true-manual.html
new file mode 100644
index 0000000000..02cbfb5fe8
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/dialog_modal_true-manual.html
@@ -0,0 +1,108 @@
+<!doctype html>
+<html>
+ <head>
+ <title>dialog modal true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_MODAL"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_MODAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Pane"
+ ],
+ [
+ "result",
+ "Window.isModal",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "Test2",
+ "test" : {
+ "AXAPI" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "dialog modal true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for dialog modal true.</p>
+ <body>
+ <h1 id="Test2">Modal Dialog Box Test</h1>
+ <div role="dialog" aria-modal="true" id="test">
+ <input type="button" value="ok"/>
+ </div>
+ </body>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/dialog_modal_unspecified-manual.html b/testing/web-platform/tests/wai-aria/dialog_modal_unspecified-manual.html
new file mode 100644
index 0000000000..edd4605dad
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/dialog_modal_unspecified-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>dialog modal unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_MODAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXApplicationDialog"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "web dialog"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_MODAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_DIALOG"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Pane"
+ ],
+ [
+ "result",
+ "Window.isModal",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "Test2",
+ "test" : {
+ "AXAPI" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "dialog modal unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for dialog modal unspecified.</p>
+ <h1 id="Test2">Modal Dialog Box Test</h1>
+ <div role="dialog" id="test">
+ You have an error.
+ <input type="button" value="ok"/>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/div_element_without_role_roledescription_valid-manual.html b/testing/web-platform/tests/wai-aria/div_element_without_role_roledescription_valid-manual.html
new file mode 100644
index 0000000000..68b6cc51c7
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/div_element_without_role_roledescription_valid-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>div element without role roledescription valid</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SECTION"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "roledescription"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Text"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Hypertext"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "group"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_SECTION"
+ ],
+ [
+ "property",
+ "localizedExtendedRole",
+ "is",
+ "null"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleText2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleHypertext2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Group"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "div element without role roledescription valid"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for div element without role roledescription valid.</p>
+ <div aria-roledescription="foo" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/errormessage_object_in_invalid_state-manual.html b/testing/web-platform/tests/wai-aria/errormessage_object_in_invalid_state-manual.html
new file mode 100644
index 0000000000..9996568262
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/errormessage_object_in_invalid_state-manual.html
@@ -0,0 +1,100 @@
+<!doctype html>
+<html>
+ <head>
+ <title>errormessage object in invalid state</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "relation",
+ "RELATION_ERROR_MESSAGE",
+ "is",
+ "[error]"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXValidationError",
+ "is",
+ "You did not enter a valid date!"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "properties",
+ "relations",
+ "contains",
+ "IA2_RELATION_ERROR_MESSAGE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControllerFor",
+ "is",
+ "error"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "error",
+ "test" : {
+ "ATK" : [
+ [
+ "relation",
+ "RELATION_ERROR_FOR",
+ "is",
+ "[test]"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "contains",
+ "IA2_RELATION_ERROR_FOR"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "errormessage object in invalid state"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for errormessage object in invalid state.</p>
+ <div role="form">
+ <label for="test">date</label><input type="text" id="test" value="foo" aria-invalid="true" aria-errormessage="error">
+ <label for="test1">surname</label><input type="text" id="test1">
+ </div>
+ <div id="error">
+ You did not enter a valid date!
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/errormessage_object_in_valid_state-manual.html b/testing/web-platform/tests/wai-aria/errormessage_object_in_valid_state-manual.html
new file mode 100644
index 0000000000..7c194c6d0a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/errormessage_object_in_valid_state-manual.html
@@ -0,0 +1,100 @@
+<!doctype html>
+<html>
+ <head>
+ <title>errormessage object in valid state</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "relations",
+ "doesNotContain",
+ "RELATION_ERROR_MESSAGE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXValidationError",
+ "is",
+ "<nil>"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "doesNotContain",
+ "IA2_RELATION_ERROR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.ControllerFor",
+ "is",
+ ""
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "error",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "relations",
+ "doesNotContain",
+ "RELATION_ERROR_FOR"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "relations",
+ "doesNotContain",
+ "IA2_RELATION_ERROR_FOR"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "errormessage object in valid state"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for errormessage object in valid state.</p>
+ <div role="form">
+ <label for="test">date</label><input type="text" id="test" value="April 12" aria-invalid="false" aria-errormessage="error">
+ <label for="test1">surname</label><input type="text" id="test1">
+ </div>
+ <div id="error">
+ You did not enter a valid date!
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/feed-manual.html b/testing/web-platform/tests/wai-aria/feed-manual.html
new file mode 100644
index 0000000000..91fc6778db
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/feed-manual.html
@@ -0,0 +1,105 @@
+<!doctype html>
+<html>
+ <head>
+ <title>feed</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:feed"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXApplicationGroup"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "feed"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:feed"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Group"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "feed"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "feed"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for feed.</p>
+ <section role="feed" id="test">
+ <article>This is article 1</article>
+ <div role="article">This is article 2</div>
+ </section>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/figure-manual.html b/testing/web-platform/tests/wai-aria/figure-manual.html
new file mode 100644
index 0000000000..d60973527a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/figure-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>figure</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:figure"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "figure"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:figure"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Group"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "figure"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "figure"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for figure.</p>
+ <div role="figure" id="test">
+ <img src="foo.jpg" aria-label="fake image"/>
+ <img src="baz.jpg" aria-label="really fake image">
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html b/testing/web-platform/tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html
new file mode 100644
index 0000000000..d373a3023e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_aria-readonly_false_automatically_propagated-manual.html
@@ -0,0 +1,249 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid aria-readonly false automatically propagated</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "TableCell"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "selectionitem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "test1",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ },
+ {
+ "element" : "test2",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 3",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid aria-readonly false automatically propagated"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid aria-readonly false automatically propagated.</p>
+ <div role="grid" aria-readonly="false">
+ <div role="row">
+ <div id="test1" role="columnheader">c1</div>
+ <div role="columnheader">c2</div>
+ </div>
+ <div role="row">
+ <div id="test2" role="rowheader">rh1</div>
+ <div id="test" role="gridcell">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html b/testing/web-platform/tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html
new file mode 100644
index 0000000000..7b6a22e292
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_aria-readonly_true_automatically_propagated-manual.html
@@ -0,0 +1,249 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid aria-readonly true automatically propagated</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "TableCell"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "SelectionItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "test1",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ },
+ {
+ "element" : "test2",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 3",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid aria-readonly true automatically propagated"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid aria-readonly true automatically propagated.</p>
+ <div role="grid" aria-readonly="true">
+ <div role="row">
+ <div id="test1" role="columnheader">c1</div>
+ <div role="columnheader">c2</div>
+ </div>
+ <div role="row">
+ <div id="test2" role="rowheader">rh1</div>
+ <div id="test" role="gridcell">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_busy_false-manual.html b/testing/web-platform/tests/wai-aria/grid_busy_false-manual.html
new file mode 100644
index 0000000000..48edba5bf7
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_busy_false-manual.html
@@ -0,0 +1,163 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid busy false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Table"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "result",
+ "atk_selection_clear_selection()",
+ "is",
+ "false"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_BUSY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "table"
+ ],
+ [
+ "property",
+ "AXElementBusy",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_BUSY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "result",
+ "AriaProperties.busy",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid busy false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid busy false.</p>
+ <div role="grid" aria-busy="false" id="test">
+ <div role="row">
+ <div role="columnheader">shoes</div>
+ <div role="columnheader">shirts</div>
+ </div>
+ <div role="row">
+ <div role="gridcell">loafers</div>
+ <div role="gridcell">polo</div>
+ </div>
+ <div role="row">
+ <div role="gridcell">laced</div>
+ <div role="gridcell">rugby</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_busy_true-manual.html b/testing/web-platform/tests/wai-aria/grid_busy_true-manual.html
new file mode 100644
index 0000000000..ddcdf0198f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_busy_true-manual.html
@@ -0,0 +1,157 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid busy true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Table"
+ ],
+ [
+ "result",
+ "atk_selection_clear_selection()",
+ "is",
+ "false"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_BUSY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "table"
+ ],
+ [
+ "property",
+ "AXElementBusy",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_BUSY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "result",
+ "AriaProperties.busy",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid busy true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid busy true.</p>
+ <div role="grid" aria-busy="true" id="test">
+ <div role="row">
+ <div role="columnheader">shoes</div>
+ <div role="columnheader">shirts</div>
+ </div>
+ <div role="row">
+ <div role="gridcell">loafers</div>
+ <div role="gridcell">polo</div>
+ </div>
+ <div role="row">
+ <div role="gridcell">laced</div>
+ <div role="gridcell">rugby</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_busy_value_changes-manual.html b/testing/web-platform/tests/wai-aria/grid_busy_value_changes-manual.html
new file mode 100644
index 0000000000..4891198882
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_busy_value_changes-manual.html
@@ -0,0 +1,200 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid busy value changes</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "attribute" : "aria-busy",
+ "element" : "test",
+ "title" : "step 1",
+ "type" : "attribute",
+ "value" : "\"true\""
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:busy"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "1"
+ ],
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Table"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "result",
+ "atk_selection_clear_selection()",
+ "is",
+ "false"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_BUSY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "event",
+ "type",
+ "is",
+ "AXElementBusyChanged"
+ ],
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "table"
+ ],
+ [
+ "property",
+ "AXElementBusy",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_STATECHANGE"
+ ],
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_BUSY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "event",
+ "type",
+ "is",
+ "PropertyChangedEvent"
+ ],
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "result",
+ "AriaProperties.busy",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid busy value changes"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid busy value changes.</p>
+ <div role="grid" aria-busy="false" id="test">
+ <div role="row">
+ <div role="columnheader">shoes</div>
+ <div role="columnheader">shirts</div>
+ </div>
+ <div role="row">
+ <div role="gridcell">loafers</div>
+ <div role="gridcell">polo</div>
+ </div>
+ <div role="row">
+ <div role="gridcell">laced</div>
+ <div role="gridcell">rugby</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_colcount_8-manual.html b/testing/web-platform/tests/wai-aria/grid_colcount_8-manual.html
new file mode 100644
index 0000000000..0f03b12605
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_colcount_8-manual.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid colcount 8</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:8"
+ ],
+ [
+ "result",
+ "atk_table_get_n_columns()",
+ "is",
+ "8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXARIAColumnCount",
+ "is",
+ "8"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:8"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "DataGrid.ColumnCount",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid colcount 8"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid colcount 8.</p>
+ <div role="grid" id="test" aria-colcount="8">
+ <div role="row">
+ <div role="gridcell" aria-colindex="4">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_false-manual.html
new file mode 100644
index 0000000000..bb8dd34a92
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_false-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid columnheader readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid columnheader readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid columnheader readonly false.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="columnheader" aria-readonly="false">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_true-manual.html
new file mode 100644
index 0000000000..a81e4cbdce
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_true-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid columnheader readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid columnheader readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid columnheader readonly true.</p>
+ <div role="grid" >
+ <div role="row">
+ <div id="test" role="columnheader" aria-readonly="true">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..d45d3b9ca7
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_columnheader_readonly_unspecified-manual.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid columnheader readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid columnheader readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid columnheader readonly unspecified.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="columnheader">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_columnheader_required_false-manual.html b/testing/web-platform/tests/wai-aria/grid_columnheader_required_false-manual.html
new file mode 100644
index 0000000000..b8f7ae332c
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_columnheader_required_false-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid columnheader required false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid columnheader required false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid columnheader required false.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="columnheader" aria-required="false">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_columnheader_required_true-manual.html b/testing/web-platform/tests/wai-aria/grid_columnheader_required_true-manual.html
new file mode 100644
index 0000000000..76155ab905
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_columnheader_required_true-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid columnheader required true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid columnheader required true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid columnheader required true.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="columnheader" aria-required="true">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_columnheader_required_unspecified-manual.html b/testing/web-platform/tests/wai-aria/grid_columnheader_required_unspecified-manual.html
new file mode 100644
index 0000000000..491cbed6f2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_columnheader_required_unspecified-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid columnheader required unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_COLUMN_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_COLUMNHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid columnheader required unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid columnheader required unspecified.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="columnheader">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_rowcount_3-manual.html b/testing/web-platform/tests/wai-aria/grid_rowcount_3-manual.html
new file mode 100644
index 0000000000..3079b59b4d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_rowcount_3-manual.html
@@ -0,0 +1,132 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid rowcount 3</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowcount:3"
+ ],
+ [
+ "result",
+ "atk_table_get_n_rows()",
+ "is",
+ "3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXARIARowCount",
+ "is",
+ "3"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:grid"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowcount:3"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "DataGrid.RowCount",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid rowcount 3"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid rowcount 3.</p>
+ <div role='grid' id='test' aria-rowcount='3' aria-colcount='2'>
+ <div role='row'>
+ <span role='gridcell'>
+ <button>hello</button>
+ </span>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_false-manual.html
new file mode 100644
index 0000000000..883918fd04
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_false-manual.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid rowheader readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid rowheader readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid rowheader readonly false.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="rowheader" aria-readonly="false">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_true-manual.html
new file mode 100644
index 0000000000..5d53c3624c
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_true-manual.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid rowheader readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid rowheader readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid rowheader readonly true.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="rowheader" aria-readonly="true">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..f9321cac10
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_rowheader_readonly_unspecified-manual.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid rowheader readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid rowheader readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid rowheader readonly unspecified.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="rowheader">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_rowheader_required_false-manual.html b/testing/web-platform/tests/wai-aria/grid_rowheader_required_false-manual.html
new file mode 100644
index 0000000000..4fafba50a9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_rowheader_required_false-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid rowheader required false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid rowheader required false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid rowheader required false.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="rowheader" aria-required="false">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_rowheader_required_true-manual.html b/testing/web-platform/tests/wai-aria/grid_rowheader_required_true-manual.html
new file mode 100644
index 0000000000..0f14d2dea8
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_rowheader_required_true-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid rowheader required true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid rowheader required true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid rowheader required true.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="rowheader" aria-required="true">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/grid_rowheader_required_unspecified-manual.html b/testing/web-platform/tests/wai-aria/grid_rowheader_required_unspecified-manual.html
new file mode 100644
index 0000000000..208f0c5e56
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/grid_rowheader_required_unspecified-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>grid rowheader required unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "grid rowheader required unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for grid rowheader required unspecified.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="rowheader">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html b/testing/web-platform/tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html
new file mode 100644
index 0000000000..c151087767
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/gridcell_aria-colspan_2_on_div-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>gridcell aria-colspan 2 on div</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "DataItem.ColumnSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "gridcell aria-colspan 2 on div"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for gridcell aria-colspan 2 on div.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="gridcell" aria-colspan="2">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html b/testing/web-platform/tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html
new file mode 100644
index 0000000000..318709b360
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/gridcell_aria-rowspan_2_on_div-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>gridcell aria-rowspan 2 on div</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "row_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "DataItem.RowSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "gridcell aria-rowspan 2 on div"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for gridcell aria-rowspan 2 on div.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="gridcell" aria-rowspan="2">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/gridcell_colindex_4-manual.html b/testing/web-platform/tests/wai-aria/gridcell_colindex_4-manual.html
new file mode 100644
index 0000000000..6ef4fb3a16
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/gridcell_colindex_4-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>gridcell colindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "column=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIAColumnIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "DataItem.Column",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "gridcell colindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for gridcell colindex 4.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="gridcell" aria-colindex="4" aria-colcount="8">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/gridcell_rowindex_4-manual.html b/testing/web-platform/tests/wai-aria/gridcell_rowindex_4-manual.html
new file mode 100644
index 0000000000..8b9daaa703
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/gridcell_rowindex_4-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>gridcell rowindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "row=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIARowIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "DataItem.Row",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "gridcell rowindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for gridcell rowindex 4.</p>
+ <div role="grid">
+ <div role="row">
+ <div id="test" role="gridcell" aria-rowindex="4">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html b/testing/web-platform/tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html
new file mode 100644
index 0000000000..ef947859db
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/group_hidden_undefined_element_not_rendered-manual.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<html>
+ <head>
+ <title>group hidden undefined element not rendered</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "group hidden undefined element not rendered"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for group hidden undefined element not rendered.</p>
+ <div role="group" id="test" style="display:none">
+ Some invisible group content
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/group_hidden_undefined_element_rendered-manual.html b/testing/web-platform/tests/wai-aria/group_hidden_undefined_element_rendered-manual.html
new file mode 100644
index 0000000000..92c067c216
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/group_hidden_undefined_element_rendered-manual.html
@@ -0,0 +1,116 @@
+<!doctype html>
+<html>
+ <head>
+ <title>group hidden undefined element rendered</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "hidden"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXApplicationGroup"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "group"
+ ],
+ [
+ "property",
+ "hidden",
+ "is",
+ "<nil>"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "hidden:false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Group"
+ ],
+ [
+ "property",
+ "AriaProperties.hidden",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "group hidden undefined element rendered"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for group hidden undefined element rendered.</p>
+ <div role="group" id="test">
+ Some group content
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/heading_level_unspecified-manual.html b/testing/web-platform/tests/wai-aria/heading_level_unspecified-manual.html
new file mode 100644
index 0000000000..819bc7b60c
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/heading_level_unspecified-manual.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<html>
+ <head>
+ <title>heading level unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_HEADING"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "level:2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXHeading"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "heading"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_HEADING"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "level:2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:heading"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Text"
+ ],
+ [
+ "property",
+ "StyleId_Heading",
+ "is",
+ "2"
+ ],
+ [
+ "property",
+ "AriaProperties.level",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "heading level unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for heading level unspecified.</p>
+ <div role="heading" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/idlharness.window.js b/testing/web-platform/tests/wai-aria/idlharness.window.js
new file mode 100644
index 0000000000..590bf9e2e9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/idlharness.window.js
@@ -0,0 +1,15 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+idl_test(
+ ['wai-aria'],
+ ['dom'],
+ idl_array => {
+ idl_array.add_objects({
+ Element: ['element'],
+ });
+ self.element = document.createElementNS(null, "test");
+ }
+);
diff --git a/testing/web-platform/tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html b/testing/web-platform/tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html
new file mode 100644
index 0000000000..ce4074a4f2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/keyshortcuts_multiple_shortcuts-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>keyshortcuts multiple shortcuts</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "keyshortcuts:Shift+Space Alt+Space"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "accKeyboardShortcut",
+ "is",
+ "Shift+Space Alt+Space"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "AcceleratorKey",
+ "is",
+ "Shift+Space Alt+Space"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "keyshortcuts multiple shortcuts"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for keyshortcuts multiple shortcuts.</p>
+ <body>
+ <div id="test" tabindex="0" role="button" aria-keyshortcuts="Shift+Space Alt+Space">Submit</h1>
+ </body>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/keyshortcuts_one_shortcut-manual.html b/testing/web-platform/tests/wai-aria/keyshortcuts_one_shortcut-manual.html
new file mode 100644
index 0000000000..d0238dbf20
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/keyshortcuts_one_shortcut-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>keyshortcuts one shortcut</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PUSH_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "keyshortcuts:Shift+Space"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PUSHBUTTON"
+ ],
+ [
+ "property",
+ "accKeyboardShortcut",
+ "is",
+ "Shift+Space"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "AcceleratorKey",
+ "is",
+ "Shift+Space"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "keyshortcuts one shortcut"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for keyshortcuts one shortcut.</p>
+ <body>
+ <div id="test" tabindex="0" role="button" aria-keyshortcuts="Shift+Space">Submit</h1>
+ </body>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listbox_busy_false-manual.html b/testing/web-platform/tests/wai-aria/listbox_busy_false-manual.html
new file mode 100644
index 0000000000..9f6b8b36a8
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listbox_busy_false-manual.html
@@ -0,0 +1,121 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listbox busy false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_BOX"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "result",
+ "atk_selection_clear_selection()",
+ "is",
+ "false"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_BUSY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXList"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "list"
+ ],
+ [
+ "property",
+ "AXElementBusy",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTBOX"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_BUSY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "result",
+ "AriaProperties.busy",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listbox busy false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listbox busy false.</p>
+ <ul role="listbox" aria-busy="false" id="test">
+ <li role="option">option 1</li>
+ <li role="option">option 2</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listbox_busy_true-manual.html b/testing/web-platform/tests/wai-aria/listbox_busy_true-manual.html
new file mode 100644
index 0000000000..c8388f7add
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listbox_busy_true-manual.html
@@ -0,0 +1,109 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listbox busy true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_BOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_BUSY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXList"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "list"
+ ],
+ [
+ "property",
+ "AXElementBusy",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTBOX"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_BUSY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "result",
+ "AriaProperties.busy",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listbox busy true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listbox busy true.</p>
+ <ul role="listbox" aria-busy="true" id="test">
+ <li role="option">option 1</li>
+ <li role="option">option 2</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listbox_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/listbox_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..c718a54eaf
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listbox_orientation_horizontal-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listbox orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_BOX"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXList"
+ ],
+ [
+ "property",
+ "AXsubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "list"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listbox orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listbox orientation horizontal.</p>
+ <div id="test" aria-orientation="horizontal" tabindex="0" role="listbox" >
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listbox_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/listbox_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..7dd2762d6d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listbox_orientation_unspecified-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listbox orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_BOX"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXList"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "list"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listbox orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listbox orientation unspecified.</p>
+ <div id="test" tabindex="0" role="listbox" >
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listbox_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/listbox_orientation_vertical-manual.html
new file mode 100644
index 0000000000..8bcca037d3
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listbox_orientation_vertical-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listbox orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_BOX"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXList"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "list"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listbox orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listbox orientation vertical.</p>
+ <div id="test" aria-orientation="vertical" tabindex="0" role="listbox" >
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listbox_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/listbox_readonly_false-manual.html
new file mode 100644
index 0000000000..b3bde923a4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listbox_readonly_false-manual.html
@@ -0,0 +1,124 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listbox readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_BOX"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXList"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "list"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listbox readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listbox readonly false.</p>
+ <div id="test" aria-readonly="false" role="listbox">
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+ <div role="option">option 3</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listbox_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/listbox_readonly_true-manual.html
new file mode 100644
index 0000000000..30213919e4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listbox_readonly_true-manual.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listbox readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_BOX"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXList"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "list"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listbox readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listbox readonly true.</p>
+ <div id="test" aria-readonly="true" role="listbox">
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+ <div role="option">option 3</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listbox_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/listbox_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..9283ad2404
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listbox_readonly_unspecified-manual.html
@@ -0,0 +1,124 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listbox readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_BOX"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXList"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "list"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LIST"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listbox readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listbox readonly unspecified.</p>
+ <div id="test" role="listbox">
+ <div role="option">option 1</div>
+ <div role="option">option 2</div>
+ <div role="option">option 3</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/listitem_setsize_-1-manual.html b/testing/web-platform/tests/wai-aria/listitem_setsize_-1-manual.html
new file mode 100644
index 0000000000..7537a4bcd7
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/listitem_setsize_-1-manual.html
@@ -0,0 +1,134 @@
+<!doctype html>
+<html>
+ <head>
+ <title>listitem setsize -1</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_EDITABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:-1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "group"
+ ],
+ [
+ "property",
+ "AXARIASetSize",
+ "is",
+ "-1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:-1"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:-1"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ListItem"
+ ],
+ [
+ "property",
+ "AriaProperties.setsize",
+ "is",
+ "-1"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "SelectionItem"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "listitem setsize -1"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for listitem setsize -1.</p>
+ <div role="list">
+ <div id="test" role="listitem" aria-setsize="-1">test cell</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menu_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/menu_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..184c42052e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menu_orientation_horizontal-manual.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menu orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenu"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Menu"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menu orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menu orientation horizontal.</p>
+ <ul id="test" role="menu" aria-orientation="horizontal">
+ <li role="menuitem">File</file>
+ <li role="menuitem">Edit</file>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menu_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/menu_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..07e8e691b9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menu_orientation_unspecified-manual.html
@@ -0,0 +1,122 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menu orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenu"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Menu"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menu orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menu orientation unspecified.</p>
+ <div id="test" tabindex="0" role="menu" >
+ <div role="menuitem">option 1</div>
+ <div role="menuitem">option 2</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menu_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/menu_orientation_vertical-manual.html
new file mode 100644
index 0000000000..10a65e997d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menu_orientation_vertical-manual.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menu orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenu"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUPOPUP"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUPOPUP"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Menu"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menu orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menu orientation vertical.</p>
+ <ul id="test" role="menu" aria-orientation="vertical">
+ <li role="menuitem">File</file>
+ <li role="menuitem">Edit</file>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menubar_busy_false-manual.html b/testing/web-platform/tests/wai-aria/menubar_busy_false-manual.html
new file mode 100644
index 0000000000..8224d79b87
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menubar_busy_false-manual.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menubar busy false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU_BAR"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:menubar"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_BUSY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuBar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu bar"
+ ],
+ [
+ "property",
+ "AXElementBusy",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:menubar"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUBAR"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_BUSY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuBar"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "property",
+ "AriaProperties.busy",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menubar busy false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menubar busy false.</p>
+ <div role="menubar" aria-busy="false" id="test">
+ <div role="menuitem">File</div>
+ <div role="menuitem">Edit</div>
+ <div role="menuitem">View</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menubar_busy_true-manual.html b/testing/web-platform/tests/wai-aria/menubar_busy_true-manual.html
new file mode 100644
index 0000000000..b1695dcef4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menubar_busy_true-manual.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menubar busy true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU_BAR"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:menubar"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_BUSY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuBar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu bar"
+ ],
+ [
+ "property",
+ "AXElementBusy",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:menubar"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUBAR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_BUSY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuBar"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "result",
+ "AriaProperties.busy",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menubar busy true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menubar busy true.</p>
+ <div role="menubar" aria-busy="true" id="test">
+ <div role="menuitem">File</div>
+ <div role="menuitem">Edit</div>
+ <div role="menuitem">View</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menubar_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/menubar_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..e47a68e81a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menubar_orientation_horizontal-manual.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menubar orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU_BAR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuBar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu bar"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUBAR"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuBar"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menubar orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menubar orientation horizontal.</p>
+ <ul id="test" role="menubar" aria-orientation="horizontal">
+ <li role="menuitem">File</file>
+ <li role="menuitem">Edit</file>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menubar_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/menubar_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..0e945ae26f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menubar_orientation_unspecified-manual.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menubar orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU_BAR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuBar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu bar"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUBAR"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuBar"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menubar orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menubar orientation unspecified.</p>
+ <ul id="test" role="menubar">
+ <li role="menuitem">File</file>
+ <li role="menuitem">Edit</file>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menubar_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/menubar_orientation_vertical-manual.html
new file mode 100644
index 0000000000..c0830abc7f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menubar_orientation_vertical-manual.html
@@ -0,0 +1,111 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menubar orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU_BAR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuBar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu bar"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuBar"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menubar orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menubar orientation vertical.</p>
+ <ul id="test" role="menubar" aria-orientation="vertical">
+ <li role="menuitem">File</file>
+ <li role="menuitem">Edit</file>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitem_expanded_false-manual.html b/testing/web-platform/tests/wai-aria/menuitem_expanded_false-manual.html
new file mode 100644
index 0000000000..7e5ca5485b
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitem_expanded_false-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-expanded=false on a menuitem</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_EXPANDED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "NO"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_COLLAPSED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Collapsed"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-expanded=false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-expanded=false on a menuitem.</p>
+ <div role='menu'>
+ <div role='menuitem' id='test' aria-expanded='false'>item 1</div>
+ <div role='menuitem'>item 2</div>
+ </div>
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitem_expanded_true-manual.html b/testing/web-platform/tests/wai-aria/menuitem_expanded_true-manual.html
new file mode 100644
index 0000000000..a9d9b5df35
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitem_expanded_true-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-expanded=true on a menuitem</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "YES"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-expanded=true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-expanded=true on a menuitem.</p>
+ <div role='menu'>
+ <div role='menuitem' id='test' aria-expanded='true'>item 1</div>
+ <div role='menu'>
+ <div role='menuitem'>subitem 1</div>
+ <div role='menuitem'>subitem 2</div>
+ </div>
+ <div role='menuitem'>item 2</div>
+ </div>
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitem_posinset_and_setsize-manual.html b/testing/web-platform/tests/wai-aria/menuitem_posinset_and_setsize-manual.html
new file mode 100644
index 0000000000..ac0ec8871d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitem_posinset_and_setsize-manual.html
@@ -0,0 +1,148 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitem posinset and setsize</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_MENU_ITEM"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "property",
+ "AXARIAPosInSet",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AXARIASetSize",
+ "is",
+ "8"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "positionInGroup:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_MENUITEM"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "AriaProperties.posinset",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AriaProperties.setsize",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitem posinset and setsize"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitem posinset and setsize.</p>
+ <ul role='menu'>Menu
+ <li role='menuitem'> option 1</li>
+ <li role='menuitem' id='test' aria-posinset='4' aria-setsize='8'> option 2</li>
+ <li role='menuitem'> option 3</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemcheckbox_expanded_false-manual.html b/testing/web-platform/tests/wai-aria/menuitemcheckbox_expanded_false-manual.html
new file mode 100644
index 0000000000..e05ea1af71
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemcheckbox_expanded_false-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-expanded=false on a menuitemcheckbox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_EXPANDED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "NO"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_COLLAPSED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Collapsed"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-expanded=false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-expanded=false on a menuitemcheckbox.</p>
+ <div role='menu'>
+ <div role='menuitemcheckbox' id='test' aria-expanded='false'>item 1</div>
+ <div role='menuitem'>item 2</div>
+ </div>
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemcheckbox_expanded_true-manual.html b/testing/web-platform/tests/wai-aria/menuitemcheckbox_expanded_true-manual.html
new file mode 100644
index 0000000000..b2ac5db68f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemcheckbox_expanded_true-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-expanded=true on a menuitemcheckbox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "YES"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-expanded=true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-expanded=true on a menuitemcheckbox.</p>
+ <div role='menu'>
+ <div role='menuitemcheckbox' id='test' aria-expanded='true'>item 1</div>
+ <div role='menu'>
+ <div role='menuitem'>subitem 1</div>
+ <div role='menuitem'>subitem 2</div>
+ </div>
+ <div role='menuitem'>item 2</div>
+ </div>
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html b/testing/web-platform/tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html
new file mode 100644
index 0000000000..cf867c1cf9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemcheckbox_posinset_and_setsize-manual.html
@@ -0,0 +1,185 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitemcheckbox posinset and setsize</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_CHECK_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKED"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "1"
+ ],
+ [
+ "property",
+ "AXARIAPosInSet",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AXARIASetSize",
+ "is",
+ "8"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_CHECK_MENU_ITEM"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "positionInGroup:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "isAny",
+ "[ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_CHECKBUTTON]"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "Toggle.ToggleState",
+ "is",
+ "On"
+ ],
+ [
+ "property",
+ "AriaProperties.posinset",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AriaProperties.setsize",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitemcheckbox posinset and setsize"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitemcheckbox posinset and setsize.</p>
+ <ul role='menu'>Menu
+ <li role='menuitem'> option 1</li>
+ <li role='menuitemcheckbox' id='test' aria-posinset='4' aria-setsize='8'
+ class='ckbox' aria-checked='true'>panda doodles</li>
+ <li role='menuitem'> option 3</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_false-manual.html
new file mode 100644
index 0000000000..59f12ed0fc
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_false-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitemcheckbox readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_CHECK_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_CHECK_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "isAny",
+ "[ROLE_SYSTEM_CHECKBUTTON, ROLE_SYSTEM_MENUITEM]"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "Toggle"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitemcheckbox readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitemcheckbox readonly false.</p>
+ <div role="menu">
+ <div role="menuitemcheckbox" aria-readonly="false" id="test">option 1</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_true-manual.html
new file mode 100644
index 0000000000..faa9703fda
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_true-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitemcheckbox readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_CHECK_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_CHECK_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "isAny",
+ "[ROLE_SYSTEM_CHECKBUTTON, ROLE_SYSTEM_MENUITEM]"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "Toggle"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitemcheckbox readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitemcheckbox readonly true.</p>
+ <div role="menu">
+ <div role="menuitemcheckbox" aria-readonly="true" id="test">option 1</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..d9b5dc2980
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemcheckbox_readonly_unspecified-manual.html
@@ -0,0 +1,122 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitemcheckbox readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_CHECK_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_CHECK_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "isAny",
+ "[ROLE_SYSTEM_CHECKBUTTON, ROLE_SYSTEM_MENUITEM]"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "Toggle"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitemcheckbox readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitemcheckbox readonly unspecified.</p>
+ <div role="menu">
+ <div role="menuitemcheckbox" id="test">option 1</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemradio_expanded_false-manual.html b/testing/web-platform/tests/wai-aria/menuitemradio_expanded_false-manual.html
new file mode 100644
index 0000000000..52c599d90e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemradio_expanded_false-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-expanded=false on a menuitemradio</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_EXPANDED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "NO"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_COLLAPSED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Collapsed"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-expanded=false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-expanded=false on a menuitemradio.</p>
+ <div role='menu'>
+ <div role='menuitemradio' id='test' aria-expanded='false'>item 1</div>
+ <div role='menuitem'>item 2</div>
+ </div>
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemradio_expanded_true-manual.html b/testing/web-platform/tests/wai-aria/menuitemradio_expanded_true-manual.html
new file mode 100644
index 0000000000..601879885f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemradio_expanded_true-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>aria-expanded=true on a menuitemradio</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_EXPANDED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXExpanded",
+ "is",
+ "YES"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_EXPANDED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ExpandCollapse.ExpandCollapseState",
+ "is",
+ "Expanded"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "aria-expanded=true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for aria-expanded=true on a menuitemradio.</p>
+ <div role='menu'>
+ <div role='menuitemradio' id='test' aria-expanded='true'>item 1</div>
+ <div role='menu'>
+ <div role='menuitem'>subitem 1</div>
+ <div role='menuitem'>subitem 2</div>
+ </div>
+ <div role='menuitem'>item 2</div>
+ </div>
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html b/testing/web-platform/tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html
new file mode 100644
index 0000000000..d512e95ddd
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemradio_posinset_and_setsize-manual.html
@@ -0,0 +1,196 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitemradio posinset and setsize</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_RADIO_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXARIAPosInSet",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AXARIASetSize",
+ "is",
+ "8"
+ ],
+ [
+ "property",
+ "AXMenuItemMarkChar",
+ "is",
+ "<nil>"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_RADIO_MENU_ITEM"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:4"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:8"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "positionInGroup:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "isAny",
+ "[ROLE_SYSTEM_RADIOBUTTON, ROLE_SYSTEM_MENUITEM]"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "Toggle"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "SelectionItem"
+ ],
+ [
+ "property",
+ "Toggle.ToggleState",
+ "is",
+ "Off"
+ ],
+ [
+ "property",
+ "AriaProperties.posinset",
+ "is",
+ "4"
+ ],
+ [
+ "property",
+ "AriaProperties.setsize",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitemradio posinset and setsize"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitemradio posinset and setsize.</p>
+ <ul role='menu'>Menu
+ <li role='menuitemradio'> option 1</li>
+ <li role='menuitemradio' id='test' aria-posinset='4' aria-setsize='8'>panda doodles</li>
+ <li role='menuitemradio'> option 3</li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemradio_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/menuitemradio_readonly_false-manual.html
new file mode 100644
index 0000000000..164bde7ae1
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemradio_readonly_false-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitemradio readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_RADIO_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_RADIO_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "isAny",
+ "[ROLE_SYSTEM_RADIOBUTTON, ROLE_SYSTEM_MENUITEM]"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "Toggle"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "SelectionItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitemradio readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitemradio readonly false.</p>
+ <div role="menu">
+ <div role="menuitemradio" aria-readonly="false" id="test">option 1</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemradio_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/menuitemradio_readonly_true-manual.html
new file mode 100644
index 0000000000..70690f372c
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemradio_readonly_true-manual.html
@@ -0,0 +1,140 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitemradio readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_RADIO_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_RADIO_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "isAny",
+ "[ROLE_SYSTEM_RADIOBUTTON, ROLE_SYSTEM_MENUITEM]"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "Toggle"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "SelectionItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitemradio readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitemradio readonly true.</p>
+ <div role="menu">
+ <div role="menuitemradio" aria-readonly="true" id="test">option 1</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/menuitemradio_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/menuitemradio_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..a4257c439f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/menuitemradio_readonly_unspecified-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>menuitemradio readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_RADIO_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXMenuItem"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "menu item"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_RADIO_MENU_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "isAny",
+ "[ROLE_SYSTEM_RADIOBUTTON, ROLE_SYSTEM_MENUITEM]"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "MenuItem"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "Toggle"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "SelectionItem"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "menuitemradio readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for menuitemradio readonly unspecified.</p>
+ <div role="menu">
+ <div role="menuitemradio" id="test">option 1</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/none-manual.html b/testing/web-platform/tests/wai-aria/none-manual.html
new file mode 100644
index 0000000000..ded346faa6
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/none-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>none</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "accessible",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "none"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for none.</p>
+ <img id='test' role='none' src="foo.jpg" alt="footest"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/option_selected_false-manual.html b/testing/web-platform/tests/wai-aria/option_selected_false-manual.html
new file mode 100644
index 0000000000..02b1ec8293
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/option_selected_false-manual.html
@@ -0,0 +1,131 @@
+<!doctype html>
+<html>
+ <head>
+ <title>option selected false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXStaticText"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "text"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ListItem"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Invoke"
+ ],
+ [
+ "property",
+ "ControlPatterns",
+ "doesNotContain",
+ "SelectionItem"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "option selected false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for option selected false.</p>
+ <div role="listbox">
+ <div role="option" aria-selected="false" id="test">
+ Fish
+ </div>
+ <div role="option">
+ beef
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/option_selected_true-manual.html b/testing/web-platform/tests/wai-aria/option_selected_true-manual.html
new file mode 100644
index 0000000000..8bb7dd7ef5
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/option_selected_true-manual.html
@@ -0,0 +1,131 @@
+<!doctype html>
+<html>
+ <head>
+ <title>option selected true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXStaticText"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "text"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ListItem"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Invoke"
+ ],
+ [
+ "property",
+ "SelectionItem.IsSelected",
+ "Is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "option selected true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for option selected true.</p>
+ <div role="listbox">
+ <div role="option" aria-selected="true" id="test">
+ Fish
+ </div>
+ <div role="option">
+ beef
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/option_selected_undefined-manual.html b/testing/web-platform/tests/wai-aria/option_selected_undefined-manual.html
new file mode 100644
index 0000000000..5930de9a48
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/option_selected_undefined-manual.html
@@ -0,0 +1,131 @@
+<!doctype html>
+<html>
+ <head>
+ <title>option selected undefined</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LIST_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXStaticText"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "text"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_LISTITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ListItem"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Invoke"
+ ],
+ [
+ "property",
+ "ControlPatterns",
+ "doesNotContain",
+ "SelectionItem"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "option selected undefined"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for option selected undefined.</p>
+ <div role="listbox">
+ <div role="option" id="test">
+ Fish
+ </div>
+ <div role="option">
+ beef
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/option_selected_value_changes-manual.html b/testing/web-platform/tests/wai-aria/option_selected_value_changes-manual.html
new file mode 100644
index 0000000000..2c02a8707d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/option_selected_value_changes-manual.html
@@ -0,0 +1,146 @@
+<!doctype html>
+<html>
+ <head>
+ <title>option selected value changes</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "attribute" : "aria-activedescendant",
+ "element" : "test1",
+ "title" : "step 1",
+ "type" : "attribute",
+ "value" : "\"test\" "
+ },
+ {
+ "attribute" : "aria-selected",
+ "element" : "test",
+ "title" : "step 2",
+ "type" : "attribute",
+ "value" : "\"true\""
+ },
+ {
+ "attribute" : "aria-selected",
+ "element" : "test2",
+ "title" : "step 3",
+ "type" : "attribute",
+ "value" : "\"false\""
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:selected"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "1"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_SELECTION"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_STATECHANGE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "event",
+ "type",
+ "is",
+ "UIA_SelectionItem_ElementSelectedEventId"
+ ]
+ ]
+ },
+ "title" : "step 4",
+ "type" : "test"
+ },
+ {
+ "element" : "test1",
+ "test" : {
+ "ATK" : [
+ [
+ "event",
+ "type",
+ "is",
+ "object:selection-changed"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "event",
+ "type",
+ "is",
+ "AXSelectedChildrenChanged"
+ ]
+ ]
+ },
+ "title" : "step 5",
+ "type" : "test"
+ },
+ {
+ "element" : "test2",
+ "test" : {
+ "ATK" : [
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:selected"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "0"
+ ]
+ ]
+ },
+ "title" : "step 6",
+ "type" : "test"
+ }
+ ],
+ "title" : "option selected value changes"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for option selected value changes.</p>
+ <div id="test1" aria-activedescendant="test2" role="listbox">
+ <div role="option" aria-selected="false" id="test">
+ Fish
+ </div>
+ <div id="test2" aria-selected="true" role="option">
+ beef
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/radiogroup_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/radiogroup_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..4943335cf2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/radiogroup_orientation_horizontal-manual.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<html>
+ <head>
+ <title>radiogroup orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRadioGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "radio group"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "radiogroup orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for radiogroup orientation horizontal.</p>
+ <ul id="test" role="radiogroup" aria-orientation="horizontal">
+ <li role="radio">File</file>
+ <li role="radio">Edit</file>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/radiogroup_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/radiogroup_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..40ceab71ca
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/radiogroup_orientation_unspecified-manual.html
@@ -0,0 +1,135 @@
+<!doctype html>
+<html>
+ <head>
+ <title>radiogroup orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRadioGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "radio group"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXUnknownOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "isNot",
+ "vertical"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "isNot",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "radiogroup orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for radiogroup orientation unspecified.</p>
+ <ul id="test" role="radiogroup">
+ <li role="radio">File</file>
+ <li role="radio">Edit</file>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/radiogroup_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/radiogroup_orientation_vertical-manual.html
new file mode 100644
index 0000000000..def4543652
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/radiogroup_orientation_vertical-manual.html
@@ -0,0 +1,111 @@
+<!doctype html>
+<html>
+ <head>
+ <title>radiogroup orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRadioGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "radio group"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "radiogroup orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for radiogroup orientation vertical.</p>
+ <ul id="test" role="radiogroup" aria-orientation="vertical">
+ <li role="radio">File</file>
+ <li role="radio">Edit</file>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/radiogroup_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/radiogroup_readonly_false-manual.html
new file mode 100644
index 0000000000..102f51757b
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/radiogroup_readonly_false-manual.html
@@ -0,0 +1,115 @@
+<!doctype html>
+<html>
+ <head>
+ <title>radiogroup readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRadioGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "radio group"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "radiogroup readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for radiogroup readonly false.</p>
+ <div id="test" role="radiogroup" aria-readonly="false">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/radiogroup_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/radiogroup_readonly_true-manual.html
new file mode 100644
index 0000000000..0c97e24a8b
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/radiogroup_readonly_true-manual.html
@@ -0,0 +1,115 @@
+<!doctype html>
+<html>
+ <head>
+ <title>radiogroup readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRadioGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "radio group"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "radiogroup readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for radiogroup readonly true.</p>
+ <div id="test" role="radiogroup" aria-readonly="true">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/radiogroup_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/radiogroup_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..6e8c641ac7
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/radiogroup_readonly_unspecified-manual.html
@@ -0,0 +1,115 @@
+<!doctype html>
+<html>
+ <head>
+ <title>radiogroup readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PANEL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRadioGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "radio group"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "List"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "radiogroup readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for radiogroup readonly unspecified.</p>
+ <div id="test" role="radiogroup">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/region_with_name-manual.html b/testing/web-platform/tests/wai-aria/region_with_name-manual.html
new file mode 100644
index 0000000000..ba868a77b2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/region_with_name-manual.html
@@ -0,0 +1,114 @@
+<!doctype html>
+<html>
+ <head>
+ <title>region with name</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_LANDMARK"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:region"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXLandmarkRegion"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "region"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:region"
+ ],
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_LANDMARK"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Control Group",
+ "is",
+ "Group"
+ ],
+ [
+ "property",
+ "localizedControlType",
+ "is",
+ "region"
+ ],
+ [
+ "property",
+ "landmarkType",
+ "is",
+ "Custom"
+ ],
+ [
+ "property",
+ "localizedLandmarkType",
+ "is",
+ "region"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "region with name"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for region with name.</p>
+ <section role="region" aria-label="foobar" id="test">
+ <article>This is article 1</article>
+ </section>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/region_without_name-manual.html b/testing/web-platform/tests/wai-aria/region_without_name-manual.html
new file mode 100644
index 0000000000..84ea6658e7
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/region_without_name-manual.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html>
+ <head>
+ <title>region without name</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SECTION"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Text"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Hypertext"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "group"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleText2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleHypertext2"
+ ],
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_SECTION"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_GROUPING"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Control Group",
+ "is",
+ "Group"
+ ],
+ [
+ "property",
+ "landmarkType",
+ "isNot",
+ "Custom"
+ ],
+ [
+ "property",
+ "localizedLandmarkType",
+ "isNot",
+ "region"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "region without name"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for region without name.</p>
+ <div role="region" id="test" tabindex="-1">
+ <article>This is article 1</article>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/row_colindex_4-manual.html b/testing/web-platform/tests/wai-aria/row_colindex_4-manual.html
new file mode 100644
index 0000000000..82ee257d9e
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/row_colindex_4-manual.html
@@ -0,0 +1,149 @@
+<!doctype html>
+<html>
+ <head>
+ <title>row colindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_ROW"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRow"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROW"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROW"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "Column",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "cell",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "column=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIAColumnIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "Column",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "row colindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for row colindex 4.</p>
+ <div role="table">
+ <div id="test" role="row" aria-colindex="4">
+ <div id="cell" role="cell">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/row_rowindex_4-manual.html b/testing/web-platform/tests/wai-aria/row_rowindex_4-manual.html
new file mode 100644
index 0000000000..1333219e04
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/row_rowindex_4-manual.html
@@ -0,0 +1,149 @@
+<!doctype html>
+<html>
+ <head>
+ <title>row rowindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_ROW"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRow"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROW"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROW"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "DataItem.Row",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ },
+ {
+ "element" : "cell",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "row=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIARowIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "Row",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "row rowindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for row rowindex 4.</p>
+ <div role="table">
+ <div id="test" role="row" aria-rowindex="4">
+ <div id="cell" role="cell">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html b/testing/web-platform/tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html
new file mode 100644
index 0000000000..3d82888959
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/rowheader_aria-colspan_2_on_div-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>rowheader aria-colspan 2 on div</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "column_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXColumnIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.ColumnSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "rowheader aria-colspan 2 on div"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for rowheader aria-colspan 2 on div.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="rowheader" aria-colspan="2">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html b/testing/web-platform/tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html
new file mode 100644
index 0000000000..4ddf4f5c9a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/rowheader_aria-rowspan_2_on_div-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>rowheader aria-rowspan 2 on div</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_row_column_span()",
+ "contains",
+ "row_span=2"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXRowIndexRange.length",
+ "is",
+ "2"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowspan:2"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.RowSpan",
+ "is",
+ "2"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "rowheader aria-rowspan 2 on div"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for rowheader aria-rowspan 2 on div.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="rowheader" aria-rowspan="2">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/rowheader_colindex_4-manual.html b/testing/web-platform/tests/wai-aria/rowheader_colindex_4-manual.html
new file mode 100644
index 0000000000..8b1eb477e4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/rowheader_colindex_4-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>rowheader colindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "column=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIAColumnIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTableCell"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "Column",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "rowheader colindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for rowheader colindex 4.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="rowheader" aria-colindex="4" aria-colcount="8">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/rowheader_rowindex_4-manual.html b/testing/web-platform/tests/wai-aria/rowheader_rowindex_4-manual.html
new file mode 100644
index 0000000000..716403cfeb
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/rowheader_rowindex_4-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>rowheader rowindex 4</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ROW_HEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ],
+ [
+ "result",
+ "atk_table_cell_get_position()",
+ "contains",
+ "row=3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXARIARowIndex",
+ "is",
+ "4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowindex:4"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_ROWHEADER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "HeaderItem"
+ ],
+ [
+ "property",
+ "HeaderItem.Row",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "rowheader rowindex 4"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for rowheader rowindex 4.</p>
+ <div role="table">
+ <div role="row">
+ <div id="test" role="rowheader" aria-rowindex="4">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html b/testing/web-platform/tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html
new file mode 100644
index 0000000000..7cd9a55990
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/rowheader_selected_false_not_automatically_propagated-manual.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html>
+ <head>
+ <title>rowheader selected false not automatically propagated</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "cell"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "SelectionItem.IsSelected",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "SelectionItem.selectionContainer",
+ "is",
+ "test1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "rowheader selected false not automatically propagated"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for rowheader selected false not automatically propagated.</p>
+ <div id="test1" role="grid">
+ <div role="row">
+ <div role="columnheader">C1</div>
+ <div role="columnheader">C2</div>
+ </div>
+ <div role="row">
+ <div aria-selected="false" role="rowheader">A1</div>
+ <div id="test" aria-selected="true" role="gridcell">A2</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html b/testing/web-platform/tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html
new file mode 100644
index 0000000000..51b2b68fee
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/rowheader_selected_true_not_automatically_propagated-manual.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html>
+ <head>
+ <title>rowheader selected true not automatically propagated</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCell"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "cell"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_CELL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataItem"
+ ],
+ [
+ "property",
+ "SelectionItem.IsSelected",
+ "is",
+ "false"
+ ],
+ [
+ "property",
+ "SelectionItem.selectionContainer",
+ "is",
+ "test1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "rowheader selected true not automatically propagated"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for rowheader selected true not automatically propagated.</p>
+ <div id="test1" role="grid">
+ <div role="row">
+ <div role="columnheader">C1</div>
+ <div role="columnheader">C2</div>
+ </div>
+ <div role="row">
+ <div role="rowheader" aria-selected="true">A1</div>
+ <div id="test" role="gridcell">A2</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/scripts/ATTAcomm.js b/testing/web-platform/tests/wai-aria/scripts/ATTAcomm.js
new file mode 100644
index 0000000000..b748233fc2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/scripts/ATTAcomm.js
@@ -0,0 +1,947 @@
+/* globals Promise, window, done, assert_true, on_event, promise_test */
+
+/**
+ * Creates an ATTAcomm object. If the parameters are supplied
+ * it sets up event listeners to send the test data to an ATTA if one
+ * is available. If the ATTA does not respond, it will assume the test
+ * is being done manually and the results are being entered in the
+ * parent test window.
+ *
+ * @constructor
+ * @param {object} params
+ * @param {string} [params.test] - object containing JSON test definition
+ * @param {string} [params.testFile] - URI of a file with JSON test definition
+ * @param {string} params.ATTAuri - URI to use to exercise the window
+ * @event DOMContentLoaded Calls go once DOM is fully loaded
+ * @returns {object} Reference to the new object
+ *
+ */
+
+function ATTAcomm(params) {
+ 'use strict';
+
+ this.Params = null; // parameters passed in
+ this.Promise = null; // master Promise that resolves when intialization is complete
+ this.Properties = null; // testharness_properties from the opening window
+ this.Tests = null; // test object being processed
+ this.testName = ""; // name of test being run
+ this.log = ""; // a buffer to capture log information for debugging
+ this.startReponse = {}; // startTest response will go in here for debugging
+
+ this.loading = true;
+
+ this.timeout = 5000;
+
+ var pending = [] ;
+
+ // set up in case DOM finishes loading early
+ pending.push(new Promise(function(resolve) {
+ on_event(document, "DOMContentLoaded", function() {
+ resolve(true);
+ }.bind(this));
+ }.bind(this)));
+
+ // if we are under runner, then there are props in the parent window
+ //
+ // if "output" is set in that, then pause at the end of running so the output
+ // can be analyzed. @@@TODO@@@
+ if (window && window.opener && window.opener.testharness_properties) {
+ this.Properties = window.opener.testharness_properties;
+ }
+
+ this.Params = params;
+
+ if (this.Params.hasOwnProperty("ATTAuri")) {
+ this.ATTAuri = this.Params.ATTAuri;
+ } else {
+ this.ATTAuri = "http://localhost:4119";
+ }
+
+ if (this.Params.hasOwnProperty("title")) {
+ this.testName = this.Params.title;
+ }
+
+ // start by loading the test (it might be inline, but
+ // loadTest deals with that
+ pending.push(this.loadTest(params)
+ .then(function(tests) {
+ // if the test is NOT an object, turn it into one
+ if (typeof tests === 'string') {
+ tests = JSON.parse(tests) ;
+ }
+
+ this.Tests = tests;
+
+ }.bind(this)));
+
+ this.Promise = new Promise(function(resolve, reject) {
+ // once the DOM and the test is loaded... set us up
+ Promise.all(pending)
+ .then(function() {
+ // Everything is loaded
+ this.loading = false ;
+ // run the automated tests (or setup for manual testing)
+ this.go();
+ resolve(this);
+ }.bind(this))
+ .catch(function(err) {
+ // loading the components failed somehow - report the errors and mark the test failed
+ test( function() {
+ assert_true(false, "Loading of test components failed: " +JSON.stringify(err)) ;
+ }, "Loading test components");
+ this.dumpLog();
+ done() ;
+ reject("Loading of test components failed: "+JSON.stringify(err));
+ return ;
+ }.bind(this));
+ }.bind(this));
+
+ return this;
+}
+
+ATTAcomm.prototype = {
+
+ /**
+ * go sets up the connection to the ATTA
+ *
+ * If that succeeds and the tests in this test file have methods for
+ * the API supported by the ATTA, then it automatically runs those tests.
+ *
+ * Otherwise it sets up for manualt testing.
+ */
+ go: function() {
+ 'use strict';
+ // everything is ready. Let's talk to the ATTA
+ this.startTest().then(function(res) {
+
+ // start was successful - iterate over steps
+ var API = res.body.API;
+
+ var subtestsForAPI = false;
+
+ // check main and potentially nested lists of tests for
+ // tests with this API. If any step is missing this API
+ // mapping, then we need to be manual
+ this.Tests.forEach(function(subtest) {
+ if (subtest.hasOwnProperty("test") &&
+ subtest.test.hasOwnProperty(API)) {
+ // there is at least one subtest for this API so
+ // this is a test that needs to be looked at by an atta
+ subtestsForAPI = true;
+ } else if (Array.isArray(subtest)) {
+ subtest.forEach(function(st) {
+ if (st.hasOwnProperty("test") &&
+ st.test.hasOwnProperty(API)) {
+ subtestsForAPI = true;
+ }
+ });
+ }
+ });
+
+ if (subtestsForAPI) {
+ this.runTests(API, this.Tests)
+ .then(function() {
+ // the tests all ran; close it out
+ this.endTest().then(function() {
+ this.dumpLog();
+ done();
+ }.bind(this));
+ }.bind(this))
+ .catch(function(err) {
+ this.endTest().then(function() {
+ this.dumpLog();
+ done();
+ }.bind(this));
+ }.bind(this));
+ } else {
+ // we don't know this API for this test
+ // but we ARE talking to an ATTA; skip this test
+ this.dumpLog();
+ if (window.opener && window.opener.completion_callback) {
+ window.opener.completion_callback([], { status: 3, message: "No steps for AT API " + API } );
+ } else {
+ done();
+ }
+ // this.setupManualTest("Unknown AT API: " + API);
+ }
+ }.bind(this))
+ .catch(function(res) {
+ // startTest failed so just sit and wait for a manual test to occur
+ if (res.timeout || res.status === 102) {
+ this.setupManualTest("No response from ATTA at " + this.ATTAuri);
+ } else if (res.status === 200 ) {
+ this.setupManualTest(res.message);
+ } else if (res.statusText === "No response from ATTA") {
+ this.setupManualTest("");
+ } else {
+ this.setupManualTest("Error from ATTA: " + res.status + ": " + res.statusText);
+ }
+ }.bind(this));
+ },
+
+ runTests: function(API, collection) {
+ // this method returns a promise
+
+ return new Promise(function(resolve, reject) {
+ // accumulate promises; complete when done
+ var pending = [];
+ var testCount = 0;
+
+ this.sendEvents(API, collection)
+ .then(function(eventStatus) {
+
+ /* Loop strategy...
+ *
+ * If the the step is a 'test' then push it into the pending queue as a promise
+ *
+ * If the step is anything else, then if there is anything in pending, wait on it
+ * Once it resolves, clear the queue and then execute the other step.
+ *
+ */
+ collection.forEach(function(subtest) {
+ // what "type" of step in the sequence is this?
+ var theType = "test" ;
+ if (Array.isArray(subtest)) {
+ // it is a group
+ Promise.all(pending).then(function() {
+ pending = [];
+ // recursively run the tests
+ pending.push(this.runTests(API, subtest));
+ }.bind(this));
+ } else if (subtest.hasOwnProperty("type")) {
+ theType = subtest.type;
+ }
+ testCount++;
+ if (theType === "test") {
+ // this is a set of assertions that should be evaluated
+ pending.push(this.runTest(testCount, API, subtest));
+ } else if (theType === "script") {
+ Promise.all(pending).then(function() {
+ pending = [];
+ // execute the script
+ this.runScript(testCount, subtest);
+ }.bind(this));
+ } else if (theType === "attribute") {
+ Promise.all(pending).then(function() {
+ pending = [];
+ // raise the event
+ this.handleAttribute(testCount, subtest);
+ }.bind(this));
+ // } else {
+ } else if (theType === "event") {
+ Promise.all(pending).then(function() {
+ pending = [];
+ // raise the event
+ this.raiseEvent(testCount, subtest);
+ }.bind(this));
+ // } else {
+ }
+ }.bind(this));
+
+ Promise.all(pending)
+ .then(function() {
+ // this collection all ran
+ if (eventStatus !== "NOEVENTS") {
+ // there were some events at the beginning
+ this.sendStopListen().then(function() {
+ resolve(true);
+ });
+ } else {
+ resolve(true);
+ }
+ }.bind(this));
+ }.bind(this));
+ }.bind(this));
+ },
+
+ setupManualTest: function(message) {
+ // if we determine the test should run manually, then expose all of the conditions that are
+ // in the TEST data structure so that a human can to the inspection and calculate the result
+ //
+ 'use strict';
+
+ var ref = document.getElementById("manualMode");
+ if (ref) {
+ // we have a manualMode block. Populate it
+ var content = "<h2>Manual Mode Enabled</h2><p>"+message+"</p>";
+ if (this.Tests.hasOwnProperty("description")) {
+ content += "<p>" + this.Tests.description + "</p>";
+ }
+ var theTable = "<table id='steps'><tr><th>Step</th><th>Type</th><th>Element ID</th><th>Assertions</th></tr>";
+ this.Tests.forEach(function(subtest) {
+ var type = "test";
+ if (subtest.hasOwnProperty("type")) {
+ type = subtest.type;
+ }
+ var id = "" ;
+ if (subtest.hasOwnProperty("element")) {
+ id = subtest.element;
+ }
+ theTable += "<tr><td class='step'>" + subtest.title +"</td>";
+ theTable += "<td class='type'>" + type + "</td>";
+ theTable += "<td class='element'>" + id +"</td>";
+
+ // now what do we put over here? depends on the type
+ if (type === "test") {
+ // it is a test; dump the assertions
+ theTable += "<td>" + this.buildAssertionTable(subtest.test) + "</td>";
+ } else if (type === "attribute" ) {
+ if (subtest.hasOwnProperty("attribute") && subtest.hasOwnProperty("value") && subtest.hasOwnProperty("element")) {
+ if (subtest.value === "none") {
+ theTable += "<td>Remove attribute <code>" + subtest.attribute + "</code> from the element with ID <code>" + subtest.element + "</code></td>";
+ } else {
+ theTable += "<td>Set attribute <code>" + subtest.attribute + "</code> on the element with ID <code>" + subtest.element + "</code> to the value <code>" + subtest.value + "</code></td>";
+ }
+ }
+ } else if (type === "event" ) {
+ // it is some events
+ if (subtest.hasOwnProperty("event") && subtest.hasOwnProperty("element")) {
+ theTable += "<td>Send event <code>" + subtest.event + "</code> to the element with ID <code>" + subtest.element + "</code></td>";
+ }
+ } else if (type === "script" ) {
+ // it is a script fragment
+ theTable += "<td>Script: " + subtest.script + "</td>";
+ } else {
+ theTable += "<td>Unknown type: " + type + "</td>";
+ }
+ theTable += "</tr>";
+
+
+ }.bind(this));
+
+ theTable += "</table>";
+ ref.innerHTML = content + theTable ;
+ }
+ },
+
+ buildAssertionTable: function(asserts) {
+ "use strict";
+ var output = "<table class='api'><tr><th>API Name</th><th colspan='4'>Assertions</th></tr>";
+ var APIs = [] ;
+ for (var k in asserts) {
+ if (asserts.hasOwnProperty(k)) {
+ APIs.push(k);
+ }
+ }
+
+ APIs.sort().forEach(function(theAPI) {
+ var rows = asserts[theAPI] ;
+ var height = rows.length;
+ output += "<tr><td rowspan='" + height + "' class='apiName'>"+theAPI+"</td>";
+ var lastRow = rows.length - 1;
+ rows.forEach(function(theRow, index) {
+ var span = 4 - theRow.length;
+ var colspan = span ? " colspan='"+span+"'" : "";
+ theRow.forEach(function(item) {
+ output += "<td" + colspan + ">" + item + "</td>";
+ });
+ output += "</tr>";
+ if (index < lastRow) {
+ output += "<tr>";
+ }
+ });
+ });
+
+ output += "</table>";
+ return output;
+ },
+
+ // eventList - find the events for an API
+ //
+ // @param {string} API
+ // @param {array} collection - a collection of tests
+ // @returns {array} list of event names
+
+ eventList: function(API, collection) {
+ var eventHash = {};
+
+ if (!API || API === "") {
+ return [];
+ }
+
+ collection.forEach(function(subtest) {
+ if (subtest.hasOwnProperty("test") &&
+ subtest.test.hasOwnProperty(API)) {
+ // this is a subtest for this API; look at the events
+ subtest.test[API].forEach(function(assert) {
+ // look for event names
+ if (assert[0] === "event" && assert[1] === "type" && assert[2] === "is") {
+ eventHash[assert[3]] = 1;
+ }
+ });
+ }
+ });
+
+ return Object.keys(eventHash);
+ },
+
+ // handleAttribute - set or clear an attribute
+ /**
+ * @param {integer} testNum - The subtest number
+ * @param {object} subtest - attribute information to set
+ */
+ handleAttribute: function(testNum, subtest) {
+ "use strict";
+ if (subtest) {
+ if (subtest.hasOwnProperty("attribute") && subtest.hasOwnProperty("element") && subtest.hasOwnProperty("value")) {
+ // update an attribute
+ try {
+ var node = document.getElementById(subtest.element);
+ if (node) {
+ if (subtest.value === "none") {
+ // remove this attribute
+ node.removeAttribute(subtest.attribute);
+ } else if (subtest.value === '""') {
+ node.setAttribute(subtest.attribute, "");
+ } else if (subtest.value.match(/^"/) ) {
+ var v = subtest.value;
+ v = v.replace(/^"/, '');
+ v = v.replace(/"$/, '');
+ node.setAttribute(subtest.attribute, v);
+ } else {
+ node.setAttribute(subtest.attribute, subtest.value);
+ }
+ }
+ }
+ catch (e) {
+ test(function() {
+ assert_true(false, "Subtest attribute failed to update: " +e);
+ }, "Attribute subtest " + testNum);
+ }
+ } else {
+ test(function() {
+ var err = "";
+ if (!subtest.hasOwnProperty("attribute")) {
+ err += "Attribute subtest has no attribute property; ";
+ } else if (!subtest.hasOwnProperty("value")) {
+ err += "Attribute subtest has no value property; ";
+ } else if (!subtest.hasOwnProperty("element")) {
+ err += "Attribute subtest has no element property; ";
+ }
+ assert_true(false, err);
+ }, "Attribute subtest " + testNum );
+ }
+ }
+ return;
+ },
+
+
+
+ // raiseEvent - throw an event at an item
+ /**
+ * @param {integer} testNum - The subtest number
+ * @param {object} subtest - event information to throw
+ */
+ raiseEvent: function(testNum, subtest) {
+ "use strict";
+ var evt;
+ if (subtest) {
+ var kp = function(target, key) {
+ evt = document.createEvent("KeyboardEvent");
+ evt.initKeyEvent ("keypress", true, true, window,
+ 0, 0, 0, 0, 0, "e".charCodeAt(0));
+ target.dispatchEvent(evt);
+ };
+ if (subtest.hasOwnProperty("event") && subtest.hasOwnProperty("element")) {
+ // throw an event
+ try {
+ var node = document.getElementById(subtest.element);
+ if (node) {
+ if (subtest.event === "focus") {
+ node.focus();
+ } else if (subtest.event === "select") {
+ node.click();
+ } else if (subtest.event.startsWith('key:')) {
+ var key = subtest.event.replace('key:', '');
+ evt = new KeyboardEvent("keypress", { "key": key});
+ node.dispatchEvent(evt);
+ } else {
+ evt = new Event(subtest.element);
+ node.dispatchEvent(evt);
+ }
+ }
+ }
+ catch (e) {
+ test(function() {
+ assert_true(false, "Subtest event failed to dispatch: " +e);
+ }, "Event subtest " + testNum);
+ }
+ } else {
+ test(function() {
+ var err = "";
+ if (!subtest.hasOwnProperty("event")) {
+ err += "Event subtest has no event property; ";
+ } else if (!subtest.hasOwnProperty("element")) {
+ err += "Event subtest has no element property; ";
+ }
+ assert_true(false, err);
+ }, "Event subtest " + testNum );
+ }
+ }
+ return;
+ },
+
+ // runScript - run a script in the context of the window
+ /**
+ * @param {integer} testNum - The subtest number
+ * @param {object} subtest - script and related information
+ */
+ runScript: function(testNum, subtest) {
+ "use strict";
+ if (subtest) {
+ if (subtest.hasOwnProperty("script") && typeof subtest.script === "string") {
+ try {
+ /* jshint evil:true */
+ eval(subtest.script);
+ }
+ catch (e) {
+ test(function() {
+ assert_true(false, "Subtest script " + subtest.script + " failed to evaluate: " +e);
+ }, "Event subtest " + testNum);
+ }
+ } else {
+ test(function() {
+ assert_true(false, "Event subtest has no script property");
+ }, "Event subtest " + testNum );
+ }
+ }
+ return;
+ },
+
+ // runTest - process subtest
+ /**
+ * @param {integer} testNum - The subtest number
+ * @param {string} API - name of the API being tested
+ * @param {object} subtest - a subtest to run; contains 'title', 'element', and
+ * 'test array'
+ * @returns {Promise} - a Promise that resolves when the test completes
+ */
+ runTest: function(testNum, API, subtest) {
+ 'use strict';
+
+ var data = {
+ "title" : subtest.title,
+ "id" : subtest.element,
+ "data": this.normalize(subtest.test[API])
+ };
+
+ return new Promise(function(resolve) {
+ var ANNO = this;
+ if (subtest.test[API]) {
+ // we actually have a test to run
+ promise_test(function() {
+ // force a resolve of the promise regardless
+ this.add_cleanup(function() { resolve(true); });
+ return ANNO.sendTest(data)
+ .then(function(res) {
+ if (typeof res.body === "object" && res.body.hasOwnProperty("status")) {
+ // we got some sort of response
+ if (res.body.status === "OK") {
+ // the test ran - yay!
+ var messages = "";
+ var thisResult = null;
+ var theLog = "";
+ var assertionCount = 0;
+ res.body.results.forEach( function (a) {
+ if (typeof a === "object") {
+ // we have a result for this assertion
+ // first, what is the assertion?
+ var aRef = data.data[assertionCount];
+ var assertionText = '"' + aRef.join(" ") +'"';
+
+ if (a.hasOwnProperty("log") && a.log !== null && a.log !== '' ) {
+ // there is log data - save it
+ theLog += "\n--- Assertion " + assertionCount + " ---";
+ theLog += "\nAssertion: " + assertionText + "\nLog data: "+a.log ;
+ }
+
+ // is there a message?
+ var theMessage = "";
+ if (a.hasOwnProperty("message")) {
+ theMessage = a.message;
+ }
+ if (!a.hasOwnProperty("result")) {
+ messages += "ATTA did not report a result " + theMessage + "; ";
+ } else if (a.result === "ERROR") {
+ messages += "ATTA reported ERROR with message: " + theMessage + "; ";
+ } else if (a.result === "FAIL") {
+ thisResult = false;
+ messages += assertionText + " failed " + theMessage + "; ";
+ } else if (a.result === "PASS" && thisResult === null) {
+ // if we got a pass and there was no other result thus far
+ // then we are passing
+ thisResult = true;
+ }
+ }
+ assertionCount++;
+ });
+ if (theLog !== "") {
+ ANNO.saveLog("runTest", theLog, subtest);
+ }
+ if (thisResult !== null) {
+ assert_true(thisResult, messages);
+ } else {
+ assert_true(false, "ERROR: No results reported from ATTA; " + messages);
+ }
+ } else if (res.body.status === "ERROR") {
+ assert_true(false, "ATTA returned ERROR with message: " + res.body.statusText);
+ } else {
+ assert_true(false, "ATTA returned unknown status " + res.body.status + " with message: " + res.body.statusText);
+ }
+ } else {
+ // the return wasn't an object!
+ assert_true(false, "ATTA failed to return a result object: returned: "+JSON.stringify(res));
+ }
+ });
+ }, subtest.name );
+ } else {
+ // there are no test steps for this API. fake a subtest result
+ promise_test(function() {
+ // force a resolve of the promise regardless
+ this.add_cleanup(function() { resolve(true); });
+ return new Promise(function(innerResolve) {
+ innerResolve(true);
+ })
+ .then(function(res) {
+ var theLog = "\nSUBTEST NOTRUN: No assertions for API " + API + "\n";
+ if (theLog !== "") {
+ ANNO.saveLog("runTest", theLog, subtest);
+ }
+ assert_false(true, "NOTRUN: No assertion for API " + API);
+ });
+ }, subtest.name );
+ }
+ }.bind(this));
+ },
+
+ // loadTest - load a test from an external JSON file
+ //
+ // returns a promise that resolves with the contents of the
+ // test
+
+ loadTest: function(params) {
+ 'use strict';
+
+ if (params.hasOwnProperty('stepFile')) {
+ // the test is referred to by a file name
+ return this._fetch("GET", params.stepFile);
+ } // else
+ return new Promise(function(resolve, reject) {
+ if (params.hasOwnProperty('steps')) {
+ resolve(params.steps);
+ } else {
+ reject("Must supply a 'steps' or 'stepFile' parameter");
+ }
+ });
+ },
+
+ /* dumpLog - put log information into the log div on the page if it exists
+ */
+
+ dumpLog: function() {
+ 'use strict';
+ if (this.log !== "") {
+ var ref = document.getElementById("ATTAmessages");
+ if (ref) {
+ // we have a manualMode block. Populate it
+ var content = "<h2>Logging information recorded</h2>";
+ if (this.startResponse && this.startResponse.hasOwnProperty("API")) {
+ content += "<h3>ATTA Information</h3>";
+ content += "<pre>"+JSON.stringify(this.startResponse, null, " ")+"</pre>";
+ }
+ content += "<textarea rows='50' style='width:100%'>"+this.log+"</textarea>";
+ ref.innerHTML = content ;
+ }
+ }
+ },
+
+ /* saveLog - capture logging information so that it can be displayed on the page after testing is complete
+ *
+ * @param {string} caller name
+ * @param {string} log message
+ * @param {object} subtest
+ */
+
+ saveLog: function(caller, message, subtest) {
+ 'use strict';
+
+ if (typeof message === "string" && message !== "") {
+ this.log += "============================================================\n";
+ this.log += "Message from " + caller + "\n";
+ if (subtest && typeof subtest === "object") {
+ var API = this.startResponse.API;
+ this.log += "\n SUBTEST TITLE: " + subtest.title;
+ this.log += "\n SUBTEST ELEMENT: " + subtest.element;
+ this.log += "\n SUBTEST DATA: " + JSON.stringify(subtest.test[API]);
+ this.log += "\n\n";
+ }
+ this.log += message;
+ }
+ return;
+ },
+
+ // startTest - send the test start message
+ //
+ // @returns {Promise} resolves if the start is successful, or rejects with
+
+ startTest: function() {
+ 'use strict';
+
+ return new Promise(function(resolve, reject) {
+ var params = {
+ test: this.testName || window.title,
+ url: document.location.href
+ };
+
+ this._fetch("POST", this.ATTAuri + "/start", null, params)
+ .then(function(res) {
+ if (res.body.hasOwnProperty("status")) {
+ if (res.body.status === "READY") {
+ this.startResponse = res.body;
+ if (res.body.hasOwnProperty("log")) {
+ // there is some logging data - capture it
+ this.saveLog("startTest", res.body.log);
+ }
+ // the system is ready for us - is it really?
+ if (res.body.hasOwnProperty("API")) {
+ resolve(res);
+ } else {
+ res.message = "No API in response from ATTA";
+ reject(res);
+ }
+ } else {
+ // the system reported something else - fail out with the statusText as a result
+ res.message = "ATTA reported an error: " + res.body.statusText;
+ reject(res);
+ }
+ } else {
+ res.message = "ATTA did not report a status";
+ reject(res);
+ }
+ }.bind(this))
+ .catch(function(res) {
+ reject(res);
+ });
+ }.bind(this));
+ },
+
+ // sendEvents - send the list of events the ATTA needs to listen for
+ //
+ // @param {string} API
+ // @param {array} collection - a list of tests
+ // @returns {Promise} resolves if the message is successful, or rejects with
+
+ sendEvents: function(API, collection) {
+ 'use strict';
+
+ return new Promise(function(resolve, reject) {
+ var eList = this.eventList(API, collection) ;
+ if (eList && eList.length) {
+ var params = {
+ events: eList
+ };
+
+ this._fetch("POST", this.ATTAuri + "/startlisten", null, params)
+ .then(function(res) {
+ if (res.body.hasOwnProperty("status")) {
+ if (res.body.status === "READY") {
+ if (res.body.hasOwnProperty("log")) {
+ // there is some logging data - capture it
+ this.saveLog("sendEvents", res.body.log);
+ }
+ resolve(res.body.status);
+ } else {
+ // the system reported something else - fail out with the statusText as a result
+ res.message = "ATTA reported an error: " + res.body.statusText;
+ reject(res);
+ }
+ } else {
+ res.message = "ATTA did not report a status";
+ reject(res);
+ }
+ }.bind(this))
+ .catch(function(res) {
+ reject(res);
+ });
+ } else {
+ // there are no events
+ resolve("NOEVENTS");
+ }
+ }.bind(this));
+ },
+
+ sendStopListen: function() {
+ 'use strict';
+
+ return this._fetch("POST", this.ATTAuri + "/stoplisten", null, null);
+ },
+
+ // sendTest - send test data to an ATTA and wait for a response
+ //
+ // returns a promise that resolves with the results of the test
+
+ sendTest: function(testData) {
+ 'use strict';
+
+ if (typeof testData !== "string") {
+ testData = JSON.stringify(testData);
+ }
+ var ret = this._fetch("POST", this.ATTAuri + "/test", null, testData, true);
+ ret.then(function(res) {
+ if (res.body.hasOwnProperty("log")) {
+ // there is some logging data - capture it
+ this.saveLog("sendTest", res.body.log);
+ }
+ }.bind(this));
+ return ret;
+ },
+
+ endTest: function() {
+ 'use strict';
+
+ return this._fetch("GET", this.ATTAuri + "/end");
+ },
+
+ /* normalize - ensure subtest data conforms to ATTA spec
+ */
+
+ normalize: function( data ) {
+ 'use strict';
+
+ var ret = [] ;
+
+ if (data) {
+ data.forEach(function(assert) {
+ var normal = [] ;
+ // ensure if there is a value list it is compressed
+ if (Array.isArray(assert)) {
+ // we have an array
+ normal[0] = assert[0];
+ normal[1] = assert[1];
+ normal[2] = assert[2];
+ if ("string" === typeof assert[3] && assert[3].match(/^\[.*\]$/)) {
+ // it is a string and matches the valuelist pattern
+ normal[3] = assert[3].replace(/, +/, ',');
+ } else {
+ normal[3] = assert[3];
+ }
+ ret.push(normal);
+ } else {
+ ret.push(assert);
+ }
+ });
+ }
+ return ret;
+ },
+
+ // _fetch - return a promise after sending data
+ //
+ // Resolves with the returned information in a structure
+ // including:
+ //
+ // xhr - a raw xhr object
+ // headers - an array of headers sent in the request
+ // status - the status code
+ // statusText - the text of the return status
+ // text - raw returned data
+ // body - an object parsed from the returned content
+ //
+
+ _fetch: function (method, url, headers, content, parse) {
+ 'use strict';
+ if (method === null || method === undefined) {
+ method = "GET";
+ }
+ if (parse === null || parse === undefined) {
+ parse = true;
+ }
+ if (headers === null || headers === undefined) {
+ headers = [];
+ }
+
+
+ // note that this Promise always resolves - there is no reject
+ // condition
+
+ return new Promise(function (resolve, reject) {
+ var xhr = new XMLHttpRequest();
+
+ // this gets returned when the request completes
+ var resp = {
+ xhr: xhr,
+ headers: null,
+ status: 0,
+ statusText: "",
+ body: null,
+ text: ""
+ };
+
+ xhr.open(method, url);
+
+ // headers?
+ headers.forEach(function(ref) {
+ xhr.setRequestHeader(ref[0], ref[1]);
+ });
+
+ //if (this.timeout) {
+ // xhr.timeout = this.timeout;
+ //}
+
+ xhr.ontimeout = function() {
+ resp.timeout = this.timeout;
+ resolve(resp);
+ };
+
+ xhr.onerror = function() {
+ if (this.status) {
+ resp.status = this.status;
+ resp.statusText = xhr.statusText;
+ } else if (this.status === 0) {
+ resp.status = 0;
+ resp.statusText = "No response from ATTA";
+ }
+ reject(resp);
+ };
+
+ xhr.onload = function () {
+ resp.status = this.status;
+ if (this.status >= 200 && this.status < 300) {
+ var d = xhr.response;
+ // return the raw text of the response
+ resp.text = d;
+ // we have it; what is it?
+ if (parse) {
+ try {
+ d = JSON.parse(d);
+ resp.body = d;
+ }
+ catch(err) {
+ resp.body = null;
+ }
+ }
+ resolve(resp);
+ } else {
+ reject({
+ status: this.status,
+ statusText: xhr.statusText
+ });
+ }
+ };
+
+ if (content !== null && content !== undefined) {
+ if ("object" === typeof(content)) {
+ xhr.send(JSON.stringify(content));
+ } else if ("function" === typeof(content)) {
+ xhr.send(content());
+ } else if ("string" === typeof(content)) {
+ xhr.send(content);
+ }
+ } else {
+ xhr.send();
+ }
+ });
+ },
+
+};
+
+// vim: set ts=2 sw=2:
diff --git a/testing/web-platform/tests/wai-aria/scripts/manual.css b/testing/web-platform/tests/wai-aria/scripts/manual.css
new file mode 100644
index 0000000000..0e4f4a03e4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/scripts/manual.css
@@ -0,0 +1,70 @@
+html {
+ font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;
+}
+
+table#steps {
+ border-collapse:collapse;
+ table-layout:fixed;
+ width:100%;
+}
+
+table#steps th:last-child,
+table#steps td:last-child {
+ width:70%;
+}
+
+// table#steps.assertions th:last-child,
+// table#steps.assertions td:last-child {
+// width:35%;
+// }
+
+table#steps th {
+ padding:0;
+ padding-bottom:0.25;
+ border-bottom:medium solid black;
+}
+
+table#steps td {
+ padding-top:0.25em;
+ padding-bottom:0.25em;
+ padding-left:0.5em;
+ padding-right:0.5em;
+ border-right:thin solid black;
+ border-top:thin solid black;
+ border-bottom:thin solid black;
+}
+
+table#steps td.step, table#steps td.type, table#steps td.element {
+ vertical-align:top;
+}
+table#api {
+ border-collapse:collapse;
+ table-layout:fixed;
+ width:100%;
+}
+
+// table#steps.assertions th:last-child,
+// table#steps.assertions td:last-child {
+// width:35%;
+// }
+
+table#api th {
+ padding:0;
+ padding-bottom:0.25;
+ border-bottom:medium solid black;
+}
+
+table#api td {
+ padding-top:0.25em;
+ padding-bottom:0.25em;
+ padding-left:0.5em;
+ padding-right:0.5em;
+ border-right:thin solid black;
+ border-top:thin solid black;
+ border-bottom:thin solid black;
+}
+
+table#api td.step, table#api td.type, table#api td.element {
+ vertical-align:top;
+}
+}
diff --git a/testing/web-platform/tests/wai-aria/scrollbar_all_values_unspecified-manual.html b/testing/web-platform/tests/wai-aria/scrollbar_all_values_unspecified-manual.html
new file mode 100644
index 0000000000..910fe2b118
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/scrollbar_all_values_unspecified-manual.html
@@ -0,0 +1,182 @@
+<!doctype html>
+<html>
+ <head>
+ <title>scrollbar all values unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SCROLL_BAR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "is",
+ "100"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXScrollBar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "scroll bar"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "is",
+ "100"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SCROLLBAR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "is",
+ "100"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SCROLLBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "scrollbar"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "is",
+ "100"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "scrollbar all values unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for scrollbar all values unspecified.</p>
+ <div role="scrollbar" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html b/testing/web-platform/tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html
new file mode 100644
index 0000000000..73e3158176
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/scrollbar_only_valuenow_unspecified-manual.html
@@ -0,0 +1,182 @@
+<!doctype html>
+<html>
+ <head>
+ <title>scrollbar only valuenow unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SCROLL_BAR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "20"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "is",
+ "40"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXScrollBar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "scroll bar"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "20"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "is",
+ "40"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SCROLLBAR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "20"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "is",
+ "40"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SCROLLBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ScrollBar"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "20"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "is",
+ "40"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "scrollbar only valuenow unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for scrollbar only valuenow unspecified.</p>
+ <div role="scrollbar" aria-valuemin="0" aria-valuemax="40" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/scrollbar_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/scrollbar_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..32791ae1d8
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/scrollbar_orientation_unspecified-manual.html
@@ -0,0 +1,132 @@
+<!doctype html>
+<html>
+ <head>
+ <title>scrollbar orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SCROLL_BAR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXScrollBar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "scroll bar"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SCROLLBAR"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SCROLLBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ScrollBar"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "vertical"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "RangeValue"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "scrollbar orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for scrollbar orientation unspecified.</p>
+ <div role="scrollbar" id="test"></div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox-manual.html b/testing/web-platform/tests/wai-aria/searchbox-manual.html
new file mode 100644
index 0000000000..979bd0fad4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox-manual.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:searchbox"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:searchbox"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox.</p>
+ <div id='test' role='searchbox' contenteditable='true'></div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_activedescendant-manual.html b/testing/web-platform/tests/wai-aria/searchbox_activedescendant-manual.html
new file mode 100644
index 0000000000..a72cf93263
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_activedescendant-manual.html
@@ -0,0 +1,222 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox activedescendant</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "event" : "focus",
+ "title" : "step 1",
+ "type" : "event"
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "property",
+ "AXFocused",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_IsKeyboardFocusablePropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_HasKeyboardFocusPropertyId",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ },
+ {
+ "element" : "bob",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXFocused",
+ "is",
+ "true"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXFocused)",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.UIA_IsKeyboardFocusablePropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_HasKeyboardFocusPropertyId",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 3",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox activedescendant"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox activedescendant.</p>
+ <div id='test' tabindex="0" aria-activedescendant="bob" role='searchbox'>
+ <div id='bob' role='group'>Hello world</div>
+ </div>
+ then role:searchbox, aria-activedescendant: bob
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_activedescendant_value_changes-manual.html b/testing/web-platform/tests/wai-aria/searchbox_activedescendant_value_changes-manual.html
new file mode 100644
index 0000000000..956f931ae8
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_activedescendant_value_changes-manual.html
@@ -0,0 +1,271 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox activedescendant value changes</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "event" : "focus",
+ "title" : "step 1",
+ "type" : "event"
+ },
+ {
+ "attribute" : "aria-activedescendant",
+ "element" : "test",
+ "title" : "step 2",
+ "type" : "attribute",
+ "value" : "\"bob\""
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "property",
+ "AXFocused",
+ "is",
+ "false"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXFocused)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_FOCUS"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_IsKeyboardFocusablePropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_HasKeyboardFocusPropertyId",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 3",
+ "type" : "test"
+ },
+ {
+ "element" : "bob",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_FOCUSABLE"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:focused"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXFocused",
+ "is",
+ "true"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXFocused)",
+ "is",
+ "true"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "AXFocusedUIElementChanged"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_FOCUSABLE"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_FOCUS"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "IUIAutomationElement.UIA_IsKeyboardFocusablePropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "property",
+ "IUIAutomationElement.UIA_HasKeyboardFocusPropertyId",
+ "is",
+ "true"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "UIA_AutomationFocusChangedEventId"
+ ]
+ ]
+ },
+ "title" : "step 4",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox activedescendant value changes"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox activedescendant value changes.</p>
+ <div id='test' tabindex="0" role='searchbox'>
+ <div id='bob' role='group'>Hello world</div>
+ </div>
+ then role:searchbox, aria-activedescendant: bob
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_autocomplete_both-manual.html b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_both-manual.html
new file mode 100644
index 0000000000..ea8b698679
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_both-manual.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox autocomplete both</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:both"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SUPPORTS_AUTOCOMPLETION"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "<nil>"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:both"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "both"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox autocomplete both"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox autocomplete both.</p>
+ <div id="test" role="searchbox" aria-autocomplete="both"></div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_autocomplete_inline-manual.html b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_inline-manual.html
new file mode 100644
index 0000000000..77e707666c
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_inline-manual.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox autocomplete inline</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:inline"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SUPPORTS_AUTOCOMPLETION"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "<nil>"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:inline"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "inline"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox autocomplete inline"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox autocomplete inline.</p>
+ <div id="test" role="searchbox" aria-autocomplete="inline"></div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_autocomplete_list-manual.html b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_list-manual.html
new file mode 100644
index 0000000000..0ce8068ea9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_list-manual.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox autocomplete list</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:list"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SUPPORTS_AUTOCOMPLETION"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "<nil>"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:list"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "list"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox autocomplete list"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox autocomplete list.</p>
+ <div id="test" role="searchbox" aria-autocomplete="list"></div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_autocomplete_none-manual.html b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_none-manual.html
new file mode 100644
index 0000000000..341d75c532
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_none-manual.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox autocomplete none</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:none"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SUPPORTS_AUTOCOMPLETION"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "<nil>"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:none"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "none"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox autocomplete none"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox autocomplete none.</p>
+ <div id="test" role="searchbox" aria-autocomplete="none"></div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_autocomplete_unspecified-manual.html b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_unspecified-manual.html
new file mode 100644
index 0000000000..59becae655
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_autocomplete_unspecified-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox autocomplete unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SUPPORTS_AUTOCOMPLETION"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ "<nil>"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "autocomplete:none"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "autocomplete",
+ "is",
+ ""
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox autocomplete unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox autocomplete unspecified.</p>
+ <div id="test" role="searchbox"></div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_multiline_false-manual.html b/testing/web-platform/tests/wai-aria/searchbox_multiline_false-manual.html
new file mode 100644
index 0000000000..8f49eb61e9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_multiline_false-manual.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox multiline false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_MULTI_LINE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox multiline false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox multiline false.</p>
+ <div id='test' role='searchbox' contenteditable='true' aria-multiline='false'></div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_multiline_true-manual.html b/testing/web-platform/tests/wai-aria/searchbox_multiline_true-manual.html
new file mode 100644
index 0000000000..47e6c3aaa9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_multiline_true-manual.html
@@ -0,0 +1,138 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox multiline true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_MULTI_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_MULTI_LINE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "AriaProperties.multiline",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox multiline true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox multiline true.</p>
+ <div id='test' role='searchbox' contenteditable='true' aria-multiline='true'></div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_multiline_unspecified-manual.html b/testing/web-platform/tests/wai-aria/searchbox_multiline_unspecified-manual.html
new file mode 100644
index 0000000000..5c1d7f5185
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_multiline_unspecified-manual.html
@@ -0,0 +1,108 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox multiline unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:search"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox multiline unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox multiline unspecified.</p>
+ <div id='test' role='searchbox' contenteditable='true'></div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_placeholder-manual.html b/testing/web-platform/tests/wai-aria/searchbox_placeholder-manual.html
new file mode 100644
index 0000000000..da513456d2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_placeholder-manual.html
@@ -0,0 +1,140 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox placeholder</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "placeholder-text:DD/MM/YYYY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "property",
+ "AXPlaceholderValue",
+ "is",
+ "DD/MM/YYYY"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "placeholder-text:DD/MM/YYYY"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "result",
+ "AriaProperties.placeholder",
+ "is",
+ "DD/MM/YYYY"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox placeholder"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox placeholder.</p>
+ <div contenteditable="true" role="searchbox" aria-placeholder="DD/MM/YYYY" id="test">
+ "DD/MM/YYYY"
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/searchbox_readonly_false-manual.html
new file mode 100644
index 0000000000..574666a017
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_readonly_false-manual.html
@@ -0,0 +1,139 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox readonly false.</p>
+ <div id="test" role="searchbox" aria-readonly="false">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/searchbox_readonly_true-manual.html
new file mode 100644
index 0000000000..833f1bc428
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_readonly_true-manual.html
@@ -0,0 +1,139 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "doesNotContain",
+ "EditableText"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox readonly true.</p>
+ <div id="test" role="searchbox" aria-readonly="true">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/searchbox_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..51b9893595
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_readonly_unspecified-manual.html
@@ -0,0 +1,139 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "search text field"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox readonly unspecified.</p>
+ <div id="test" role="searchbox">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_required_false-manual.html b/testing/web-platform/tests/wai-aria/searchbox_required_false-manual.html
new file mode 100644
index 0000000000..1bfc895356
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_required_false-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox required false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox required false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox required false.</p>
+ <div id="test" role="searchbox" aria-required="false">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_required_true-manual.html b/testing/web-platform/tests/wai-aria/searchbox_required_true-manual.html
new file mode 100644
index 0000000000..7e26e5ab03
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_required_true-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox required true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox required true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox required true.</p>
+ <div id="test" role="searchbox" aria-required="true">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/searchbox_required_unspecified-manual.html b/testing/web-platform/tests/wai-aria/searchbox_required_unspecified-manual.html
new file mode 100644
index 0000000000..13489ad13a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/searchbox_required_unspecified-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>searchbox required unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_REQUIRED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSearchField"
+ ],
+ [
+ "property",
+ "AXRequired",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "text-input-type:search"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_REQUIRED"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "search box"
+ ],
+ [
+ "property",
+ "IsrequiredForForm",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "searchbox required unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for searchbox required unspecified.</p>
+ <div id="test" role="searchbox">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/separator_focusable_all_values_unspecified-manual.html b/testing/web-platform/tests/wai-aria/separator_focusable_all_values_unspecified-manual.html
new file mode 100644
index 0000000000..fb8e852bb1
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/separator_focusable_all_values_unspecified-manual.html
@@ -0,0 +1,182 @@
+<!doctype html>
+<html>
+ <head>
+ <title>separator focusable all values unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SEPARATOR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "is",
+ "100"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSplitter"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "splitter"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "is",
+ "100"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "is",
+ "100"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Thumb"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "is",
+ "100"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "separator focusable all values unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for separator focusable all values unspecified.</p>
+ <div tabindex="0" role="separator" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html b/testing/web-platform/tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html
new file mode 100644
index 0000000000..680c2a3605
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/separator_focusable_only_valuenow_unspecified-manual.html
@@ -0,0 +1,182 @@
+<!doctype html>
+<html>
+ <head>
+ <title>separator focusable only valuenow unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SEPARATOR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "is",
+ "100"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSplitter"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "splitter"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "is",
+ "100"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "is",
+ "100"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Thumb"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "is",
+ "100"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "separator focusable only valuenow unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for separator focusable only valuenow unspecified.</p>
+ <div tabindex="0" role="separator" aria-valuemin="0", aria-valuemax="100" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/separator_focusable_valuetext-manual.html b/testing/web-platform/tests/wai-aria/separator_focusable_valuetext-manual.html
new file mode 100644
index 0000000000..5992f15aeb
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/separator_focusable_valuetext-manual.html
@@ -0,0 +1,206 @@
+<!doctype html>
+<html>
+ <head>
+ <title>separator focusable valuetext</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SEPARATOR"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "valuetext:Bonaire"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "is",
+ "100"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSplitter"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "splitter"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "is",
+ "100"
+ ],
+ [
+ "property",
+ "AXValueDescription",
+ "is",
+ "Bonaire"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "valuetext:Bonaire"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "is",
+ "100"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Thumb"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "is",
+ "100"
+ ],
+ [
+ "property",
+ "Value.Value",
+ "is",
+ "Bonaire"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "separator focusable valuetext"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for separator focusable valuetext.</p>
+ <div tabindex="0" role="separator" aria-valuetext="Bonaire" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/separator_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/separator_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..3a3901b424
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/separator_orientation_unspecified-manual.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<html>
+ <head>
+ <title>separator orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SEPARATOR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSplitter"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "splitter"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Separator"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "separator orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for separator orientation unspecified.</p>
+ <div role="separator" id="test"></div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html b/testing/web-platform/tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html
new file mode 100644
index 0000000000..171370f422
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/separator_unfocusable_all_values_unspecified-manual.html
@@ -0,0 +1,90 @@
+<!doctype html>
+<html>
+ <head>
+ <title>separator unfocusable all values unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SEPARATOR"
+ ],
+ [
+ "property",
+ "interfaces",
+ "doesNotContain",
+ "Value"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSplitter"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "splitter"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Separator"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "separator unfocusable all values unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for separator unfocusable all values unspecified.</p>
+ <div role="separator" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/separator_unfocusable_valuetext-manual.html b/testing/web-platform/tests/wai-aria/separator_unfocusable_valuetext-manual.html
new file mode 100644
index 0000000000..db8ee6322d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/separator_unfocusable_valuetext-manual.html
@@ -0,0 +1,116 @@
+<!doctype html>
+<html>
+ <head>
+ <title>separator unfocusable valuetext</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SEPARATOR"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "valuetext:Bonaire"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSplitter"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "splitter"
+ ],
+ [
+ "property",
+ "AXValueDescription",
+ "isNot",
+ "Bonaire"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "objectAttributes",
+ "doesNotContain",
+ "valuetext:Bonaire"
+ ],
+ [
+ "property",
+ "value",
+ "isNot",
+ "Bonaire"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SEPARATOR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Separator"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "doesNotContain",
+ "RangeValue"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "separator unfocusable valuetext"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for separator unfocusable valuetext.</p>
+ <div role="separator" aria-valuetext="Bonaire" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/slider_all_values_unspecified-manual.html b/testing/web-platform/tests/wai-aria/slider_all_values_unspecified-manual.html
new file mode 100644
index 0000000000..0dea62e620
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/slider_all_values_unspecified-manual.html
@@ -0,0 +1,182 @@
+<!doctype html>
+<html>
+ <head>
+ <title>slider all values unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "is",
+ "100"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSlider"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "slider"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "is",
+ "100"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "50"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "is",
+ "100"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Slider"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "50"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "is",
+ "100"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "slider all values unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for slider all values unspecified.</p>
+ <div role="slider" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/slider_only_valuenow_unspecified-manual.html b/testing/web-platform/tests/wai-aria/slider_only_valuenow_unspecified-manual.html
new file mode 100644
index 0000000000..ffcbc78373
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/slider_only_valuenow_unspecified-manual.html
@@ -0,0 +1,182 @@
+<!doctype html>
+<html>
+ <head>
+ <title>slider only valuenow unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "20"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "is",
+ "40"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSlider"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "slider"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "20"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "is",
+ "40"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "20"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "is",
+ "40"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Slider"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "20"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "is",
+ "40"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "slider only valuenow unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for slider only valuenow unspecified.</p>
+ <div role="slider" aria-valuemin="0" aria-valuemax="40" id="test">
+ Go Fish
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/slider_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/slider_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..295b0a6196
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/slider_orientation_unspecified-manual.html
@@ -0,0 +1,132 @@
+<!doctype html>
+<html>
+ <head>
+ <title>slider orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSlider"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "slider"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Slider"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "horizontal"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "RangeValue"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "slider orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for slider orientation unspecified.</p>
+ <div role="slider" id="test"></div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/slider_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/slider_readonly_false-manual.html
new file mode 100644
index 0000000000..f5a70984d5
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/slider_readonly_false-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>slider readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSlider"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "slider"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAcesssibleValue"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Slider"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "slider readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for slider readonly false.</p>
+ <div id="test" role="slider" aria-readonly="false">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/slider_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/slider_readonly_true-manual.html
new file mode 100644
index 0000000000..2588079d78
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/slider_readonly_true-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>slider readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSlider"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "slider"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAcesssibleValue"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Slider"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "slider readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for slider readonly true.</p>
+ <div id="test" role="slider" aria-readonly="true">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/slider_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/slider_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..271325a47d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/slider_readonly_unspecified-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>slider readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXSlider"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "slider"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAcesssibleValue"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SLIDER"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Slider"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "slider readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for slider readonly unspecified.</p>
+ <div id="test" role="slider">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/spinbutton_all_values_unspecified-manual.html b/testing/web-platform/tests/wai-aria/spinbutton_all_values_unspecified-manual.html
new file mode 100644
index 0000000000..8da69af36d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/spinbutton_all_values_unspecified-manual.html
@@ -0,0 +1,183 @@
+<!doctype html>
+<html>
+ <head>
+ <title>spinbutton all values unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SPIN_BUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "isLTE",
+ "-9007199254740992"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "isGTE",
+ "9007199254740992"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXIncrementor"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "stepper"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "isLTE",
+ "-9007199254740992"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "isGTE",
+ "9007199254740992"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "isLTE",
+ "-9007199254740992"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "isGTE",
+ "9007199254740992"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Spinner"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "isLTE",
+ "-9007199254740992"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "isGTE",
+ "9007199254740992"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "spinbutton all values unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for spinbutton all values unspecified.</p>
+ <div role="spinbutton" id="test">
+ Go Fish
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html b/testing/web-platform/tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html
new file mode 100644
index 0000000000..bbb94702fe
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/spinbutton_only_aria-valuenow_unspecified-manual.html
@@ -0,0 +1,183 @@
+<!doctype html>
+<html>
+ <head>
+ <title>spinbutton only aria-valuenow unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SPIN_BUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "result",
+ "atk_value_get_minimum_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_current_value()",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "atk_value_get_maximum_value()",
+ "is",
+ "100"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXIncrementor"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "stepper"
+ ],
+ [
+ "property",
+ "AXMinValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "AXMaxValue",
+ "is",
+ "100"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "AccessibleValue"
+ ],
+ [
+ "property",
+ "minimumValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "currentValue",
+ "is",
+ "0"
+ ],
+ [
+ "property",
+ "maximumValue",
+ "is",
+ "100"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Spinner"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "RangeValue"
+ ],
+ [
+ "result",
+ "RangeValue.Minimum",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Value",
+ "is",
+ "0"
+ ],
+ [
+ "result",
+ "RangeValue.Maximum",
+ "is",
+ "100"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "spinbutton only aria-valuenow unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for spinbutton only aria-valuenow unspecified.</p>
+ <div role="spinbutton" aria-valuemin="0" aria-valuemax="100" id="test">
+ Go Fish
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/spinbutton_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/spinbutton_readonly_false-manual.html
new file mode 100644
index 0000000000..5e9429ca28
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/spinbutton_readonly_false-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>spinbutton readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SPIN_BUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXIncrementor"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "stepper"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAcesssibleValue"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Spinner"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "spinbutton readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for spinbutton readonly false.</p>
+ <div id="test" role="spinbutton" aria-readonly="false">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/spinbutton_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/spinbutton_readonly_true-manual.html
new file mode 100644
index 0000000000..a7a3abe632
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/spinbutton_readonly_true-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>spinbutton readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SPIN_BUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXIncrementor"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "stepper"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAcesssibleValue"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Spinner"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "spinbutton readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for spinbutton readonly true.</p>
+ <div id="test" role="spinbutton" aria-readonly="true">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/spinbutton_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/spinbutton_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..0976b0737c
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/spinbutton_readonly_unspecified-manual.html
@@ -0,0 +1,127 @@
+<!doctype html>
+<html>
+ <head>
+ <title>spinbutton readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SPIN_BUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Value"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXIncrementor"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "stepper"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAcesssibleValue"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_SPINBUTTON"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Spinner"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "spinbutton readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for spinbutton readonly unspecified.</p>
+ <div id="test" role="spinbutton">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/switch_checked_false-manual.html b/testing/web-platform/tests/wai-aria/switch_checked_false-manual.html
new file mode 100644
index 0000000000..ac61802bdf
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/switch_checked_false-manual.html
@@ -0,0 +1,124 @@
+<!doctype html>
+<html>
+ <head>
+ <title>switch checked false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_CHECKED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSwitch"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "switch"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "0"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:switch"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "toggleswitch"
+ ],
+ [
+ "property",
+ "Toggle.ToggleState",
+ "is",
+ "Off"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "switch checked false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for switch checked false.</p>
+ <div id='test' role='switch' aria-checked='false' tabindex='0' class='switch'>power</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/switch_checked_mixed-manual.html b/testing/web-platform/tests/wai-aria/switch_checked_mixed-manual.html
new file mode 100644
index 0000000000..a674c7d7bc
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/switch_checked_mixed-manual.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<html>
+ <head>
+ <title>switch checked mixed</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_INDETERMINATE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_CHECKED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSwitch"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "switch"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "0"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:switch"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "toggleswitch"
+ ],
+ [
+ "property",
+ "Toggle.ToggleState",
+ "is",
+ "Off"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "switch checked mixed"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for switch checked mixed.</p>
+ <div id='test' role='switch' aria-checked='mixed' tabindex='0' class='switch'>power</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/switch_checked_true-manual.html b/testing/web-platform/tests/wai-aria/switch_checked_true-manual.html
new file mode 100644
index 0000000000..e23e723561
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/switch_checked_true-manual.html
@@ -0,0 +1,138 @@
+<!doctype html>
+<html>
+ <head>
+ <title>switch checked true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSwitch"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "switch"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:switch"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_CHECKED"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "controlPatterns",
+ "contains",
+ "Toggle"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "toggleswitch"
+ ],
+ [
+ "property",
+ "Toggle.ToggleState",
+ "is",
+ "On"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "switch checked true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for switch checked true.</p>
+ <div id='test' role='switch' aria-checked='true' tabindex='0'>power</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/switch_checked_undefined-manual.html b/testing/web-platform/tests/wai-aria/switch_checked_undefined-manual.html
new file mode 100644
index 0000000000..4f5399e88c
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/switch_checked_undefined-manual.html
@@ -0,0 +1,124 @@
+<!doctype html>
+<html>
+ <head>
+ <title>switch checked undefined</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_CHECKED"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSwitch"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "switch"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "0"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:switch"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "toggleswitch"
+ ],
+ [
+ "property",
+ "Toggle.ToggleState",
+ "is",
+ "Off"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "switch checked undefined"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for switch checked undefined.</p>
+ <div id='test' role='switch' tabindex='0' class='switch'>power</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/switch_checked_value_changes-manual.html b/testing/web-platform/tests/wai-aria/switch_checked_value_changes-manual.html
new file mode 100644
index 0000000000..b58e52fefb
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/switch_checked_value_changes-manual.html
@@ -0,0 +1,163 @@
+<!doctype html>
+<html>
+ <head>
+ <title>switch checked value changes</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "attribute" : "aria-checked",
+ "element" : "test",
+ "title" : "step 1",
+ "type" : "attribute",
+ "value" : "\"true\""
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKABLE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_CHECKED"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:checked"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "event",
+ "type",
+ "is",
+ "AXValueChanged"
+ ],
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSwitch"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "switch"
+ ],
+ [
+ "property",
+ "AXValue",
+ "is",
+ "1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:switch"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "checkable:true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_STATECHANGE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "toggleswitch"
+ ],
+ [
+ "property",
+ "Toggle.ToggleState",
+ "is",
+ "On"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "TogglePattern.ToggleStateProperty"
+ ]
+ ]
+ },
+ "title" : "step 2",
+ "type" : "test"
+ }
+ ],
+ "title" : "switch checked value changes"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for switch checked value changes.</p>
+ <div id='test' role='switch' aria-checked='false' tabindex='0' class='switch'>power</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/switch_readonly_false-manual.html b/testing/web-platform/tests/wai-aria/switch_readonly_false-manual.html
new file mode 100644
index 0000000000..e68b6bb0d2
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/switch_readonly_false-manual.html
@@ -0,0 +1,119 @@
+<!doctype html>
+<html>
+ <head>
+ <title>switch readonly false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSwitch"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "switch"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:switch"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "toggleswitch"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "switch readonly false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for switch readonly false.</p>
+ <div id="test" role="switch" aria-readonly="false">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/switch_readonly_true-manual.html b/testing/web-platform/tests/wai-aria/switch_readonly_true-manual.html
new file mode 100644
index 0000000000..605d2d0d9a
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/switch_readonly_true-manual.html
@@ -0,0 +1,119 @@
+<!doctype html>
+<html>
+ <head>
+ <title>switch readonly true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSwitch"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "switch"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "false"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:switch"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "toggleswitch"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "switch readonly true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for switch readonly true.</p>
+ <div id="test" role="switch" aria-readonly="true">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/switch_readonly_unspecified-manual.html b/testing/web-platform/tests/wai-aria/switch_readonly_unspecified-manual.html
new file mode 100644
index 0000000000..0fd582c0e9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/switch_readonly_unspecified-manual.html
@@ -0,0 +1,119 @@
+<!doctype html>
+<html>
+ <head>
+ <title>switch readonly unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_READ_ONLY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXCheckBox"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXSwitch"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "switch"
+ ],
+ [
+ "result",
+ "AXUIElementIsAttributeSettable(AXValue)",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "IA2_ROLE_TOGGLE_BUTTON"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:switch"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_EDITABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Button"
+ ],
+ [
+ "property",
+ "LocalizedControlType",
+ "is",
+ "toggleswitch"
+ ],
+ [
+ "property",
+ "Value.IsReadOnly",
+ "is",
+ "false"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "switch readonly unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for switch readonly unspecified.</p>
+ <div id="test" role="switch">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/tab_posinset_and_setsize-manual.html b/testing/web-platform/tests/wai-aria/tab_posinset_and_setsize-manual.html
new file mode 100644
index 0000000000..f27f485ac9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tab_posinset_and_setsize-manual.html
@@ -0,0 +1,189 @@
+<!doctype html>
+<html>
+ <head>
+ <title>tab posinset and setsize</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PAGE_TAB"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:3"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:7"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRadioButton"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "tab"
+ ],
+ [
+ "property",
+ "AXARIAPosInSet",
+ "is",
+ "3"
+ ],
+ [
+ "property",
+ "AXARIASetSize",
+ "is",
+ "7"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "true"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PAGETAB"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "posinset:3"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "setsize:7"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "similarItemsInGroup:7"
+ ],
+ [
+ "property",
+ "groupPosition",
+ "contains",
+ "positionInGroup:3"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PAGETAB"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "TabItem"
+ ],
+ [
+ "property",
+ "AriaProperties.posinset",
+ "is",
+ "3"
+ ],
+ [
+ "property",
+ "AriaProperties.setsize",
+ "is",
+ "7"
+ ],
+ [
+ "property",
+ "SelectionItem",
+ "isNot",
+ "IsSelected"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "tab posinset and setsize"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for tab posinset and setsize.</p>
+ <div role='tabpanel'>
+ <div role='tab' aria-selected='false'>Hello Mary</div>
+ <div role='tab' id='test' aria-selected='true' aria-posinset='3' aria-setsize='7'>Hello Bob</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/table_colcount_-1-manual.html b/testing/web-platform/tests/wai-aria/table_colcount_-1-manual.html
new file mode 100644
index 0000000000..2135f6ed8d
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/table_colcount_-1-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>table colcount -1</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:-1"
+ ],
+ [
+ "result",
+ "atk_table_get_n_columns()",
+ "is",
+ "-1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXARIAColumnCount",
+ "is",
+ "-1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:-1"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Table"
+ ],
+ [
+ "property",
+ "Table.ColumnCount",
+ "is",
+ "-1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "table colcount -1"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for table colcount -1.</p>
+ <div role="table" id="test" aria-colcount="-1">
+ <div role="row">
+ <div role="cell" aria-colindex="4" >test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/table_colcount_8-manual.html b/testing/web-platform/tests/wai-aria/table_colcount_8-manual.html
new file mode 100644
index 0000000000..1b8e0affdd
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/table_colcount_8-manual.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<html>
+ <head>
+ <title>table colcount 8</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:8"
+ ],
+ [
+ "result",
+ "atk_table_get_n_columns()",
+ "is",
+ "8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXARIAColumnCount",
+ "is",
+ "8"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:8"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Table"
+ ],
+ [
+ "property",
+ "Table.ColumnCount",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "table colcount 8"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for table colcount 8.</p>
+ <div role="table" id="test" aria-colcount="8">
+ <div role="row">
+ <div role="cell" aria-colindex="4">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/table_rowcount_-1-manual.html b/testing/web-platform/tests/wai-aria/table_rowcount_-1-manual.html
new file mode 100644
index 0000000000..5e7b5b8bf4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/table_rowcount_-1-manual.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<html>
+ <head>
+ <title>table rowcount -1</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowcount:-1"
+ ],
+ [
+ "result",
+ "atk_table_get_n_rows()",
+ "is",
+ "-1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXARIARowCount",
+ "contains",
+ "-1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "xml-roles:table"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowcount:-1"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Table"
+ ],
+ [
+ "property",
+ "Table.RowCount",
+ "is",
+ "-1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "table rowcount -1"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for table rowcount -1.</p>
+ <div role='table' id='test' aria-rowcount='-1' aria-colcount='2'>
+ <div role='row'>
+ <span role='cell'>
+ <button>hello</button>
+ </span>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/table_rowcount_3-manual.html b/testing/web-platform/tests/wai-aria/table_rowcount_3-manual.html
new file mode 100644
index 0000000000..5bfad69b24
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/table_rowcount_3-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>table rowcount 3</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowcount:3"
+ ],
+ [
+ "result",
+ "atk_table_get_n_rows()",
+ "is",
+ "3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXARIARowCount",
+ "is",
+ "3"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowcount:3"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Table"
+ ],
+ [
+ "property",
+ "Table.RowCount",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "table rowcount 3"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for table rowcount 3.</p>
+ <div role='table' id='test' aria-rowcount='3' aria-colcount='2'>
+ <div role='row'>
+ <span role='cell'>cheese</span>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/tablist_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/tablist_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..104668cbb9
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tablist_orientation_horizontal-manual.html
@@ -0,0 +1,142 @@
+<!doctype html>
+<html>
+ <head>
+ <title>tablist orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PAGE_TAB_LIST"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTabGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "tab group"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PAGETABLIST"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PAGETABLIST"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Tab"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "tablist orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for tablist orientation horizontal.</p>
+ <div role="tablist" aria-orientation="horizontal" id="test">
+ <div role="tab" tabindex="0">Tab1</div><div role="tab" tabindex="-1">Tab2</div>
+ </div>
+ <div role="tabpanel"></div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/tablist_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/tablist_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..001c2ee77b
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tablist_orientation_unspecified-manual.html
@@ -0,0 +1,136 @@
+<!doctype html>
+<html>
+ <head>
+ <title>tablist orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PAGE_TAB_LIST"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTabGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "tab group"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PAGETABLIST"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PAGETABLIST"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Tab"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "tablist orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for tablist orientation unspecified.</p>
+ <div role="tablist" id="test">
+ <div role="tab" tabindex="0">Tab1</div><div role="tab" tabindex="-1">Tab2</div>
+ </div>
+ <div role="tabpanel"></div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/tablist_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/tablist_orientation_vertical-manual.html
new file mode 100644
index 0000000000..f6fe16e895
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tablist_orientation_vertical-manual.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<html>
+ <head>
+ <title>tablist orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_PAGE_TAB_LIST"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTabGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "tab group"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_PAGETABLIST"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Tab"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "selection pattern"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "tablist orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for tablist orientation vertical.</p>
+ <div role="tablist" aria-orientation="vertical" id="test">
+ <div role="tab" tabindex="0">Tab1</div><div role="tab" tabindex="-1">Tab2</div>
+ </div>
+ <div role="tabpanel"></div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/term_role-manual.html b/testing/web-platform/tests/wai-aria/term_role-manual.html
new file mode 100644
index 0000000000..ac5030df95
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/term_role-manual.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<html>
+ <head>
+ <title>term role</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_DESCRIPTION_TERM"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Text"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Hypertext"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXGroup"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXTerm"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "term"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TERM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "ROLE_SYSTEM_READONLY"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Text"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "term role"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for term role.</p>
+ <div role="term" id='test' aria-describedby="dfn">
+ w3c
+ </div>
+ <div role="definition" id="dfn">
+ World Wide Web Consortium
+ </div>
+
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/textbox_placeholder-manual.html b/testing/web-platform/tests/wai-aria/textbox_placeholder-manual.html
new file mode 100644
index 0000000000..fdf0635be6
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/textbox_placeholder-manual.html
@@ -0,0 +1,134 @@
+<!doctype html>
+<html>
+ <head>
+ <title>textbox placeholder</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_ENTRY"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "EditableText"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "placeholder-text:DD/MM/YYYY"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTextField"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "text field"
+ ],
+ [
+ "property",
+ "AXPlaceholderValue",
+ "is",
+ "DD/MM/YYYY"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_SINGLE_LINE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "placeholder-text:DD/MM/YYYY"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TEXT"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Edit"
+ ],
+ [
+ "result",
+ "AriaProperties.placeholder",
+ "is",
+ "DD/MM/YYYY"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "textbox placeholder"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for textbox placeholder.</p>
+ <div contenteditable="true" role="textbox" aria-placeholder="DD/MM/YYYY" id="test">
+ "DD/MM/YYYY"
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/toolbar_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/toolbar_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..1b8fda8dd6
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/toolbar_orientation_horizontal-manual.html
@@ -0,0 +1,122 @@
+<!doctype html>
+<html>
+ <head>
+ <title>toolbar orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOOL_BAR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXToolbar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "toolbar"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TOOLBAR"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TOOLBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ToolBar"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "toolbar orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for toolbar orientation horizontal.</p>
+ <div role="toolbar" aria-orientation="horizontal" id="test">
+ <button value="b1"> <button value="b2">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/toolbar_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/toolbar_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..4607511874
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/toolbar_orientation_unspecified-manual.html
@@ -0,0 +1,122 @@
+<!doctype html>
+<html>
+ <head>
+ <title>toolbar orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOOL_BAR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXToolbar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "toolbar"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TOOLBAR"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TOOLBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ToolBar"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "toolbar orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for toolbar orientation unspecified.</p>
+ <div role="toolbar" id="test">
+ <button value="b1"> <button value="b2">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/toolbar_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/toolbar_orientation_vertical-manual.html
new file mode 100644
index 0000000000..792952d323
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/toolbar_orientation_vertical-manual.html
@@ -0,0 +1,122 @@
+<!doctype html>
+<html>
+ <head>
+ <title>toolbar orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TOOL_BAR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXToolbar"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "toolbar"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TOOLBAR"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_TOOLBAR"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "ToolBar"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "toolbar orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for toolbar orientation vertical.</p>
+ <div role="toolbar" aria-orientation="vertical" id="test">
+ <button value="b1"> <button value="b2">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/tools/convert_wiki.pl b/testing/web-platform/tests/wai-aria/tools/convert_wiki.pl
new file mode 100644
index 0000000000..d3415f2653
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tools/convert_wiki.pl
@@ -0,0 +1,648 @@
+#!/usr/bin/perl
+#
+# convert_wiki.pl - Transform an old-style wiki into the new format
+#
+# This script assumes that a wiki has testable statement entries
+# with varying lemgth lines. Those lines will be converted into
+# the format described by the specification at
+# https://spec-ops.github.io/atta-api/index.html
+#
+# usage: convert_wiki.pl -f file | -w wiki_title -o outFile
+
+use strict;
+
+use IO::String ;
+use JSON ;
+use MediaWiki::API ;
+use Getopt::Long;
+
+my @apiNames = qw(UIA MSAA ATK IAccessible2 AXAPI);
+
+# dir is determined based upon the short name of the spec and is defined
+# by the input or on the command line
+
+my $file = undef ;
+my $spec = undef ;
+my $wiki_title = undef ;
+my $dir = undef;
+my $outFile = undef;
+
+my $result = GetOptions(
+ "f|file=s" => \$file,
+ "w|wiki=s" => \$wiki_title,
+ "s|spec=s" => \$spec,
+ "o|output=s" => \$outFile);
+
+my $wiki_config = {
+ "api_url" => "https://www.w3.org/wiki/api.php"
+};
+
+my %specs = (
+ "aria11" => {
+ title => "ARIA_1.1_Testable_Statements",
+ specURL => "https://www.w3.org/TR/wai-aria11"
+ },
+ "svg" => {
+ title => "SVG_Accessibility/Testing/Test_Assertions_with_Tables_for_ATTA",
+ specURL => "https://www.w3.org/TR/svg-aam-1.0/"
+ }
+);
+
+my $io ;
+our $theSpecURL = "";
+
+if ($spec) {
+ $wiki_title = $specs{$spec}->{title};
+ $theSpecURL = $specs{$spec}->{specURL};
+}
+
+if ($wiki_title) {
+ my $MW = MediaWiki::API->new( $wiki_config );
+ my $page = $MW->get_page( { title => $wiki_title } );
+ my $theContent = $page->{'*'};
+ $io = IO::String->new($theContent);
+} elsif ($file) {
+ open($io, "<", $file) || die("Failed to open $file: " . $@);
+} else {
+ usage() ;
+}
+
+my $outH ;
+if (defined $outFile) {
+ open($outH, ">", $outFile) || die("Failed to create file $outFile: $@");
+} else {
+ $outH = new IO::Handle;
+ $outH->fdopen(fileno(STDOUT), "w");
+}
+
+
+# Now let's walk through the content and spit it back out
+# transformed
+#
+
+# iterate over the content
+
+# my $io ;
+# open($io, "<", "raw") ;
+
+my $state = 0; # between items
+my $theCode = "";
+my $theAttributes = {};
+my $theAsserts = {} ;
+my $theAssertCount = 0;
+my $theAPI = "";
+my $typeRows = 0;
+my $theType = "";
+my $theName = "";
+my $theRef = "";
+
+my $before = "" ;
+my $after = "" ;
+
+my @errors = () ;
+my $linecount = 0;
+
+while (<$io>) {
+ $linecount++;
+ # look for state
+ if ($state == 0) {
+ if (scalar(keys(%$theAsserts))) {
+ # we were in an item; dump it
+ print $outH dump_table($theAsserts) ;
+ $theAsserts = {};
+ }
+ print $outH $_;
+ }
+ if (m/^\{\|/) {
+ # table started
+ $state = 4;
+ $theAPI = "";
+ }
+ if ($state == 4) {
+ if (m/^\|-/) {
+ if ($theAPI
+ && exists($theAsserts->{$theAPI}->[$theAssertCount])
+ && scalar(@{$theAsserts->{$theAPI}->[$theAssertCount]})) {
+ $theAssertCount++;
+ }
+ # start of a table row
+ if ($theType ne "" && $typeRows) {
+ # we are still processing items for a type
+ $typeRows--;
+ # populate the first cell
+ $theAsserts->{$theAPI}->[$theAssertCount] = [ $theType ] ;
+ } else {
+ $theType = "";
+ }
+ } elsif (m/^\|\}/) {
+ # ran out of table
+ $state = 0;
+ } elsif (m/^\|rowspan="*([0-9])"*\|(.*)$/) {
+ # someone put a rowspan in here.. is ht an API?
+ my $rows = $1;
+ my $theString = $2;
+ $theString =~ s/ +$//;
+ $theString =~ s/^ +//;
+ $theString = "IAccessible2" if ($theString eq "IA2") ;
+ if (grep { $_ eq $theString } @apiNames) {
+ $theAssertCount = 0;
+ # this is a new API section
+ $theAPI = $theString ;
+ $theAsserts->{$theAPI} = [ [] ] ;
+ $theType = "";
+ } else {
+ # nope, this is a multi-row type
+ $theType = $theString;
+ $typeRows = $rows;
+ $typeRows--;
+ # populate the first cell
+ if ($theAPI
+ && exists($theAsserts->{$theAPI}->[$theAssertCount])
+ && scalar(@{$theAsserts->{$theAPI}->[$theAssertCount]})) {
+ $theAssertCount++;
+ }
+ $theAsserts->{$theAPI}->[$theAssertCount] = [ $theType ] ;
+ }
+ } elsif (m/^\|note/) {
+ # there is a note in the table... throw it out
+ # and the next line too
+ my $l = <$io>;
+ } elsif (m/^\|(MSAA|UIA|IA2|IAccessible2|ATK|AXAPI) *$/) {
+ # they FORGOT a rowspan on an API. That means there is only 1
+ # row
+ my $theString = $1;
+ $theString =~ s/ +$//;
+ $theString =~ s/^ +//;
+ $theString = "IAccessible2" if ($theString eq "IA2") ;
+ if (grep { $_ eq $theString } @apiNames) {
+ $theAssertCount = 0;
+ # this is a new API section
+ $theAPI = $theString ;
+ $theAsserts->{$theAPI} = [ [] ] ;
+ $theType = "";
+ } else {
+ push(@errors, "Bad API Name at $linecount: $theString");
+ }
+ } elsif (m/^\|(.*)$/) {
+ my $item = $1;
+ $item =~ s/^ *//;
+ $item =~ s/ *$//;
+ $item =~ s/^['"]//;
+ $item =~ s/['"]$//;
+ # add into the data structure for the API
+ if (!exists $theAsserts->{$theAPI}->[$theAssertCount]) {
+ $theAsserts->{$theAPI}->[$theAssertCount] = [ $item ] ;
+ } else {
+ push(@{$theAsserts->{$theAPI}->[$theAssertCount]}, $item);
+ }
+ }
+ next;
+ }
+};
+
+if ($state == 0) {
+ if (scalar(keys(%$theAsserts))) {
+ # we were in an item; dump it
+ print $outH dump_table($theAsserts) ;
+ }
+}
+
+if (@errors) {
+ print "There were the following errors:\n";
+ foreach my $err (@errors) {
+ print $err . "\n";
+ }
+}
+
+exit 0;
+
+
+sub dump_table() {
+ my $asserts = shift;
+
+ if (!scalar(keys(%$asserts)) ) {
+ # no actual assertions
+ return "";
+ }
+
+ my $output = "" ;
+
+ my @keywords = qw(property result event);
+
+ foreach my $API (sort(keys(%$asserts))) {
+ # looking at each API in turn
+ my $ref = $asserts->{$API};
+ my $rowcount = scalar(@$ref) ;
+ # $output .= "|-\n|rowspan=$count|$API\n" ;
+ # now we are in the assertions; special case each API
+ my @conditions = @$ref;
+ for (my $i = 0; $i < scalar(@conditions); $i++) {
+ my (@new, @additional) ;
+ if ($i) {
+ $output .= "|-\n";
+ }
+ if ($API eq "ATK") {
+ my $start = 0;
+ my $assert = "is";
+ if ($conditions[$i]->[0] =~ m/^NOT/) {
+ $start = 1;
+ $assert = "isNot";
+ }
+
+ if ($conditions[$i]->[$start] =~ m/^ROLE_/) {
+ $new[0] = "property";
+ $new[1] = "role";
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start];
+ } elsif ($conditions[$i]->[$start] =~ m/^xml-roles/) {
+ $new[0] = "property";
+ $new[1] = "role";
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ } elsif ($conditions[$i]->[$start] =~ m/^description/) {
+ my $id = $conditions[$i]->[$start+1];
+ $new[0] = "property";
+ $new[1] = "description";
+ $new[2] = $assert;
+ $new[3] = $id;
+ push(@{$additional[0]}, ("relation", "RELATION_DESCRIBED_BY", $assert, $id));
+ push(@{$additional[1]}, ("relation", "RELATION_DESCRIPTION_FOR", $assert, "test"));
+ } elsif ($conditions[$i]->[$start] =~ m/not in accessibility tree/i) {
+ @new = qw(property accessible exists false);
+ } elsif ($conditions[$i]->[$start] =~ m/^RELATION/) {
+ $new[0] = "relation";
+ $new[1] = $conditions[$i]->[$start];
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ } elsif ($conditions[$i]->[$start] =~ m/(.*) interface/i) {
+ $new[0] = "property";
+ $new[1] = "interfaces";
+ $new[3] = $1;
+ if ($conditions[$i]->[$start+1] ne '<shown>'
+ && $conditions[$i]->[$start+1] !~ m/true/i ) {
+ $assert = "doesNotContain";
+ } else {
+ $assert = "contains";
+ }
+ $new[2] = $assert;
+ } elsif ($conditions[$i]->[$start] eq "object" || $conditions[$i]->[$start] eq "attribute" ) {
+ $new[0] = "property";
+ $new[1] = "objectAttributes";
+ my $val = $conditions[$i]->[2];
+ $val =~ s/"//g;
+ $new[3] = $conditions[$i]->[1] . ":" . $val;
+ if ($conditions[$i]->[1] eq "not exposed"
+ || $conditions[$i]->[2] eq "false") {
+ $new[2] = "doesNotContain";
+ } else {
+ $new[2] = "contains";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/^STATE_/) {
+ $new[0] = "property";
+ $new[1] = "states";
+ $new[3] = $conditions[$i]->[$start];
+ if ($assert eq "true") {
+ $new[2] = "contains";
+ } else {
+ $new[2] = "doesNotContain";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/^object attribute (.*)/) {
+ my $name = $1;
+ $new[0] = "property";
+ $new[0] = "objectAttributes";
+ my $val = $conditions[$i]->[1];
+ $val =~ s/"//g;
+ if ($val eq "not exposed" || $val eq "not mapped") {
+ $new[3] = $name;
+ $new[2] = "doesNotContain";
+ } else {
+ $new[3] = $name . ":" . $val;
+ $new[2] = "contains";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/^name/) {
+ my $name = $conditions[$i]->[1];
+ my $cond = "is" ;
+ if ($name eq "<empty>" ) {
+ $cond = "empty";
+ $name = "true"
+ } elsif ($name eq "<not empty>") {
+ $cond = "empty";
+ $name = "false";
+ }
+ $new[0] = "property";
+ $new[1] = "name";
+ $new[2] = $cond;
+ $new[3] = $name;
+ } else {
+ @new = @{$conditions[$i]};
+ if ($conditions[$i]->[2] eq '<shown>') {
+ $new[2] = "contains";
+ }
+ }
+ $conditions[$i] = \@new;
+ } elsif ($API eq "UIA") {
+ my $start = 0;
+ my $assert = "is";
+ if ($conditions[$i]->[$start] =~ m/\./) {
+ my $val = $conditions[$i]->[$start+1];
+ $val =~ s/"//g;
+ $val =~ s/'//g;
+ $new[0] = "result";
+ $new[1] = $conditions[$i]->[$start];
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ } elsif ($conditions[$i]->[$start] =~ m/not in accessibility tree/i) {
+ @new = qw(property accessible exists false);
+ } elsif ($conditions[$i]->[$start] =~ m/^(AriaProperties|Toggle|ExpandCollapse)/) {
+ my $name = $conditions[$i]->[1];
+ $new[0] = "property";
+ $new[1] = $1;
+ my $val = $conditions[$i]->[2];
+ $val =~ s/"//g;
+ if ($val eq "not exposed" || $val eq "not mapped") {
+ $new[3] = $name;
+ $new[2] = "doesNotContain";
+ } else {
+ $new[3] = $name . ":" . $val;
+ $new[2] = "contains";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/^LabeledBy/i) {
+ $new[0] = "property";
+ $new[1] = $conditions[$i]->[$start];
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ } elsif ($conditions[$i]->[$start] =~ m/^Name/) {
+ my $name = $conditions[$i]->[1];
+ my $cond = "is" ;
+ if ($name eq "<empty>" ) {
+ $cond = "empty";
+ $name = "true"
+ } elsif ($name eq "<not empty>") {
+ $cond = "empty";
+ $name = "false";
+ }
+ $new[0] = "property";
+ $new[1] = "Name";
+ $new[2] = $cond;
+ $new[3] = $name;
+ } elsif ($conditions[$i]->[$start] =~ m/^TBD/) {
+ $new[0] = "TBD";
+ $new[1] = $new[2] = $new[3] = "";
+ } else {
+ if ($conditions[$i]->[1] ne '<shown>'
+ && $conditions[$i]->[1] !~ m/true/i ) {
+ $assert = "isNot";
+ } else {
+ $assert = "is";
+ }
+ $new[0] = "property";
+ $new[1] = $conditions[$i]->[$start];
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ }
+ } elsif ($API eq "MSAA") {
+ my $start = 0;
+ my $assert = "is";
+ if ($conditions[$i]->[0] =~ m/^NOT/) {
+ $start = 1;
+ $assert = "isNot";
+ }
+
+ if ($conditions[$i]->[$start] =~ m/^role/) {
+ $new[0] = "property";
+ $new[1] = "role";
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ } elsif ($conditions[$i]->[$start] =~ m/^xml-roles/) {
+ $new[0] = "property";
+ $new[1] = "role";
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ } elsif ($conditions[$i]->[$start] =~ m/not in accessibility tree/i) {
+ @new = qw(property accessible exists false);
+ } elsif ($conditions[$i]->[$start] =~ m/^(accName|accDescription)/) {
+ my $name = $conditions[$i]->[$start+1];
+ my $cond = "is" ;
+ if ($name eq "<empty>" ) {
+ $cond = "empty";
+ $name = "true"
+ } elsif ($name eq "<not empty>") {
+ $cond = "empty";
+ $name = "false";
+ }
+ $new[0] = "property";
+ $new[1] = $conditions[$i]->[$start];
+ $new[2] = $cond;
+ $new[3] = $name;
+ } elsif ($conditions[$i]->[$start] =~ m/^ROLE_/) {
+ $new[0] = "property";
+ $new[1] = "role";
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start];
+ } elsif ($conditions[$i]->[$start] =~ m/^(STATE_.*) *([^ ]*)/) {
+ $new[0] = "property";
+ $new[1] = "states";
+ $new[3] = $1;
+ if ($2 && $2 eq "cleared") {
+ print "MATCHED $1, $2\n";
+ $new[2] = "doesNotContain";
+ } else {
+ $new[2] = "contains";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/^TBD/) {
+ $new[0] = "TBD";
+ $new[1] = $new[2] = $new[3] = "";
+ }
+ } elsif ($API eq "IAccessible2") {
+ my $start = 0;
+ my $assert = "is";
+ if ($conditions[$i]->[0] =~ m/^NOT/) {
+ $start = 1;
+ $assert = "isNot";
+ }
+ if ($conditions[$i]->[$start] =~ m/^IA2_ROLE_/) {
+ $new[0] = "property";
+ $new[1] = "role";
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start];
+ } elsif ($conditions[$i]->[$start] =~ m/not in accessibility tree/i) {
+ @new = qw(property accessible exists false);
+ } elsif ($conditions[$i]->[$start] =~ m/^IA2_RELATION_/) {
+ $new[0] = "relation";
+ $new[1] = $conditions[$i]->[$start];
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ } elsif ($conditions[$i]->[$start] =~ m/^IA2_STATE_/) {
+ $new[0] = "property";
+ $new[1] = "states";
+ $new[3] = $conditions[$i]->[$start];
+ if ($assert eq "true") {
+ $new[2] = "contains";
+ } else {
+ $new[2] = "doesNotContain";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/^IA2_/) {
+ $new[0] = "property";
+ $new[1] = "states";
+ $new[3] = $conditions[$i]->[$start];
+ if ($assert eq "true") {
+ $new[2] = "contains";
+ } else {
+ $new[2] = "doesNotContain";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/(IAccessibleTable2)/i) {
+ $new[0] = "property";
+ $new[1] = "interfaces";
+ $new[3] = $1;
+ if ($conditions[$i]->[$start+1] ne '<shown>'
+ && $conditions[$i]->[$start+1] !~ m/true/i ) {
+ $assert = "doesNotContain";
+ } else {
+ $assert = "contains";
+ }
+ $new[2] = $assert;
+ } elsif ($conditions[$i]->[$start] =~ m/(.*) interface/i) {
+ $new[0] = "property";
+ $new[1] = "interfaces";
+ $new[3] = $1;
+ if ($conditions[$i]->[$start+1] ne '<shown>'
+ && $conditions[$i]->[$start+1] !~ m/true/i ) {
+ $assert = "doesNotContain";
+ } else {
+ $assert = "contains";
+ }
+ $new[2] = $assert;
+ } elsif ($conditions[$i]->[$start] =~ m/(.*)\(\)/) {
+ $new[0] = "result";
+ $new[1] = $conditions[$i]->[$start];
+ my $val = $conditions[$i]->[2];
+ $val =~ s/"//g;
+ $new[3] = $conditions[$i]->[1] . ":" . $val;
+ if ($conditions[$i]->[1] eq "not exposed"
+ || $conditions[$i]->[2] eq "false") {
+ $new[2] = "doesNotContain";
+ } else {
+ $new[2] = "contains";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/(.*localizedExtendedRole)/) {
+ $new[0] = "result";
+ $new[1] = $conditions[$i]->[$start];
+ my $val = $conditions[$i]->[2];
+ $val =~ s/"//g;
+ $new[3] = $conditions[$i]->[1] . ":" . $val;
+ if ($conditions[$i]->[1] eq "not exposed"
+ || $conditions[$i]->[2] eq "false") {
+ $new[2] = "doesNotContain";
+ } else {
+ $new[2] = "contains";
+ }
+ } elsif ($conditions[$i]->[$start] eq "object" || $conditions[$i]->[$start] eq "attribute" ) {
+ $new[0] = "property";
+ $new[1] = "objectAttributes";
+ my $val = $conditions[$i]->[2];
+ $val =~ s/"//g;
+ $new[3] = $conditions[$i]->[1] . ":" . $val;
+ if ($conditions[$i]->[1] eq "not exposed"
+ || $conditions[$i]->[2] eq "false") {
+ $new[2] = "doesNotContain";
+ } else {
+ $new[2] = "contains";
+ }
+ } elsif ($conditions[$i]->[$start] =~ m/^object attribute (.*)/) {
+ my $name = $1;
+ $new[0] = "property";
+ $new[1] = "objectAttributes";
+ my $val = $conditions[$i]->[1];
+ $val =~ s/"//g;
+ if ($val eq "not exposed" || $val eq "not mapped") {
+ $new[3] = $name;
+ $new[2] = "doesNotContain";
+ } else {
+ $new[3] = $name . ":" . $val;
+ $new[2] = "contains";
+ }
+ } else {
+ @new = @{$conditions[$i]};
+ if ($conditions[$i]->[2] eq '<shown>') {
+ $new[2] = "contains";
+ }
+ }
+ $conditions[$i] = \@new;
+ } elsif ($API eq "AXAPI") {
+ my $start = 0;
+ my $assert = "is";
+ if ($conditions[$i]->[0] =~ m/^NOT/) {
+ $start = 1;
+ $assert = "isNot";
+ }
+ if ($conditions[$i]->[$start] =~ m/^AXElementBusy/) {
+ if ($conditions[$i]->[$start+1] =~ m/yes/i) {
+ $new[3] = "true";
+ } else {
+ $new[3] = "false";
+ }
+ $new[0] = "property";
+ $new[1] = $conditions[$i]->[$start];
+ $new[2] = $assert;
+ } elsif ($conditions[$i]->[$start] =~ m/not in accessibility tree/i) {
+ @new = qw(property accessible exists false);
+ } elsif ($conditions[$i]->[$start] =~ m/^AX/) {
+ $new[0] = "property";
+ $new[1] = $conditions[$i]->[$start];
+ $new[2] = $assert;
+ $new[3] = $conditions[$i]->[$start+1];
+ } elsif ($conditions[$i]->[$start] =~ m/^TBD/) {
+ $new[0] = "TBD";
+ $new[1] = $new[2] = $new[3] = "";
+ } else {
+ if ($conditions[$i]->[1] ne '<shown>'
+ && $conditions[$i]->[1] !~ m/true/i ) {
+ $assert = "isNot";
+ } else {
+ $assert = "is";
+ }
+ $new[0] = "result";
+ $new[1] = $conditions[$i]->[0];
+ $new[2] = $assert;
+ $new[3] = "true";
+ }
+ }
+ if ($i == 0) {
+ if (scalar(@additional)) {
+ $rowcount += scalar(@additional);
+ }
+ $output .= "|-\n|rowspan=$rowcount|$API\n";
+ }
+ foreach my $row (@new) {
+ $output .= "|$row\n";
+ }
+ if (scalar(@additional)) {
+ foreach my $arow (@additional) {
+ $output .= "|-\n" ;
+ foreach my $aItem (@$arow) {
+ $output .= "|$aItem\n";
+ }
+ }
+ }
+ }
+ }
+ $output .= "|}\n";
+
+ return $output;
+}
+
+sub usage() {
+ print STDERR q(usage: make_tests.pl -f file | -w wiki_title | -s spec [-n -v -d dir ]
+
+ -s specname - the name of a spec known to the system
+ -w wiki_title - the TITLE of a wiki page with testable statements
+ -f file - the file from which to read
+ -o outFile - the file to fill with the converted wiki; defaults to STDOUT
+
+ -n - do nothing
+ -v - be verbose
+ );
+ exit 1;
+}
+
+# vim: ts=2 sw=2 ai:
diff --git a/testing/web-platform/tests/wai-aria/tools/make_tests.pl b/testing/web-platform/tests/wai-aria/tools/make_tests.pl
new file mode 100644
index 0000000000..01cb5b0b85
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tools/make_tests.pl
@@ -0,0 +1,544 @@
+#!/usr/bin/perl
+#
+# make_tests.pl - generate WPT test cases from the testable statements wiki
+#
+# This script assumes that a wiki has testable statement entries
+# in the format described by the specification at
+# https://spec-ops.github.io/atta-api/index.html
+#
+# usage: make_tests.pl -f file | -w wiki_title | -s spec -d dir
+
+use strict;
+
+use IO::String ;
+use JSON ;
+use MediaWiki::API ;
+use Getopt::Long;
+
+my %specs = (
+ "aria11" => {
+ title => "ARIA_1.1_Testable_Statements",
+ specURL => "https://www.w3.org/TR/wai-aria11/",
+ dir => "aria11"
+ },
+ "svg" => {
+ title => "SVG_Accessibility/Testing/Test_Assertions_with_Tables_for_ATTA",
+ specURL => "https://www.w3.org/TR/svg-aam-1.0/",
+ dir => "svg",
+ fragment => '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">%code%</svg>'
+ }
+);
+
+my @apiNames = qw(UIA MSAA ATK IAccessible2 AXAPI);
+my $apiNamesRegex = "(" . join("|", @apiNames) . ")";
+
+# the suffix to attach to the automatically generated test case names
+my $theSuffix = "-manual.html";
+
+# dir is determined based upon the short name of the spec and is defined
+# by the input or on the command line
+
+my $file = undef ;
+my $spec = undef ;
+my $wiki_title = undef ;
+my $dir = undef;
+my $theSpecFragment = "%code%";
+my $preserveWiki = "";
+my $fake = 0;
+
+my $result = GetOptions(
+ "f|file=s" => \$file,
+ "p=s" => \$preserveWiki,
+ "w|wiki=s" => \$wiki_title,
+ "s|spec=s" => \$spec,
+ "f|fake" => \$fake,
+ "d|dir=s" => \$dir) || usage();
+
+my $wiki_config = {
+ "api_url" => "https://www.w3.org/wiki/api.php"
+};
+
+my $io ;
+our $theSpecURL = "";
+
+if ($spec) {
+ print "Processing spec $spec\n";
+ $wiki_title = $specs{$spec}->{title};
+ $theSpecURL = $specs{$spec}->{specURL};
+ if (!$dir) {
+ $dir = "../" . $specs{$spec}->{dir};
+ }
+ $theSpecFragment = $specs{$spec}->{fragment};
+}
+
+if (!$dir) {
+ $dir = "../raw";
+}
+
+if (!-d $dir) {
+ print STDERR "No such directory: $dir\n";
+ exit 1;
+}
+
+if ($file) {
+ open($io, "<", $file) || die("Failed to open $file: " . $@);
+} elsif ($wiki_title) {
+ my $MW = MediaWiki::API->new( $wiki_config );
+
+ $MW->{config}->{on_error} = \&on_error;
+
+ sub on_error {
+ print "Error code: " . $MW->{error}->{code} . "\n";
+ print $MW->{error}->{stacktrace}."\n";
+ die;
+ }
+ my $page = $MW->get_page( { title => $wiki_title } );
+ my $theContent = $page->{'*'};
+ print "Loaded " . length($theContent) . " from $wiki_title\n";
+ if ($preserveWiki) {
+ if (open(OUTPUT, ">$preserveWiki")) {
+ print OUTPUT $theContent;
+ close OUTPUT;
+ print "Wiki preserved in $preserveWiki\n";
+ exit 0;
+ } else {
+ print "Failed to create $preserveWiki. Terminating.\n";
+ exit 1;
+ }
+ }
+ $io = IO::String->new($theContent);
+} else {
+ usage() ;
+}
+
+
+
+# Now let's walk through the content and build a test page for every item
+#
+
+# iterate over the content
+
+# my $io ;
+# open($io, "<", "raw") ;
+
+# data structure:
+#
+# steps is a list of steps to be performed.
+# Each step is an object that has a type property and other properties based upon that type.
+#
+# Types include:
+#
+# 'test' - has a property for each ATAPI for which there are tests
+# 'attribute' - has a property for the target id, attribute name, and value
+# 'event' - has a property for the target id and event name
+my $state = 0; # between items
+my $theStep = undef;
+my $current = "";
+my $theCode = "";
+my $theAttributes = {};
+my @steps ;
+my $theAsserts = {} ;
+my $theAssertCount = 0;
+my $theAPI = "";
+my $typeRows = 0;
+my $theType = "";
+my $theName = "";
+my $theRef = "";
+my $lineCounter = 0;
+my $skipping = 0;
+
+our $testNames = {} ;
+
+while (<$io>) {
+ if (m/<!-- END OF TESTS -->/) {
+ last;
+ }
+ $lineCounter++;
+ # look for state
+ if (m/^SpecURL: (.*)$/) {
+ $theSpecURL = $1;
+ $theSpecURL =~ s/^ *//;
+ $theSpecURL =~ s/ *$//;
+ }
+ if ($state == 5 && m/^; \/\/ (.*)/) {
+ # we found another test inside a block
+ # we were in an item; dump it
+ build_test($current, $theAttributes, $theCode, \@steps, $theSpecFragment) ;
+ # print "Finished $current and new subblock $1\n";
+ $state = 1;
+ $theAttributes = {} ;
+ $theAPI = "";
+ @steps = ();
+ $theCode = "";
+ $theAsserts = undef;
+ $theName = "";
+ } elsif (m/^=== +(.*[^ ]) +===/) {
+ if ($state != 0) {
+ if ($skipping) {
+ print STDERR "Flag on assertion $current; skipping\n";
+ } else {
+ # we were in an item; dump it
+ build_test($current, $theAttributes, $theCode, \@steps, $theSpecFragment) ;
+ # print "Finished $current\n";
+ }
+ }
+ $state = 1;
+ $current = $1;
+ $theAttributes = {} ;
+ @steps = ();
+ $theCode = "";
+ $theAsserts = undef;
+ $theAPI = "";
+ $theName = "";
+ if ($current =~ m/\(/) {
+ # there is a paren in the name -skip it
+ $skipping = 1;
+ } else {
+ $skipping = 0;
+ }
+ }
+
+ if ($state == 1) {
+ if (m/<pre>/) {
+ # we are now in the code block
+ $state = 2;
+ next;
+ } elsif (m/==== +(.*) +====/) {
+ # we are in some other block
+ $theName = lc($1);
+ $theAttributes->{$theName} = "";
+ next;
+ }
+ if (m/^Reference: +(.*)$/) {
+ $theAttributes->{reference} = $theSpecURL . "#" . $1;
+ } elsif ($theName ne "") {
+ # accumulate whatever was in the block under the data for it
+ chomp();
+ $theAttributes->{$theName} .= $_;
+ } elsif (m/TODO/) {
+ $state = 0;
+ }
+ }
+
+ if ($state == 2) {
+ if (m/<\/pre>/) {
+ # we are done with the code block
+ $state = 3;
+ } else {
+ if (m/^\s/ && !m/if given/) {
+ # trim any trailing whitespace
+ $theCode =~ s/ +$//;
+ $theCode =~ s/\t/ /g;
+ $theCode .= $_;
+ # In MediaWiki, to display & symbol escapes as literal text, one
+ # must use "&amp;&" for the "&" character. We need to undo that.
+ $theCode =~ s/&amp;(\S)/&$1/g;
+ }
+ }
+ } elsif ($state == 3) {
+ # look for a table
+ if (m/^\{\|/) {
+ # table started
+ $state = 4;
+ }
+ } elsif ($state == 4) {
+ if (m/^\|-/) {
+ if ($theAPI
+ && exists($theAsserts->{$theAPI}->[$theAssertCount])
+ && scalar(@{$theAsserts->{$theAPI}->[$theAssertCount]})) {
+ $theAssertCount++;
+ }
+ # start of a table row
+ if ($theType ne "" && $typeRows) {
+ # print qq($theType typeRows was $typeRows\n);
+ # we are still processing items for a type
+ $typeRows--;
+ # populate the first cell
+ $theAsserts->{$theAPI}->[$theAssertCount] = [ $theType ] ;
+ } else {
+ $theType = "";
+ }
+ } elsif (m/^\|\}/) {
+ # ran out of table
+ $state = 5;
+ # adding processing for additional block types
+ # a colspan followed by a keyword triggers a start
+ # so |colspan=5|element triggers a new collection
+ # |colspan=5|attribute triggers the setting of an attribute
+ } elsif (m/^\|colspan="*([0-9])"*\|([^ ]+) (.*)$/) {
+ my $type = $2;
+ my $params = $3;
+
+ my $obj = {} ;
+ if ($type eq "attribute") {
+ if ($params =~ m/([^:]+):([^ ]+) +(.*)$/) {
+ $obj = {
+ type => $type,
+ element => $1,
+ attribute => $2,
+ value => $3
+ };
+ $theStep = undef;
+ push(@steps, $obj);
+ } else {
+ print STDERR "Malformed attribute instruction at line $lineCounter: " . $_ . "\n";
+ }
+ } elsif ($type eq "event") {
+ if ($params =~ m/([^:]+):([^ ]+).*$/) {
+ $obj = {
+ type => $type,
+ element => $1,
+ value => $2
+ };
+ $theStep = undef;
+ push(@steps, $obj);
+ } else {
+ print STDERR "Malformed event instruction at line $lineCounter: " . $_ . "\n";
+ }
+ } elsif ($type eq "element") {
+ $obj = {
+ type => "test",
+ element => $3
+ };
+ push(@steps, $obj);
+ $theStep = scalar(@steps) - 1;
+ $theAsserts = $steps[$theStep];
+ } else {
+ print STDERR "Unknown operation type: $type at line " . $lineCounter . "; skipping.\n";
+ }
+ } elsif (m/($apiNamesRegex)$/) {
+ my $theString = $1;
+ $theString =~ s/ +$//;
+ $theString =~ s/^ +//;
+ if ($theString eq "IA2") {
+ $theString = "IAccessible2" ;
+ }
+ my $rows = 1;
+ if (m/^\|rowspan="*([0-9])"*\|(.*)$/) {
+ $rows = $1
+ }
+ if (grep { $_ eq $theString } @apiNames) {
+ # we found an API name - were we already processing assertions?
+ if (!$theAsserts) {
+ # nope - now what?
+ $theAsserts = {
+ type => "test",
+ element => "test"
+ };
+ push(@steps, $theAsserts);
+ }
+ $theAssertCount = 0;
+ # this is a new API section
+ $theAPI = $theString ;
+ $theAsserts->{$theAPI} = [ [] ] ;
+ $theType = "";
+ } else {
+ # this is a multi-row type
+ $theType = $theString;
+ $typeRows = $rows;
+ # print qq(Found multi-row $theString for $theAPI with $typeRows rows\n);
+ $typeRows--;
+ # populate the first cell
+ if ($theAPI
+ && exists($theAsserts->{$theAPI}->[$theAssertCount])
+ && scalar(@{$theAsserts->{$theAPI}->[$theAssertCount]})) {
+ $theAssertCount++;
+ }
+ $theAsserts->{$theAPI}->[$theAssertCount] = [ $theType ] ;
+ }
+ } elsif (m/^\|(.*)$/) {
+ my $item = $1;
+ $item =~ s/^ *//;
+ $item =~ s/ *$//;
+ $item =~ s/^['"]//;
+ $item =~ s/['"]$//;
+ # add into the data structure for the API
+ if (!exists $theAsserts->{$theAPI}->[$theAssertCount]) {
+ $theAsserts->{$theAPI}->[$theAssertCount] = [ $item ] ;
+ } else {
+ push(@{$theAsserts->{$theAPI}->[$theAssertCount]}, $item);
+ }
+ }
+ }
+};
+
+if ($state != 0) {
+ build_test($current, $theAttributes, $theCode, \@steps, $theSpecFragment) ;
+ print "Finished $current\n";
+}
+
+exit 0;
+
+# build_test
+#
+# create a test file
+#
+# attempts to create unique test names
+
+sub build_test() {
+ my $title = shift ;
+ my $attrs = shift ;
+ my $code = shift ;
+ my $steps = shift;
+ my $frag = shift ;
+
+ if ($title eq "") {
+ print STDERR "No name provided!";
+ return;
+ }
+
+ if ($frag ne "") {
+ $frag =~ s/%code%/$code/;
+ $code = $frag;
+ }
+
+ $code =~ s/ +$//m;
+ $code =~ s/\t/ /g;
+
+ my $title_reference = $title;
+
+ if ($code eq "") {
+ print STDERR "No code for $title; skipping.\n";
+ return;
+ }
+ if ( $steps eq {}) {
+ print STDERR "No assertions for $title; skipping.\n";
+ return;
+ }
+
+ my $testDef =
+ { "title" => $title,
+ "steps" => []
+ };
+ my $stepCount = 0;
+ foreach my $asserts (@$steps) {
+ $stepCount++;
+ my $step =
+ {
+ "type" => $asserts->{"type"},
+ "title"=> "step " . $stepCount,
+ };
+
+ if ($asserts->{type} eq "test") {
+ # everything in the block is about testing an element
+ $step->{"element"} = ( $asserts->{"element"} || "test" );
+
+ my $tests = {};
+ if ($fake) {
+ $tests->{"WAIFAKE"} = [ [ "property", "role", "is", "ROLE_TABLE_CELL" ], [ "property", "interfaces", "contains", "TableCell" ] ];
+ }
+ foreach my $name (@apiNames) {
+ if (exists $asserts->{$name} && scalar(@{$asserts->{$name}})) {
+ $tests->{$name} = $asserts->{$name};
+ }
+ };
+
+ $step->{test} = $tests;
+
+ } elsif ($asserts->{type} eq "attribute") {
+ $step->{type} = "attribute";
+ $step->{element} = $asserts->{"element"};
+ $step->{attribute} = $asserts->{"attribute"};
+ $step->{value} = $asserts->{value};
+ } elsif ($asserts->{type} eq "event") {
+ $step->{type} = "event";
+ $step->{element} = $asserts->{"element"};
+ $step->{event} = $asserts->{value};
+ } else {
+ print STDERR "Invalid step type: " . $asserts->{type} . "\n";
+ next;
+ }
+ push(@{$testDef->{steps}}, $step);
+ }
+
+
+ # populate the rest of the test definition
+
+ if (scalar(keys(%$attrs))) {
+ while (my $key = each(%$attrs)) {
+ # print "Copying $key \n";
+ $testDef->{$key} = $attrs->{$key};
+ }
+ }
+
+ if (exists $attrs->{reference}) {
+ $title_reference = "<a href='" . $attrs->{reference} . "'>" . $title_reference . "</a>" ;
+ }
+
+ my $testDef_json = to_json($testDef, { canonical => 1, pretty => 1, utf8 => 1});
+
+ my $fileName = $title;
+ $fileName =~ s/\s*$//;
+ $fileName =~ s/\///g;
+ $fileName =~ s/\s+/_/g;
+ $fileName =~ s/[,=:]/_/g;
+ $fileName =~ s/['"]//g;
+
+ my $count = 2;
+ if ($testNames->{$fileName}) {
+ while (exists $testNames->{$fileName . "_$count"}) {
+ $count++;
+ }
+ $fileName .= "_$count";
+ }
+
+ $fileName = lc($fileName);
+
+ $testNames->{$fileName} = 1;
+
+ $fileName .= $theSuffix;
+
+ my $template = qq(<!doctype html>
+<html>
+ <head>
+ <title>$title</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ $testDef_json
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for $title_reference.</p>
+ $code
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>);
+
+ my $file ;
+
+ if (open($file, ">", "$dir/$fileName")) {
+ print $file $template;
+ print $file "\n";
+ close $file;
+ } else {
+ print STDERR qq(Failed to create file "$dir/$fileName" $!\n);
+ }
+
+ return;
+}
+
+sub usage() {
+ print STDERR q(usage: make_tests.pl -f file | -w wiki_title | -s spec [-n -v -d dir ]
+
+ -s specname - the name of a spec known to the system
+ -w wiki_title - the TITLE of a wiki page with testable statements
+ -f file - the file from which to read
+
+ -n - do nothing
+ -v - be verbose
+ -d dir - put generated tests in directory dir
+ );
+ exit 1;
+}
+
+# vim: ts=2 sw=2 ai:
diff --git a/testing/web-platform/tests/wai-aria/tree_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/tree_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..15813f5f03
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tree_orientation_horizontal-manual.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+ <head>
+ <title>tree orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXOutline"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "outline"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Tree"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "tree orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for tree orientation horizontal.</p>
+ <div role="tree" tabindex="0" aria-orientation="horizontal" aria-activedescendant="foo" id="test">
+ <div id="foo" role="treeitem">foo</div>
+ <div role="treeitem">baz</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/tree_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/tree_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..dfc1bdcc58
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tree_orientation_unspecified-manual.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+ <head>
+ <title>tree orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXOutline"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "outline"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Tree"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "tree orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for tree orientation unspecified.</p>
+ <div role="tree" tabindex="0" aria-activedescendant="foo" id="test">
+ <div id="foo" role="treeitem">foo</div>
+ <div role="treeitem">baz</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/tree_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/tree_orientation_vertical-manual.html
new file mode 100644
index 0000000000..b9afa33ff4
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/tree_orientation_vertical-manual.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<html>
+ <head>
+ <title>tree orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXOutline"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "outline"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "Tree"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "tree orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for tree orientation vertical.</p>
+ <div role="tree" tabindex="0" aria-orientation="vertical" aria-activedescendant="foo" id="test">
+ <div id="foo" role="treeitem">foo</div>
+ <div role="treeitem">baz</div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treegrid_colcount_8-manual.html b/testing/web-platform/tests/wai-aria/treegrid_colcount_8-manual.html
new file mode 100644
index 0000000000..a3e9ea1496
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treegrid_colcount_8-manual.html
@@ -0,0 +1,118 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treegrid colcount 8</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:8"
+ ],
+ [
+ "result",
+ "atk_table_get_n_columns()",
+ "is",
+ "8"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXARIAColumnCount",
+ "is",
+ "8"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "colcount:8"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "DataGrid.ColumnCount",
+ "is",
+ "8"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "treegrid colcount 8"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treegrid colcount 8.</p>
+ <div id="test" role="treegrid" aria-colcount="8">
+ <div role="row">
+ <div role="cell" aria-colindex="4">test cell</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treegrid_orientation_horizontal-manual.html b/testing/web-platform/tests/wai-aria/treegrid_orientation_horizontal-manual.html
new file mode 100644
index 0000000000..756153abf3
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treegrid_orientation_horizontal-manual.html
@@ -0,0 +1,137 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treegrid orientation horizontal</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE_TABLE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "table"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_HORIZONTAL"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "treegrid orientation horizontal"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treegrid orientation horizontal.</p>
+ <div role="treegrid" tabindex="0" aria-orientation="horizontal" aria-activedescendant="foo" id="test">
+ <div role="row">
+ <div role="cell" id="foo">c1</div>
+ <div role="cell">c2</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treegrid_orientation_unspecified-manual.html b/testing/web-platform/tests/wai-aria/treegrid_orientation_unspecified-manual.html
new file mode 100644
index 0000000000..d536e9afbe
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treegrid_orientation_unspecified-manual.html
@@ -0,0 +1,155 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treegrid orientation unspecified</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE_TABLE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_HORIZONTAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "table"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "isNot",
+ "AXVerticalOrientation"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "isNot",
+ "AXHorizontalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "Orientation",
+ "isNot",
+ "vertical"
+ ],
+ [
+ "property",
+ "Orientation",
+ "isNot",
+ "horizontal"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "treegrid orientation unspecified"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treegrid orientation unspecified.</p>
+ <div role="treegrid" tabindex="0" aria-activedescendant="foo" id="test">
+ <div role="row">
+ <div role="cell" id="foo">c1</div>
+ <div role="cell">c2</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treegrid_orientation_vertical-manual.html b/testing/web-platform/tests/wai-aria/treegrid_orientation_vertical-manual.html
new file mode 100644
index 0000000000..62a19d0904
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treegrid_orientation_vertical-manual.html
@@ -0,0 +1,137 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treegrid orientation vertical</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE_TABLE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "Selection"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_VERTICAL"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "<nil>"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "table"
+ ],
+ [
+ "property",
+ "AXOrientation",
+ "is",
+ "AXVerticalOrientation"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "IA2_STATE_VERTICAL"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "IA2_STATE_HORIZONTAL"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "Orientation",
+ "is",
+ "vertical"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "treegrid orientation vertical"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treegrid orientation vertical.</p>
+ <div role="treegrid" tabindex="0" aria-orientation="vertical" aria-activedescendant="foo" id="test">
+ <div role="row">
+ <div role="cell" id="foo">c1</div>
+ <div role="cell">c2</div>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treegrid_rowcount_3-manual.html b/testing/web-platform/tests/wai-aria/treegrid_rowcount_3-manual.html
new file mode 100644
index 0000000000..9d9b8acf44
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treegrid_rowcount_3-manual.html
@@ -0,0 +1,120 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treegrid rowcount 3</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE_TABLE"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowcount:3"
+ ],
+ [
+ "result",
+ "atk_table_get_n_rows()",
+ "is",
+ "3"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXTable"
+ ],
+ [
+ "property",
+ "AXARIARowCount",
+ "is",
+ "3"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ],
+ [
+ "property",
+ "interfaces",
+ "contains",
+ "IAccessibleTable2"
+ ],
+ [
+ "property",
+ "objectAttributes",
+ "contains",
+ "rowcount:3"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "DataGrid"
+ ],
+ [
+ "property",
+ "DataGrid.RowCount",
+ "is",
+ "3"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "treegrid rowcount 3"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treegrid rowcount 3.</p>
+ <div role='treegrid' id='test' aria-rowcount='3' aria-colcount='2'>
+ <div role='row'>
+ <span role='gridcell'>
+ <button>hello</button>
+ </span>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treeitem_selected_false-manual.html b/testing/web-platform/tests/wai-aria/treeitem_selected_false-manual.html
new file mode 100644
index 0000000000..684fda69b6
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treeitem_selected_false-manual.html
@@ -0,0 +1,125 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treeitem selected false</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRow"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXOutlineRow"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "outline row"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINEITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "TreeItem"
+ ],
+ [
+ "property",
+ "ControlPatterns",
+ "doesNotContain",
+ "SelectionItem"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "treeitem selected false"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treeitem selected false.</p>
+ <UL role="tree">
+ <li role="treeitem" aria-selected="false" id="test">
+ Fish
+ </li>
+ <li role="treeitem">
+ beef
+ </li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treeitem_selected_true-manual.html b/testing/web-platform/tests/wai-aria/treeitem_selected_true-manual.html
new file mode 100644
index 0000000000..b951c54dec
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treeitem_selected_true-manual.html
@@ -0,0 +1,125 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treeitem selected true</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRow"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXOutlineRow"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "outline row"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "true"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINEITEM"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "TreeItem"
+ ],
+ [
+ "property",
+ "SelectionItem.IsSelected",
+ "Is",
+ "true"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "treeitem selected true"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treeitem selected true.</p>
+ <UL role="tree">
+ <li role="treeitem" aria-selected="true" id="test">
+ Fish
+ </li>
+ <li role="treeitem">
+ beef
+ </li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treeitem_selected_undefined-manual.html b/testing/web-platform/tests/wai-aria/treeitem_selected_undefined-manual.html
new file mode 100644
index 0000000000..dddfd3826f
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treeitem_selected_undefined-manual.html
@@ -0,0 +1,125 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treeitem selected undefined</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_TREE_ITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SELECTABLE"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXRole",
+ "is",
+ "AXRow"
+ ],
+ [
+ "property",
+ "AXSubrole",
+ "is",
+ "AXOutlineRow"
+ ],
+ [
+ "property",
+ "AXRoleDescription",
+ "is",
+ "outline row"
+ ],
+ [
+ "property",
+ "AXSelected",
+ "is",
+ "false"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "property",
+ "role",
+ "is",
+ "ROLE_SYSTEM_OUTLINEITEM"
+ ],
+ [
+ "property",
+ "states",
+ "doesNotContain",
+ "STATE_SYSTEM_SELECTED"
+ ],
+ [
+ "property",
+ "states",
+ "contains",
+ "STATE_SYSTEM_SELECTABLE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "ControlType",
+ "is",
+ "TreeItem"
+ ],
+ [
+ "property",
+ "ControlPatterns",
+ "doesNotContain",
+ "SelectionItem"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "treeitem selected undefined"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treeitem selected undefined.</p>
+ <UL role="tree">
+ <li role="treeitem" id="test">
+ Fish
+ </li>
+ <li role="treeitem">
+ beef
+ </li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/testing/web-platform/tests/wai-aria/treeitem_selected_value_changes-manual.html b/testing/web-platform/tests/wai-aria/treeitem_selected_value_changes-manual.html
new file mode 100644
index 0000000000..69734c82dd
--- /dev/null
+++ b/testing/web-platform/tests/wai-aria/treeitem_selected_value_changes-manual.html
@@ -0,0 +1,146 @@
+<!doctype html>
+<html>
+ <head>
+ <title>treeitem selected value changes</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "attribute" : "aria-activedescendant",
+ "element" : "test1",
+ "title" : "step 1",
+ "type" : "attribute",
+ "value" : "\"test\" "
+ },
+ {
+ "attribute" : "aria-selected",
+ "element" : "test",
+ "title" : "step 2",
+ "type" : "attribute",
+ "value" : "\"true\""
+ },
+ {
+ "attribute" : "aria-selected",
+ "element" : "test2",
+ "title" : "step 3",
+ "type" : "attribute",
+ "value" : "\"false\""
+ },
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:selected"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "1"
+ ]
+ ],
+ "MSAA" : [
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_SELECTION"
+ ],
+ [
+ "event",
+ "type",
+ "is",
+ "EVENT_OBJECT_STATECHANGE"
+ ]
+ ],
+ "UIA" : [
+ [
+ "event",
+ "type",
+ "is",
+ "UIA_SelectionItem_ElementSelectedEventId"
+ ]
+ ]
+ },
+ "title" : "step 4",
+ "type" : "test"
+ },
+ {
+ "element" : "test1",
+ "test" : {
+ "ATK" : [
+ [
+ "event",
+ "type",
+ "is",
+ "object:selection-changed"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "event",
+ "type",
+ "is",
+ "AXSelectedChildrenChanged"
+ ]
+ ]
+ },
+ "title" : "step 5",
+ "type" : "test"
+ },
+ {
+ "element" : "test2",
+ "test" : {
+ "ATK" : [
+ [
+ "event",
+ "type",
+ "is",
+ "object:state-changed:selected"
+ ],
+ [
+ "event",
+ "detail1",
+ "is",
+ "0"
+ ]
+ ]
+ },
+ "title" : "step 6",
+ "type" : "test"
+ }
+ ],
+ "title" : "treeitem selected value changes"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for treeitem selected value changes.</p>
+ <ul id="test1" aria-activedescendant="test2" role="tree">
+ <li role="treeitem" aria-selected="false" id="test">
+ Fish
+ </li>
+ <li id="test2" aria-selected="true" role="treeitem">
+ beef
+ </li>
+ </ul>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>