chromium/third_party/blink/web_tests/fast/forms/calendar-picker/date-picker-ax.html

<!DOCTYPE html>
<meta name=fuzzy content="maxDifference=0-3; totalPixels=0-1000">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../resources/testdriver.js"></script>
<script src="../../../resources/testdriver-vendor.js"></script>
<script src="../resources/common.js"></script>
<script src="../resources/picker-common.js"></script>
<script src="../calendar-picker/resources/calendar-picker-common.js"></script>

<input type="date" value="2000-01-02">

<script>
promise_test(() => {
  let date1 = document.querySelector('input');

  return openPicker(date1).then(() => {
    let markDirtyCounter = 0;

    let promise = new Promise((resolve, reject) => {
      accessibilityController.setNotificationListener(function(axnode, type) {
        if (type == 'MarkDirty' && ++ markDirtyCounter >= 2) {
          assert_equals(date1.value, "2000-01-03", "Arrow key in month picker should have udpated control value");
          resolve();
        }
      });

      // In case of failure, reject the promise so we get some logs instead of timing out.
      window.setTimeout(() => {
        reject(`Didn't receive expected events.  Got ${markDirtyCounter} MarkDirty`);
      }, 1500);
    });

    eventSender.keyDown('ArrowRight');
    // This forces an a11y flush.
    accessibilityController.focusedElement;

    return promise;
  });
}, 'Tests that typing an arrow key and opening month switcher menu dispatches |MarkDirty| a11y events.');

</script>