1
0
Fork 0
firefox/toolkit/components/nimbus/test/browser/browser_nimbus_telemetry.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

136 lines
3.1 KiB
JavaScript

"use strict";
const { TelemetryTestUtils } = ChromeUtils.importESModule(
"resource://testing-common/TelemetryTestUtils.sys.mjs"
);
const TELEMETRY_CATEGORY = "normandy";
const TELEMETRY_OBJECT = "nimbus_experiment";
// Included with active experiment information
const EXPERIMENT_TYPE = "nimbus";
const EVENT_FILTER = { category: TELEMETRY_CATEGORY };
const TEST_FEATURE = new ExperimentFeature("test-feature", {
description: "Test feature",
exposureDescription: "Used in tests",
});
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
set: [["app.shield.optoutstudies.enabled", true]],
});
const cleanupFeature = NimbusTestUtils.addTestFeatures(TEST_FEATURE);
registerCleanupFunction(async () => {
await SpecialPowers.popPrefEnv();
cleanupFeature();
});
});
add_task(async function test_experiment_enroll_unenroll_Telemetry() {
Services.telemetry.clearEvents();
const cleanup = await NimbusTestUtils.enrollWithFeatureConfig({
featureId: TEST_FEATURE.featureId,
value: { enabled: false },
});
const metadata =
NimbusFeatures[TEST_FEATURE.featureId].getEnrollmentMetadata();
Assert.ok(!!metadata, "Should be enrolled in the experiment");
TelemetryTestUtils.assertEvents(
[
{
method: "enroll",
object: TELEMETRY_OBJECT,
value: metadata.slug,
extra: {
experimentType: EXPERIMENT_TYPE,
branch: metadata.branch,
},
},
],
EVENT_FILTER
);
await cleanup();
TelemetryTestUtils.assertEvents(
[
{
method: "unenroll",
object: TELEMETRY_OBJECT,
value: metadata.slug,
extra: {
reason: "unknown",
branch: metadata.branch,
},
},
],
EVENT_FILTER
);
});
add_task(async function test_experiment_expose_Telemetry() {
const cleanup = await NimbusTestUtils.enrollWithFeatureConfig({
featureId: TEST_FEATURE.featureId,
value: { enabled: false },
});
const meta = NimbusFeatures[TEST_FEATURE.featureId].getEnrollmentMetadata();
Services.telemetry.clearEvents();
TEST_FEATURE.recordExposureEvent();
TelemetryTestUtils.assertEvents(
[
{
method: "expose",
object: TELEMETRY_OBJECT,
value: meta.slug,
extra: {
branchSlug: meta.branch,
featureId: TEST_FEATURE.featureId,
},
},
],
EVENT_FILTER
);
await cleanup();
});
add_task(async function test_rollout_expose_Telemetry() {
const cleanup = await NimbusTestUtils.enrollWithFeatureConfig(
{
featureId: TEST_FEATURE.featureId,
value: { enabled: false },
},
{ isRollout: true }
);
const meta = NimbusFeatures[TEST_FEATURE.featureId].getEnrollmentMetadata();
Assert.ok(!!meta, "Found enrolled experiment");
Services.telemetry.clearEvents();
TEST_FEATURE.recordExposureEvent();
TelemetryTestUtils.assertEvents(
[
{
method: "expose",
object: TELEMETRY_OBJECT,
value: meta.slug,
extra: {
branchSlug: meta.branch,
featureId: TEST_FEATURE.featureId,
},
},
],
EVENT_FILTER
);
await cleanup();
});