Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /geolocation/heading-stationary.https.html - WPT Dashboard Interop Dashboard
<!doctype html>
<meta charset="utf-8" />
<title>Geolocation Test: heading is null when stationary</title>
<link rel="help" href="https://www.w3.org/TR/geolocation/#c9" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js?feature=bidi"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script>
const latitude = 51.478;
const longitude = -0.166;
const accuracy = 100;
promise_setup(async () => {
await test_driver.set_permission({ name: "geolocation" }, "granted");
});
promise_test(async (t) => {
t.add_cleanup(async () => {
await test_driver.bidi.emulation.set_geolocation_override({
coordinates: null,
});
});
// Set geolocation with speed = 0 (stationary)
await test_driver.bidi.emulation.set_geolocation_override({
coordinates: {
latitude,
longitude,
accuracy,
speed: 0,
},
});
const position = await new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(resolve, reject);
});
// When stationary (speed is 0), heading must be null, not NaN
assert_equals(
position.coords.heading,
null,
"heading must be null when device is stationary (speed is 0)",
);
assert_equals(position.coords.speed, 0, "speed should be 0");
}, "heading is null when stationary (speed is 0)");
promise_test(async (t) => {
t.add_cleanup(async () => {
await test_driver.bidi.emulation.set_geolocation_override({
coordinates: null,
});
});
// Set geolocation with speed > 0 (moving) and a heading
await test_driver.bidi.emulation.set_geolocation_override({
coordinates: {
latitude,
longitude,
accuracy,
speed: 10,
heading: 90,
},
});
const position = await new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(resolve, reject);
});
// When moving (speed > 0), heading should be the specified value
assert_equals(
position.coords.heading,
90,
"heading should be 90 when moving",
);
assert_equals(position.coords.speed, 10, "speed should be 10");
}, "heading has a value when moving (speed > 0)");
</script>