<!DOCTYPE html>
<html>
<head>
<script>
testRunner.waitUntilDone();
</script>
<script src='../../../fast/forms/resources/picker-common.js'></script>
</head>
<body>
<input type='color' id='color'>

<p id='description' style='opacity: 0'></p>
<div id='console' style='opacity: 0'></div>

<script>
openPickerAppearanceOnly(document.getElementById('color'), openPickerSuccessfulCallback);

function openPickerSuccessfulCallback() {
  popupWindow.focus();
  const popupDocument = popupWindow.document;
  const hueSlider = popupDocument.querySelector('hue-slider');
  const hueSliderRect = hueSlider.getBoundingClientRect();
  eventSender.mouseMoveTo(hueSliderRect.left + (hueSliderRect.width / 2), hueSliderRect.top);
  eventSender.mouseDown();
  eventSender.mouseUp();
  for (let i = 0; i < 3; i++) {
    eventSender.keyDown('ArrowRight', ['ctrlKey']);
  }
  for (let i = 0; i < 2; i++) {
    eventSender.keyDown('ArrowLeft', ['ctrlKey']);
  }
  testRunner.notifyDone();
}
</script>
</body>
</html>