chromium/third_party/blink/web_tests/fast/forms/label/label-selection-by-textSelection-and-click.html

<!DOCTYPE html>
<script src='../../../resources/testharness.js'></script>
<script src='../../../resources/testharnessreport.js'></script>
<p>Selected Text</p>
<label>
<img src="../resources/green.jpg" width=100 height=100>
<br><input type=radio> Then click the image
</label>
<script>
var radio = document.querySelector("input[type=radio]");
var targetTextRect = document.querySelector("p").getBoundingClientRect();
var textLeft = targetTextRect.left;
var textTop = targetTextRect.top;
var textWidth =  targetTextRect.width;
var targetImageRect = document.querySelector("img").getBoundingClientRect();
var imageLeft = targetImageRect.left;
var imageTop = targetImageRect.top;

var testLabelClickWithSelectedText = async_test("Tests that Radio Input gets checked if label clicked along with a text selection.");

// This test runs as follows:
// 1. Select the text.
// 2. Then click on label element image.
// 3. Radio button should be checked.

testLabelClickWithSelectedText.step(() => {
  assert_own_property(window, "chrome");
  assert_own_property(chrome, "gpuBenchmarking");

  var pointerActions =
          [{ source: "mouse",
            actions: [
              { name: "pointerDown", x: textLeft, y: textTop },
              { name: "pointerMove", x: textLeft + textWidth, y: textTop },
              { name: "pointerUp" },
              { name: "pause" },
              { name: "pointerDown", x: imageLeft, y: imageTop },
              { name: "pointerUp" }]}];
  chrome.gpuBenchmarking.pointerActionSequence(pointerActions, testLabelClickWithSelectedText.step_func_done(() => {
  assert_equals(window.getSelection().toString(), "Selected Text");
  assert_true(radio.checked);
  }));
});
</script>