browser_searchScroll.js (2005B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 Services.scriptloader.loadSubScript( 5 "chrome://mochitests/content/browser/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js", 6 this 7 ); 8 9 const { AddonTestUtils } = ChromeUtils.importESModule( 10 "resource://testing-common/AddonTestUtils.sys.mjs" 11 ); 12 const { SearchTestUtils } = ChromeUtils.importESModule( 13 "resource://testing-common/SearchTestUtils.sys.mjs" 14 ); 15 const { SearchUtils } = ChromeUtils.importESModule( 16 "moz-src:///toolkit/components/search/SearchUtils.sys.mjs" 17 ); 18 19 AddonTestUtils.initMochitest(this); 20 SearchTestUtils.init(this); 21 22 add_setup(async function () { 23 await SpecialPowers.pushPrefEnv({ 24 set: [["dom.w3c_touch_events.enabled", 0]], 25 }); 26 }); 27 28 add_task(async function test_scroll() { 29 info("Open preferences page for search"); 30 await openPreferencesViaOpenPreferencesAPI("search", { leaveOpen: true }); 31 32 const doc = gBrowser.selectedBrowser.contentDocument; 33 const tree = doc.querySelector("#engineList"); 34 35 info("Add engines to make the tree scrollable"); 36 for (let i = 0, n = parseInt(tree.getAttribute("rows")); i < n; i++) { 37 let extension = await SearchTestUtils.installSearchExtension({ 38 id: `${i}@tests.mozilla.org`, 39 name: `example${i}`, 40 version: "1.0", 41 keyword: `example${i}`, 42 }); 43 await AddonTestUtils.waitForSearchProviderStartup(extension); 44 } 45 46 info("Make tree element move into viewport"); 47 const mainContent = doc.querySelector(".main-content"); 48 const readyForScrollIntoView = new Promise(r => { 49 mainContent.addEventListener("scroll", r, { once: true }); 50 }); 51 tree.scrollIntoView(); 52 await readyForScrollIntoView; 53 54 const previousScroll = mainContent.scrollTop; 55 56 await promiseMoveMouseAndScrollWheelOver(tree, 1, 1, false); 57 58 Assert.equal( 59 previousScroll, 60 mainContent.scrollTop, 61 "Container element does not scroll" 62 ); 63 64 info("Clean up"); 65 gBrowser.removeCurrentTab(); 66 });