chromium/third_party/blink/web_tests/wpt_internal/bluetooth/characteristic/notifications/resources/heart-rate-iframe.html

<!DOCTYPE html>
<script>
  let device;
  window.onmessage = messageEvent => {
    if (messageEvent.data === 'RequestAndConnect') {
      navigator.bluetooth.requestDevice({
        filters: [{services: ['heart_rate']}]
      })
      .then(device => device.gatt.connect())
      .then(gattServer => {
        device = gattServer.device;
        parent.postMessage('Connected', '*');
      }).catch(err => {
        console.error(err);
        parent.postMessage('FAIL: ' + err, '*');
      });
    } else if (messageEvent.data === 'StartNotifications') {
      device.gatt.getPrimaryService('heart_rate')
        .then(service => service.getCharacteristic('heart_rate_measurement'))
        .then(char => char.startNotifications())
        .then(char => {
          char.addEventListener('characteristicvaluechanged', function() {});
          parent.postMessage('NotificationsStarted', '*');
        });
    }
  };
  parent.postMessage("Ready", "*");
</script>