Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
const { ExperimentAPI } = ChromeUtils.importESModule(
"resource://nimbus/ExperimentAPI.sys.mjs"
);
const { ExperimentFakes } = ChromeUtils.importESModule(
);
const { RemoteSettings } = ChromeUtils.importESModule(
);
ChromeUtils.defineESModuleGetters(this, {
});
add_task(async function () {
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:support" },
async function (browser) {
let keyLocationServiceGoogleStatus = await SpecialPowers.spawn(
browser,
[],
async function () {
let textBox = content.document.getElementById(
"key-location-service-google-box"
);
await ContentTaskUtils.waitForCondition(
() => content.document.l10n.getAttributes(textBox).id,
"Google location service API key status loaded"
);
return content.document.l10n.getAttributes(textBox).id;
}
);
ok(
keyLocationServiceGoogleStatus,
"Google location service API key status shown"
);
let keySafebrowsingGoogleStatus = await SpecialPowers.spawn(
browser,
[],
async function () {
let textBox = content.document.getElementById(
"key-safebrowsing-google-box"
);
await ContentTaskUtils.waitForCondition(
() => content.document.l10n.getAttributes(textBox).id,
"Google Safebrowsing API key status loaded"
);
return content.document.l10n.getAttributes(textBox).id;
}
);
ok(
keySafebrowsingGoogleStatus,
"Google Safebrowsing API key status shown"
);
let keyMozillaStatus = await SpecialPowers.spawn(
browser,
[],
async function () {
let textBox = content.document.getElementById("key-mozilla-box");
await ContentTaskUtils.waitForCondition(
() => content.document.l10n.getAttributes(textBox).id,
"Mozilla API key status loaded"
);
return content.document.l10n.getAttributes(textBox).id;
}
);
ok(keyMozillaStatus, "Mozilla API key status shown");
}
);
});
add_task(async function test_nimbus_experiments() {
await ExperimentAPI.ready();
let doExperimentCleanup = await ExperimentFakes.enrollWithFeatureConfig({
featureId: "aboutwelcome",
value: { enabled: true },
});
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:support" },
async function (browser) {
let experimentName = await SpecialPowers.spawn(
browser,
[],
async function () {
await ContentTaskUtils.waitForCondition(
() =>
content.document.querySelector(
"#remote-experiments-tbody tr:first-child td"
)?.innerText
);
return content.document.querySelector(
"#remote-experiments-tbody tr:first-child td"
).innerText;
}
);
ok(
experimentName.match("Nimbus"),
"Rendered the expected experiment slug"
);
}
);
doExperimentCleanup();
});
add_task(async function test_remote_configuration() {
await ExperimentAPI.ready();
let doCleanup = await ExperimentFakes.enrollWithFeatureConfig(
{
featureId: NimbusFeatures.aboutwelcome.featureId,
value: { enabled: true },
},
{ isRollout: true }
);
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:support" },
async function (browser) {
let [userFacingName, branch] = await SpecialPowers.spawn(
browser,
[],
async function () {
await ContentTaskUtils.waitForCondition(
() =>
content.document.querySelector(
"#remote-features-tbody tr:first-child td"
)?.innerText
);
let rolloutName = content.document.querySelector(
"#remote-features-tbody tr:first-child td"
).innerText;
let branchName = content.document.querySelector(
"#remote-features-tbody tr:first-child td:nth-child(2)"
).innerText;
return [rolloutName, branchName];
}
);
ok(
userFacingName.match("NimbusTestUtils recipe"),
`Rendered the expected rollout ${userFacingName}`
);
ok(branch.match("control"), "Rendered the expected rollout branch");
}
);
doCleanup();
});
add_task(async function test_remote_settings() {
const sandbox = sinon.createSandbox();
sandbox.stub(RemoteSettings, "inspect").resolves({
isSynchronizationBroken: false,
lastCheck: 1715698289,
localTimestamp: '"1715698176626"',
history: {
"settings-sync": [
{ status: "SUCCESS", datetime: "2024-05-14T14:49:36.626Z", infos: {} },
],
},
});
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:support" },
async browser => {
const localTimestamp = await SpecialPowers.spawn(
browser,
[],
async () => {
const sel = "#support-remote-settings-local-timestamp";
await ContentTaskUtils.waitForCondition(
() => content.document.querySelector(sel)?.innerText
);
return content.document.querySelector(sel).innerText;
}
);
Assert.equal(
localTimestamp,
'"1715698176626"',
"Rendered the local timestamp"
);
}
);
registerCleanupFunction(() => {
sandbox.restore();
});
});