195 lines
5.7 KiB
JavaScript
195 lines
5.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const { ExperimentAPI } = ChromeUtils.importESModule(
|
|
"resource://nimbus/ExperimentAPI.sys.mjs"
|
|
);
|
|
const { NimbusTestUtils } = ChromeUtils.importESModule(
|
|
"resource://testing-common/NimbusTestUtils.sys.mjs"
|
|
);
|
|
const { RemoteSettings } = ChromeUtils.importESModule(
|
|
"resource://services-settings/remote-settings.sys.mjs"
|
|
);
|
|
ChromeUtils.defineESModuleGetters(this, {
|
|
sinon: "resource://testing-common/Sinon.sys.mjs",
|
|
});
|
|
|
|
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 NimbusTestUtils.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"
|
|
);
|
|
}
|
|
);
|
|
|
|
await doExperimentCleanup();
|
|
});
|
|
|
|
add_task(async function test_remote_configuration() {
|
|
await ExperimentAPI.ready();
|
|
let doCleanup = await NimbusTestUtils.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();
|
|
});
|
|
});
|