chromium/third_party/blink/web_tests/wpt_internal/reporting/buffering.html

<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/intervention.js"></script>

<div id="target" style="padding: 10px; background-color: blue;">
  <p>Testing ReportingObserver's `buffered` option.</p>
</div>

<script>
async_test(function(test) {
  var observer1 = new ReportingObserver(function(reports, observer) {
    test.step(function() {
      // Both reports should be observed, since the `buffered` option is set to
      // true.
      assert_equals(reports.length, 2);
    });

    test.done();
  }, { buffered: true });

  // Generate two reports (deprecation and intervention), one before
  // and one after calling observe().
  causeIntervention();
  observer1.observe();
  webkitCancelAnimationFrame(() => {});
  observer1.disconnect();
}, "Buffered reports observed");


async_test(function(test) {
  var observer2 = new ReportingObserver(function(reports, observer) {
    test.step(function() {
      // Only the second report should be observed, since the `buffered` option
      // is set to false by default.
      assert_equals(reports.length, 1);
      assert_equals(reports[0].type, "deprecation");
      assert_equals(reports[0].body.id, "PrefixedRequestAnimationFrame");
    });

    test.done();
  });

  // Generate two reports (deprecation and intervention), one before
  // and one after calling observe().
  causeIntervention();
  observer2.observe();
  webkitRequestAnimationFrame(() => {});  // id = "kPrefixedCancelAnimationFrame"
  observer2.disconnect();
}, "Buffered reports not observed");
</script>