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_mathml_metrics() {
info("Testing MathML metrics collection...");
await BrowserTestUtils.withNewTab({ gBrowser, url: emptyPage }, () =>
GleanPings.userCharacteristics.testSubmission(
() => {
// Test mathml_diag_values metric
info("Testing mathml_diag_values metric...");
const mathmlValues =
Glean.characteristics.mathmlDiagValues.testGetValue();
Assert.notEqual(
mathmlValues,
null,
"mathml_diag_values should be collected"
);
const parsed = JSON.parse(mathmlValues);
Assert.ok(
Array.isArray(parsed),
"mathml_diag_values should be an array"
);
Assert.greater(
parsed.length,
0,
"mathml_diag_values should contain entries"
);
info(`Collected ${parsed.length} MathML values`);
// Each value should be a number (width measurement)
for (const val of parsed) {
Assert.strictEqual(
typeof val,
"number",
`MathML value should be numeric: ${val}`
);
Assert.greaterOrEqual(
val,
0,
`MathML value should be non-negative: ${val}`
);
}
// Test mathml_diag_font_family metric
info("Testing mathml_diag_font_family metric...");
const fontFamily =
Glean.characteristics.mathmlDiagFontFamily.testGetValue();
Assert.notEqual(
fontFamily,
"",
"mathml_diag_font_family should not be empty"
);
info(`MathML font family: ${fontFamily}`);
info("All MathML metric tests passed!");
},
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();
}
)
);
});