<!DOCTYPE html>
<title>Test window.fence.setReportEventDataForAutomaticBeacons</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="resources/utils.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="resources/automatic-beacon-helper.js"></script>

<body>
<script>
promise_test(async (t) => {
  const actions = new test_driver.Actions();
  const fencedframe = await attachFencedFrameContext({
    generator_api: "fledge",
    register_beacon: true,
    origin: get_host_info().HTTPS_REMOTE_ORIGIN
  });

  let beacon_event = {
    eventType: "reserved.top_navigation_commit",
    eventData: "This is the beacon data!",
    destination: ["component-seller"],
  };
  await setupAutomaticBeacon(fencedframe, [beacon_event]);

  await actions
    .pointerMove(0, 0, { origin: fencedframe.element })
    .pointerDown()
    .pointerUp()
    .send();

  // An automatic beacon should be sent out, but no data should be sent as part
  // of the beacon because the "buyer" destination was not specified in
  // setReportEventDataForAutomaticBeacons().
  await verifyBeaconData(beacon_event.eventType, "<No data>",
      get_host_info().HTTPS_REMOTE_ORIGIN);
}, "Set and trigger an automatic beacon with no destination specified");

</script>
</body>
