fune/dom/browser-element/mochitest/browserElement_Find.js
Brad Werth 809981099e Bug 1436431 Part 4: Disable and update an existing mochitest of find-in-page. r=bz
The changes made to this test make the test failure messages more useful. The
test is disabled because the test fails on some platforms. The failures seem
to indicate that, after a Find for text with multiple matches, the match that
is selected is not the first match after the currently highlighted text. Other
expected success indicators like total number of matches are correct.
Bug 1458393 has been opened to investigate this differing behavior and
re-enable the test.

MozReview-Commit-ID: 8Jwr9mKNzGr

--HG--
extra : rebase_source : a8a79a85e08dc5fdc7efe6b14f74a9bd18cb8864
2018-04-27 10:56:39 -07:00

148 lines
3.8 KiB
JavaScript

/* Any copyright is dedicated to the public domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// Bug 1163961 - Test search API
"use strict";
SimpleTest.waitForExplicitFinish();
browserElementTestHelpers.setEnabledPref(true);
function runTest() {
let iframe = document.createElement('iframe');
iframe.setAttribute('mozbrowser', 'true');
iframe.src = 'data:text/html,foo bar foo XXX Foo BAR foobar foobar';
const once = (eventName) => {
return new Promise((resolve) => {
iframe.addEventListener(eventName, function(...args) {
resolve(...args);
}, {once: true});
});
}
// Test if all key=>value pairs in o1 are present in o2.
const c = (o1, o2, i) => {
for (let k of Object.keys(o1)) {
is(o1[k], o2[k], `Test ${i} should match for key ${k}`);
}
}
let testCount = 0;
once('mozbrowserloadend').then(() => {
iframe.findAll('foo', 'case-insensitive');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'foo',
searchLimit: 1000,
activeMatchOrdinal: 1,
numberOfMatches: 5,
}, testCount++);
iframe.findNext('forward');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'foo',
searchLimit: 1000,
activeMatchOrdinal: 2,
numberOfMatches: 5,
}, testCount++);
iframe.findNext('backward');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'foo',
searchLimit: 1000,
activeMatchOrdinal: 1,
numberOfMatches: 5,
}, testCount++);
iframe.findAll('xxx', 'case-sensitive');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'xxx',
searchLimit: 1000,
activeMatchOrdinal: 0,
numberOfMatches: 0,
}, testCount++);
iframe.findAll('bar', 'case-insensitive');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'bar',
searchLimit: 1000,
activeMatchOrdinal: 1,
numberOfMatches: 4,
}, testCount++);
iframe.findNext('forward');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'bar',
searchLimit: 1000,
activeMatchOrdinal: 2,
numberOfMatches: 4,
}, testCount++);
iframe.findNext('forward');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'bar',
searchLimit: 1000,
activeMatchOrdinal: 3,
numberOfMatches: 4,
}, testCount++);
iframe.findNext('forward');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'bar',
searchLimit: 1000,
activeMatchOrdinal: 4,
numberOfMatches: 4,
}, testCount++);
iframe.findNext('forward');
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: true,
searchString: 'bar',
searchLimit: 1000,
activeMatchOrdinal: 1,
numberOfMatches: 4,
}, testCount++);
iframe.clearMatch();
return once('mozbrowserfindchange');
}).then(({detail}) => {
c(detail, {
msg_name: "findchange",
active: false
}, testCount++);
SimpleTest.finish();
});
document.body.appendChild(iframe);
}
addEventListener('testready', runTest);