Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
const TEST_CHAT_PROVIDER_URL = "http://mochi.test:8888/";
const COMMON_TELEMETRY = {
aiControlTranslations: "translations",
aiControlPdfjsAltText: "pdfjsAltText",
aiControlSmartTabGroups: "smartTabGroups",
aiControlLinkPreviews: "linkPreviewKeyPoints",
aiControlSidebarChatbot: "sidebarChatbot",
};
describe("AI Controls telemetry", () => {
let doc;
beforeEach(async function setup() {
await SpecialPowers.pushPrefEnv({
set: [
["browser.preferences.aiControls", true],
["browser.ai.control.default", "available"],
["browser.ai.control.translations", "default"],
["browser.ai.control.pdfjsAltText", "default"],
["browser.ai.control.smartTabGroups", "default"],
["browser.ai.control.linkPreviewKeyPoints", "default"],
["browser.ai.control.sidebarChatbot", "default"],
["browser.ml.chat.provider", ""],
["browser.translations.enable", true],
["browser.tabs.groups.smart.optin", true],
],
});
Services.fog.testResetFOG();
await openPreferencesViaOpenPreferencesAPI("ai", { leaveOpen: true });
doc = gBrowser.selectedBrowser.contentDocument;
});
afterEach(() => {
BrowserTestUtils.removeTab(gBrowser.selectedTab);
});
it("records no event before interaction", async () => {
Assert.equal(
Glean.browser.aiControlChanged.testGetValue(),
null,
"No events recorded before any interaction"
);
});
it("records events when translations set to blocked", async () => {
let selectEl = doc.getElementById("aiControlTranslationsSelect");
await changeMozSelectValue(selectEl, "blocked");
let events = Glean.browser.aiControlChanged.testGetValue();
Assert.equal(events.length, 1, "One event recorded");
Assert.equal(
events[0].extra.feature,
"translations",
"Feature is translations"
);
Assert.equal(events[0].extra.selection, "blocked", "Selection is blocked");
});
it("records event when smartTabGroups set to enabled", async () => {
let selectEl = doc.getElementById("aiControlSmartTabGroupsSelect");
await changeMozSelectValue(selectEl, "enabled");
let events = Glean.browser.aiControlChanged.testGetValue();
Assert.equal(events.length, 1, "One event recorded");
Assert.equal(
events[0].extra.feature,
"smartTabGroups",
"Feature is smartTabGroups"
);
Assert.equal(events[0].extra.selection, "enabled", "Selection is enabled");
});
it("records event when sidebarChatbot set to blocked", async () => {
let selectEl = doc.getElementById("aiControlSidebarChatbotSelect");
await changeMozSelectValue(selectEl, "blocked");
let options = selectEl.querySelectorAll("moz-option");
// Last one is a chatbot, mock its URL to avoid network requets
let chatbotOption = options[options.length - 1];
chatbotOption.value = TEST_CHAT_PROVIDER_URL;
await chatbotOption.updateComplete;
await selectEl.updateComplete;
await changeMozSelectValue(selectEl, TEST_CHAT_PROVIDER_URL);
let events = Glean.browser.aiControlChanged.testGetValue();
Assert.equal(events.length, 2, "Two events recorded");
Assert.equal(
events[0].extra.feature,
"sidebarChatbot",
"Feature is sidebarChatbot"
);
Assert.equal(events[0].extra.selection, "blocked", "Selection is blocked");
Assert.equal(
events[1].extra.feature,
"sidebarChatbot",
"Feature is sidebarChatbot"
);
Assert.equal(events[1].extra.selection, "enabled", "Selection is enabled");
});
});