fune/browser/components/preferences/tests/browser_engines.js

96 lines
2.6 KiB
JavaScript

const { SearchTestUtils } = ChromeUtils.import(
"resource://testing-common/SearchTestUtils.jsm"
);
SearchTestUtils.init(this);
function getCellText(tree, i, cellName) {
return tree.view.getCellText(i, tree.columns.getNamedColumn(cellName));
}
add_task(async function setup() {
await SearchTestUtils.installSearchExtension({
keyword: ["testing", "customkeyword"],
search_url: "https://example.com/engine1",
search_url_get_params: "search={searchTerms}",
});
});
// Test Engine list
add_task(async function() {
let prefs = await openPreferencesViaOpenPreferencesAPI("search", {
leaveOpen: true,
});
is(prefs.selectedPane, "paneSearch", "Search pane is selected by default");
let doc = gBrowser.contentDocument;
let tree = doc.querySelector("#engineList");
ok(
!tree.hidden,
"The search engine list should be visible when Search is requested"
);
// Check for default search engines to be displayed in the engineList
let defaultEngines = await Services.search.getAppProvidedEngines();
for (let i = 0; i < defaultEngines.length; i++) {
let engine = defaultEngines[i];
is(
getCellText(tree, i, "engineName"),
engine.name,
"Default search engine " + engine.name + " displayed correctly"
);
}
let customEngineIndex = defaultEngines.length;
is(
getCellText(tree, customEngineIndex, "engineKeyword"),
"testing, customkeyword",
"Show internal aliases"
);
// Scroll the treeview into view since mouse operations
// off screen can act confusingly.
tree.scrollIntoView();
let rect = tree.getCoordsForCellItem(
customEngineIndex,
tree.columns.getNamedColumn("engineKeyword"),
"text"
);
let x = rect.x + rect.width / 2;
let y = rect.y + rect.height / 2;
let win = tree.ownerGlobal;
let promise = BrowserTestUtils.waitForEvent(tree, "dblclick");
EventUtils.synthesizeMouse(tree.body, x, y, { clickCount: 1 }, win);
EventUtils.synthesizeMouse(tree.body, x, y, { clickCount: 2 }, win);
await promise;
EventUtils.sendString("newkeyword");
EventUtils.sendKey("RETURN");
await TestUtils.waitForCondition(() => {
return (
getCellText(tree, customEngineIndex, "engineKeyword") ===
"newkeyword, testing, customkeyword"
);
});
// Avoid duplicated keywords
tree.view.setCellText(
0,
tree.columns.getNamedColumn("engineKeyword"),
"keyword"
);
tree.view.setCellText(
1,
tree.columns.getNamedColumn("engineKeyword"),
"keyword"
);
isnot(
getCellText(tree, 1, "engineKeyword"),
"keyword",
"Do not allow duplicated keywords"
);
BrowserTestUtils.removeTab(gBrowser.selectedTab);
});