Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /badging/badge-success.https.any.html - WPT Dashboard Interop Dashboard
- /badging/badge-success.https.any.worker.html - WPT Dashboard Interop Dashboard
"use strict";
test(() => {
assert_true("setAppBadge" in navigator, "navigator.setAppBadge should exist");
assert_true(
"clearAppBadge" in navigator,
"navigator.clearAppBadge should exist",
);
}, "Badging API interface exists");
promise_test(async () => {
const numberTestCases = [
{ value: undefined, desc: "undefined" },
{ value: null, desc: "null (coerced to 0)" },
{ value: 1, desc: "integer value of 1" },
{ value: 10.6, desc: "non-whole number" },
{ value: Number.MAX_SAFE_INTEGER, desc: "maximum allowed value" },
{ value: 0, desc: "zero" },
];
for (const { value, desc } of numberTestCases) {
const result = await navigator.setAppBadge(value);
assert_equals(
result,
undefined,
`setAppBadge resolves successfully when passed ${desc} as input`,
);
}
}, "Resolves successfully for number input cases");
promise_test(async () => {
const stringTestCases = [
{ value: "3", desc: "numeric string '3' (coerced to 3)" },
{
value: " 300.000 ",
desc: "numeric string ' 300.000 ' (coerced to 300)",
},
{ value: "", desc: "empty string (coerced to 0)" },
];
for (const { value, desc } of stringTestCases) {
const result = await navigator.setAppBadge(value);
assert_equals(
result,
undefined,
`setAppBadge resolves successfully when passed ${desc} as input`,
);
}
}, "Resolves successfully for string input cases");
promise_test(async () => {
const resultFalse = await navigator.setAppBadge(false);
assert_equals(
resultFalse,
undefined,
"setAppBadge resolves successfully when passed false as input (coerced to 0)",
);
const resultTrue = await navigator.setAppBadge(true);
assert_equals(
resultTrue,
undefined,
"setAppBadge resolves successfully when passed true as input (coerced to 1)",
);
}, "Resolves successfully for boolean input cases");
promise_test(async () => {
const result = await navigator.clearAppBadge();
assert_equals(result, undefined, "clearAppBadge should return undefined");
}, "clearAppBadge resolves successfully");
promise_test(async () => {
// Test calling setAppBadge with no arguments (should set flag)
const result = await navigator.setAppBadge();
assert_equals(
result,
undefined,
"setAppBadge() with no arguments should return undefined",
);
}, "setAppBadge with no arguments succeeds (flag mode)");