Changeset 154309 in webkit


Ignore:
Timestamp:
Aug 19, 2013 5:53:03 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

<https://webkit.org/b/118754> AX: aria-required.html needs to test @required vs @aria-required mismatch reconciliation

Patch by James Craig <james@cookiecrook.com> on 2013-08-19
Reviewed by Chris Fleizach.

More thorough testing of @required and @aria-required, especially regarding conflict resolution.
Found https://webkit.org/b/119988 as a result of the updated test.

  • accessibility/aria-required-expected.txt:
  • accessibility/aria-required.html:
Location:
trunk/LayoutTests
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r154308 r154309  
     12013-08-19  James Craig  <james@cookiecrook.com>
     2
     3        <https://webkit.org/b/118754> AX: aria-required.html needs to test @required vs @aria-required mismatch reconciliation
     4
     5        Reviewed by Chris Fleizach.
     6
     7        More thorough testing of @required and @aria-required, especially regarding conflict resolution.
     8        Found https://webkit.org/b/119988 as a result of the updated test.
     9
     10        * accessibility/aria-required-expected.txt:
     11        * accessibility/aria-required.html:
     12
    1132013-08-19  Ryosuke Niwa  <rniwa@webkit.org>
    214
  • trunk/LayoutTests/accessibility/aria-required-expected.txt

    r151831 r154309  
    1  
    21This tests that aria-required is a usable attribute.
    32
     
    54
    65
    7 PASS succeeded is true
    8 PASS succeeded is true
    9 PASS succeeded is true
    10 PASS succeeded is true
    11 PASS succeeded is true
    12 PASS succeeded is true
    13 PASS succeeded is true
    14 PASS succeeded is true
    15 PASS succeeded is true
    16 PASS succeeded is true
    17 PASS succeeded is true
    18 PASS succeeded is true
    19 PASS succeeded is true
    20 PASS succeeded is true
    21 PASS succeeded is true
     6Elements to test: 32
     7
     8PASS textfield isRequired is false
     9PASS textfield_required isRequired is true
     10PASS textfield_required_ariarequired isRequired is true
     11PASS textfield_ariarequiredfalse isRequired is false
     12PASS textfield5 isRequired is true
     13PASS checkbox isRequired is false
     14PASS checkbox_required isRequired is true
     15PASS checkbox_required_ariarequired isRequired is true
     16PASS checkbox_ariarequiredfalse isRequired is false
     17PASS checkbox_required_ariarequiredfalse isRequired is true
     18PASS select isRequired is false
     19PASS select_required isRequired is true
     20PASS select_required_ariarequired isRequired is true
     21PASS select_ariarequiredfalse isRequired is false
     22PASS select_required_ariarequiredfalse isRequired is true
     23PASS textarea isRequired is false
     24PASS textarea_required isRequired is true
     25PASS textarea_required_ariarequired isRequired is true
     26PASS textarea_ariarequiredfalse isRequired is false
     27PASS textarea_required_ariarequiredfalse isRequired is true
     28PASS listbox_ariarequiredtrue isRequired is true
     29PASS listbox_ariarequiredfalse isRequired is false
     30PASS listbox isRequired is false
     31PASS radiogroup_ariarequiredtrue isRequired is true
     32PASS radiogroup_ariarequiredfalse isRequired is false
     33PASS radiogroup isRequired is false
     34PASS spinbutton_ariarequiredtrue isRequired is true
     35PASS spinbutton_ariarequiredfalse isRequired is false
     36PASS spinbutton isRequired is false
     37PASS tree_ariarequiredtrue isRequired is true
     38PASS tree_ariarequiredfalse isRequired is false
     39PASS tree isRequired is false
    2240PASS successfullyParsed is true
    2341
  • trunk/LayoutTests/accessibility/aria-required.html

    r151831 r154309  
    66<body id="body">
    77
    8 <input type="text" aria-required="true" id="textfield1">
    9 <input type="text" aria-required="false" id="textfield2">
    10 <input type="text" id="textfield3">
    11 
    128<div id="toBeHidden">
    139
    14   <div tabindex="0" aria-required="true" role="listbox" id="lb1">text</div>
    15   <div tabindex="0" aria-required="false" role="listbox" id="lb2">text</div>
    16   <div tabindex="0" role="listbox" id="lb3">text</div>
    1710
    18   <div tabindex="0" aria-required="true" role="radiogroup" id="rg1">text</div>
    19   <div tabindex="0" aria-required="false" role="radiogroup" id="rg2">text</div>
    20   <div tabindex="0" role="radiogroup" id="rg3">text</div>
     11  <!-- textfields -->
     12  <input type="text" id="textfield" data-expectedrequired="false">
     13  <input type="text" id="textfield_required" required data-expectedrequired="true">
     14  <input type="text" required aria-required="true" id="textfield_required_ariarequired" data-expectedrequired="true">
     15  <input type="text" aria-required="false" id="textfield_ariarequiredfalse" data-expectedrequired="false">
     16  <!-- these last ones conflict with implicit value of @required, so host language attr should win -->
     17  <input type="text" aria-required="textfield_required_ariarequiredfalse" required id="textfield5" data-expectedrequired="true">
     18  <!-- BLOCKED by http://webkit.org/b/119988
     19  <input type="text" aria-required="true" id="textfield_requiredfalse_ariarequiredtrue" data-expectedrequired="false">
     20  -->
    2121
    22   <div tabindex="0" aria-required="true" role="spinbutton" id="sb1">text</div>
    23   <div tabindex="0" aria-required="false" role="spinbutton" id="sb2">text</div>
    24   <div tabindex="0" role="spinbutton" id="sb3">text</div>
    2522
    26   <div tabindex="0" aria-required="true" role="tree" id="t1">text</div>
    27   <div tabindex="0" aria-required="false" role="tree" id="t2">text</div>
    28   <div tabindex="0" role="tree" id="t3">text</div>
     23  <!-- checkboxes -->
     24  <input type="checkbox" id="checkbox" data-expectedrequired="false">
     25  <input type="checkbox" id="checkbox_required" required data-expectedrequired="true">
     26  <input type="checkbox" required aria-required="true" id="checkbox_required_ariarequired" data-expectedrequired="true">
     27  <input type="checkbox" aria-required="false" id="checkbox_ariarequiredfalse" data-expectedrequired="false">
     28  <!-- these last ones conflict with implicit value of @required, so host language attr should win -->
     29  <input type="checkbox" aria-required="false" required id="checkbox_required_ariarequiredfalse" data-expectedrequired="true">
     30  <!-- BLOCKED by http://webkit.org/b/119988
     31  <input type="checkbox" aria-required="true" id="checkbox_requiredfalse_ariarequiredtrue" data-expectedrequired="false">
     32  -->
     33
     34
     35  <!-- select -->
     36  <select id="select" data-expectedrequired="false"><option>test</option></select>
     37  <select id="select_required" required data-expectedrequired="true"><option>test</option></select>
     38  <select required aria-required="true" id="select_required_ariarequired" data-expectedrequired="true"><option>test</option></select>
     39  <select aria-required="false" id="select_ariarequiredfalse" data-expectedrequired="false"><option>test</option></select>
     40  <!-- these last ones conflict with implicit value of @required, so host language attr should win -->
     41  <select aria-required="false" required id="select_required_ariarequiredfalse" data-expectedrequired="true"><option>test</option></select>
     42  <!-- BLOCKED by http://webkit.org/b/119988
     43  <select aria-required="true" id="select_requiredfalse_ariarequiredtrue" data-expectedrequired="false"><option>test</option></select>
     44  -->
     45
     46 
     47  <!-- textarea -->
     48  <textarea id="textarea" data-expectedrequired="false"></textarea>
     49  <textarea id="textarea_required" required data-expectedrequired="true"></textarea>
     50  <textarea required aria-required="true" id="textarea_required_ariarequired" data-expectedrequired="true"></textarea>
     51  <textarea aria-required="false" id="textarea_ariarequiredfalse" data-expectedrequired="false"></textarea>
     52  <!-- these last ones conflict with implicit value of @required, so host language attr should win -->
     53  <textarea aria-required="false" required id="textarea_required_ariarequiredfalse" data-expectedrequired="true"></textarea>
     54  <!-- BLOCKED by http://webkit.org/b/119988
     55  <textarea aria-required="true" id="textarea_requiredfalse_ariarequiredtrue" data-expectedrequired="false"></textarea>
     56  -->
     57 
     58
     59  <!-- Custom ARIA controls (@required is not allowed on these elements, so no conflict resolution needed.) -->
     60  <div tabindex="0" aria-required="true" role="listbox" id="listbox_ariarequiredtrue" data-expectedrequired="true">text</div>
     61  <div tabindex="0" aria-required="false" role="listbox" id="listbox_ariarequiredfalse" data-expectedrequired="false">text</div>
     62  <div tabindex="0" role="listbox" id="listbox" data-expectedrequired="false">text</div>
     63
     64  <div tabindex="0" aria-required="true" role="radiogroup" id="radiogroup_ariarequiredtrue" data-expectedrequired="true">text</div>
     65  <div tabindex="0" aria-required="false" role="radiogroup" id="radiogroup_ariarequiredfalse" data-expectedrequired="false">text</div>
     66  <div tabindex="0" role="radiogroup" id="radiogroup" data-expectedrequired="false">text</div>
     67
     68  <div tabindex="0" aria-required="true" role="spinbutton" id="spinbutton_ariarequiredtrue" data-expectedrequired="true">text</div>
     69  <div tabindex="0" aria-required="false" role="spinbutton" id="spinbutton_ariarequiredfalse" data-expectedrequired="false">text</div>
     70  <div tabindex="0" role="spinbutton" id="spinbutton" data-expectedrequired="false">text</div>
     71
     72  <div tabindex="0" aria-required="true" role="tree" id="tree_ariarequiredtrue" data-expectedrequired="true">text</div>
     73  <div tabindex="0" aria-required="false" role="tree" id="tree_ariarequiredfalse" data-expectedrequired="false">text</div>
     74  <div tabindex="0" role="tree" id="tree" data-expectedrequired="false">text</div>
    2975
    3076</div>
     
    3783    description("This tests that aria-required is a usable attribute.");
    3884
    39     function $(id){
    40       return document.getElementById(id);
    41     }
    42 
    4385    if (window.accessibilityController) {
    4486
    45           var succeeded = false;
     87        var result = document.getElementById('console');
     88        var elements = document.querySelectorAll('[data-expectedrequired]');
     89        result.innerText += "Elements to test: " + elements.length + "\n\n";
    4690
    47           // textfield 1 is required
    48           $("textfield1").focus();
    49           succeeded = accessibilityController.focusedElement.isRequired;
    50           shouldBe("succeeded", "true");
    51           // textfield 2 and 3 are not required
    52           $("textfield2").focus();
    53           succeeded = !(accessibilityController.focusedElement.isRequired);
    54           shouldBe("succeeded", "true");
    55           $("textfield3").focus();
    56           succeeded = !(accessibilityController.focusedElement.isRequired);
    57           shouldBe("succeeded", "true");
     91        for (var i = 0, c = elements.length; i < c; i++) {
     92            var el = elements[i];
     93            var id = el.id;
     94            var axElement = accessibilityController.accessibleElementById(id);
     95            var isRequired = axElement.isRequired;
    5896
    59           // listbox 1 is required
    60           $("lb1").focus();
    61           succeeded = accessibilityController.focusedElement.isRequired;
    62           shouldBe("succeeded", "true");
    63           // listbox 2 and 3 are not required
    64           $("lb2").focus();
    65           succeeded = !(accessibilityController.focusedElement.isRequired);
    66           shouldBe("succeeded", "true");
    67           $("lb3").focus();
    68           succeeded = !(accessibilityController.focusedElement.isRequired);
    69           shouldBe("succeeded", "true");
    70 
    71           // radiogroup 1 is required
    72           $("rg1").focus();
    73           succeeded = accessibilityController.focusedElement.isRequired;
    74           shouldBe("succeeded", "true");
    75           // radiogroup 2 and 3 are not required
    76           $("rg2").focus();
    77           succeeded = !(accessibilityController.focusedElement.isRequired);
    78           shouldBe("succeeded", "true");
    79           $("rg3").focus();
    80           succeeded = !(accessibilityController.focusedElement.isRequired);
    81           shouldBe("succeeded", "true");
    82 
    83           // spinbutton 1 is required
    84           $("sb1").focus();
    85           succeeded = accessibilityController.focusedElement.isRequired;
    86           shouldBe("succeeded", "true");
    87           // spinbutton 2 and 3 are not required
    88           $("sb2").focus();
    89           succeeded = !(accessibilityController.focusedElement.isRequired);
    90           shouldBe("succeeded", "true");
    91           $("sb3").focus();
    92           succeeded = !(accessibilityController.focusedElement.isRequired);
    93           shouldBe("succeeded", "true");
    94 
    95           // tree 1 is required
    96           $("t1").focus();
    97           succeeded = accessibilityController.focusedElement.isRequired;
    98           shouldBe("succeeded", "true");
    99           // tree 2 and 3 are not required
    100           $("t2").focus();
    101           succeeded = !(accessibilityController.focusedElement.isRequired);
    102           shouldBe("succeeded", "true");
    103           $("t3").focus();
    104           succeeded = !(accessibilityController.focusedElement.isRequired);
    105           shouldBe("succeeded", "true");
     97            // Test whether elementis required.
     98            var passed = el.dataset.expectedrequired === isRequired.toString();
     99            var output = (passed ? "PASS" : "FAIL") + " " + id + " isRequired is " + isRequired;
     100            if (!passed)
     101                output += ", expected " + el.dataset.expectedrequired;
     102            result.innerText += output + "\n";
     103        }
    106104
    107105    }
    108106
    109     $('toBeHidden').hidden = true; // hide this to avoid text diffs when adding more elements to the test
     107    document.getElementById('toBeHidden').hidden = true; // hide this to avoid text diffs when adding more elements to the test
    110108
    111109</script>
Note: See TracChangeset for help on using the changeset viewer.