chromium/third_party/blink/web_tests/editing/selection/5354455-1.html

<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
//, 'win', 'unix', 'android'
for (const platform of ['mac', 'win', 'unix', 'android']) {
  selection_test(
    [
      '<div contenteditable>',
        '<div>',
          '<span id="text">This is a paragraph.</span>',
        '</div>',
        '<br>',
      '</div>',
    ],
    selection => {
      assert_not_equals(window.eventSender, undefined,
        'this test requires eventSender');
      assert_not_equals(window.internals, undefined,
        'this test requires internals');

      internals.settings.setEditingBehavior(platform);

      const paragraph = selection.document.getElementById('text');
      const x = selection.computeLeft(paragraph) + paragraph.offsetWidth + 10;
      const y = selection.computeTop(paragraph) + paragraph.offsetHeight / 2;

      // Reset mouse state.
      eventSender.mouseMoveTo(0, 0);
      eventSender.mouseDown();
      eventSender.mouseUp();
      eventSender.leapForward(1000);

      // Right click
      eventSender.mouseMoveTo(x, y);
      eventSender.contextClick();

      // Kill the context menu
      eventSender.keyDown('Escape', null);
    },
    platform === 'mac'
        ? [
            '<div contenteditable>',
              '<div>',
                // MacOS selects end tag of DIV as word.
                '<span id="text">This is a paragraph.^</span>',
              '</div>',
              '|<br>',
            '</div>',
          ]
        : [
            '<div contenteditable>',
              '<div>',
                '<span id="text">This is a paragraph.|</span>',
              '</div>',
              '<br>',
            '</div>',
          ],
    `${platform}: context click at end of paragraph.`);
}
</script>