Exercising the Beacon API

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS Object.getPrototypeOf(navigator).hasOwnProperty('sendBeacon') is true
PASS typeof navigator.sendBeacon is "function"
PASS navigator.sendBeacon() threw exception TypeError: Failed to execute 'sendBeacon' on 'Navigator': 1 argument required, but only 0 present..
PASS navigator.sendBeacon('http:') threw exception TypeError: Failed to execute 'sendBeacon' on 'Navigator': The URL argument is ill-formed or unsupported..
PASS navigator.sendBeacon('javascript:alert(1);') threw exception TypeError: Failed to execute 'sendBeacon' on 'Navigator': Beacons are only supported over HTTP(S)..
PASS navigator.sendBeacon('https:', new Uint8Array(new SharedArrayBuffer(10))) threw exception TypeError: Failed to execute 'sendBeacon' on 'Navigator': The provided ArrayBufferView value must not be shared..
PASS successfullyParsed is true

TEST COMPLETE

