Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
*/
const emptyPage =
getRootDirectory(gTestPath).replace(
) + "empty.html";
add_task(async function test_math_and_binary_arch() {
info("Testing firefox_binary_arch and math_ops_fdlibm_2 metrics");
await BrowserTestUtils.withNewTab({ gBrowser, url: emptyPage }, () =>
GleanPings.userCharacteristics.testSubmission(
() => {
// Test firefox_binary_arch metric
const firefoxBinaryArch =
Glean.characteristics.firefoxBinaryArch.testGetValue();
Assert.ok(firefoxBinaryArch, "firefox_binary_arch should have a value");
Assert.notEqual(
firefoxBinaryArch,
"",
"firefox_binary_arch should not be empty"
);
info(`firefox_binary_arch: ${firefoxBinaryArch}`);
// Test math_ops_fdlibm_2 metric
const mathOpsFdlibm2 =
Glean.characteristics.mathOpsFdlibm2.testGetValue();
Assert.ok(mathOpsFdlibm2, "math_ops_fdlibm_2 should have a value");
Assert.notEqual(
mathOpsFdlibm2,
"",
"math_ops_fdlibm_2 should not be empty"
);
// Parse the JSON array and check the count
let mathValues;
try {
mathValues = JSON.parse(mathOpsFdlibm2);
} catch (e) {
Assert.ok(false, `math_ops_fdlibm_2 should be valid JSON: ${e}`);
return;
}
Assert.ok(
Array.isArray(mathValues),
"math_ops_fdlibm_2 should be an array"
);
// The function collects 36 values
const expectedCount = 36;
Assert.equal(
mathValues.length,
expectedCount,
`math_ops_fdlibm_2 should have ${expectedCount} values`
);
info(`math_ops_fdlibm_2 has ${mathValues.length} values as expected`);
},
async () => {
const populated = TestUtils.topicObserved(
"user-characteristics-populating-data-done",
() => true
);
Services.obs.notifyObservers(
null,
"user-characteristics-testing-please-populate-data"
);
await populated;
GleanPings.userCharacteristics.submit();
}
)
);
});