Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android'
- Manifest: toolkit/components/search/tests/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
/**
* This tests the SearchEngineSelector matching the correct variant engine.
* If multiple variants match, it should add the matching variants to the base
* cumulatively.
*/
"use strict";
const STATIC_SEARCH_URL_DATA = {
searchTermParamName: "q",
};
const CONFIG = [
{
identifier: "engine-1",
urls: {
search: {
...STATIC_SEARCH_URL_DATA,
params: [
{
name: "partner-code",
value: "code",
},
],
},
},
variants: [
{
environment: { regions: ["CA", "GB", "IT"] },
urls: {
search: {
params: [],
},
},
},
{
environment: { regions: ["CA", "US"] },
urls: {
search: {
params: [
{
name: "partner-code",
value: "bar",
},
],
},
},
telemetrySuffix: "telemetry",
},
{
environment: { regions: ["CA", "GB"] },
urls: {
search: {
params: [
{
name: "partner-code",
value: "foo",
},
],
searchTermParamName: "search-param",
},
},
},
],
},
];
const CONFIG_CLONE = structuredClone(CONFIG);
const engineSelector = new SearchEngineSelector();
add_task(async function test_no_variants_match() {
await assertSelectorEnginesEqualsExpected(
engineSelector,
CONFIG,
{
locale: "fi",
region: "FI",
},
[],
"Should match no variants."
);
});
add_task(async function test_match_and_apply_last_variants() {
await assertSelectorEnginesEqualsExpected(
engineSelector,
CONFIG,
{
locale: "en-US",
region: "CA",
},
[
{
identifier: "engine-1",
name: "engine-1",
classification: "general",
urls: {
search: {
...STATIC_SEARCH_URL_DATA,
params: [{ name: "partner-code", value: "foo" }],
searchTermParamName: "search-param",
},
},
},
],
"Should match and apply last variant."
);
});
add_task(async function test_match_middle_variant() {
await assertSelectorEnginesEqualsExpected(
engineSelector,
CONFIG,
{
locale: "en-US",
region: "US",
},
[
{
identifier: "engine-1",
name: "engine-1",
classification: "general",
urls: {
search: {
...STATIC_SEARCH_URL_DATA,
params: [{ name: "partner-code", value: "bar" }],
},
},
telemetrySuffix: "telemetry",
},
],
"Should match first and second variants."
);
});
add_task(async function test_match_first_and_last_variant() {
await assertSelectorEnginesEqualsExpected(
engineSelector,
CONFIG,
{
locale: "en-GB",
region: "GB",
},
[
{
identifier: "engine-1",
name: "engine-1",
classification: "general",
urls: {
search: {
...STATIC_SEARCH_URL_DATA,
params: [{ name: "partner-code", value: "foo" }],
searchTermParamName: "search-param",
},
},
},
],
"Should match first and last variant."
);
});
add_task(async function test_match_variant_with_empty_params() {
await assertSelectorEnginesEqualsExpected(
engineSelector,
CONFIG,
{
locale: "it",
region: "IT",
},
[
{
identifier: "engine-1",
name: "engine-1",
classification: "general",
urls: {
search: {
...STATIC_SEARCH_URL_DATA,
params: [],
},
},
},
],
"Should match the first variant with empty params."
);
});
add_task(async function test_config_has_not_been_modified() {
Assert.deepEqual(
CONFIG,
CONFIG_CLONE,
"Should not modify the original test config after applying variant engines to the base engine."
);
});