chromium/third_party/blink/web_tests/media/autoplay-document-move.html

<!DOCTYPE html>
<title>Moving media element to other document to bypass autoplay</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<body>
<script>
  function createAndMoveVideo() {
    var v = document.implementation.createHTMLDocument().createElement('video');
    v.src = 'content/test.ogv';
    document.body.appendChild(v);
    return v;
  }

  test(function() {
    assert_true(window.internals != null, 'This test only works with internals exposed present');
  }, 'internals are exposed');

  async_test(function(t) {
    internals.settings.setAutoplayPolicy('no-user-gesture-required');
    var v = createAndMoveVideo();
    assert_true(v.paused, 'Video should be paused before calling play()');

    v.play().then(
      t.step_func_done(),
      t.step_func_done(function() {
        assert_unreached('Video should autoplay when gesture not required');
      }));
  }, 'Test that video should autoplay without gesture requirement');

  async_test(function(t) {
    internals.settings.setAutoplayPolicy('user-gesture-required');
    var v = createAndMoveVideo();
    assert_true(v.paused, 'Video should be paused before calling play()');

    v.play().then(
      t.step_func_done(function() {
        assert_unreached('Video should not autoplay when gesture required');
      }),
      t.step_func_done());
  }, 'Test that video should not autoplay when gesture required');
</script>
</body>