Bug 1824112 - rewrite test_autocomplete_basic_form_related_realms.html r=credential-management-reviewers,dimi
to create dom dynamically once passwords have been setup Differential Revision: https://phabricator.services.mozilla.com/D176525
This commit is contained in:
@@ -12,27 +12,40 @@
|
||||
<body>
|
||||
Login Manager test: related realms autocomplete
|
||||
<p id="display"></p>
|
||||
<div id="content">
|
||||
<form id="form1" onsubmit="return false;">
|
||||
<input type="text" name="uname">
|
||||
<input type="password" name="pword">
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="content"></div>
|
||||
<pre id="test">
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
/** Test for Login Manager: related realms autocomplete. **/
|
||||
|
||||
const uname = getFormElementByName(1, "uname");
|
||||
const pword = getFormElementByName(1, "pword");
|
||||
function createForm () {
|
||||
const form = document.createElement("form");
|
||||
|
||||
function restoreForm() {
|
||||
uname.value = "";
|
||||
pword.value = "";
|
||||
uname.focus();
|
||||
const usernameInput = document.createElement("input");
|
||||
usernameInput.type = "text";
|
||||
usernameInput.name = "uname";
|
||||
form.appendChild(usernameInput);
|
||||
|
||||
const passwordInput = document.createElement("input");
|
||||
passwordInput.type = "password";
|
||||
passwordInput.name = "pword";
|
||||
form.appendChild(passwordInput);
|
||||
|
||||
const submitButton = document.createElement("button");
|
||||
submitButton.type = "submit";
|
||||
submitButton.name = "submit";
|
||||
submitButton.innerText = "Submit";
|
||||
form.appendChild(submitButton);
|
||||
|
||||
const content = document.getElementById("content");
|
||||
|
||||
if (content.firstChild) {
|
||||
content.replaceChild(form, content.firstChild);
|
||||
} else {
|
||||
content.appendChild(form);
|
||||
}
|
||||
|
||||
return form;
|
||||
}
|
||||
|
||||
function sendFakeAutocompleteEvent(element) {
|
||||
@@ -41,13 +54,9 @@ function sendFakeAutocompleteEvent(element) {
|
||||
element.dispatchEvent(acEvent);
|
||||
}
|
||||
|
||||
function spinEventLoop() {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
async function promiseACPopupClosed() {
|
||||
return SimpleTest.promiseWaitForCondition(async () => {
|
||||
let popupState = await getPopupState();
|
||||
const popupState = await getPopupState();
|
||||
return !popupState.open;
|
||||
}, "Wait for AC popup to be closed");
|
||||
}
|
||||
@@ -67,57 +76,59 @@ add_setup(async () => {
|
||||
});
|
||||
|
||||
add_task(async function test_form1_initial_empty() {
|
||||
await SimpleTest.promiseFocus(window);
|
||||
const form = createForm();
|
||||
|
||||
// Make sure initial form is empty.
|
||||
checkLoginForm(uname, "", pword, "");
|
||||
let popupState = await getPopupState();
|
||||
checkLoginForm(form.uname, "", form.pword, "");
|
||||
const popupState = await getPopupState();
|
||||
is(popupState.open, false, "Check popup is initially closed");
|
||||
});
|
||||
|
||||
add_task(async function test_form_related_domain_menuitems() {
|
||||
await SimpleTest.promiseFocus(window);
|
||||
restoreForm();
|
||||
const form = createForm();
|
||||
|
||||
form.uname.focus();
|
||||
|
||||
const autocompleteItems = await popupByArrowDown();
|
||||
let popupState = await getPopupState();
|
||||
const popupState = await getPopupState();
|
||||
|
||||
is(popupState.selectedIndex, -1, "Check no entires are selected upon opening");
|
||||
|
||||
let expectedMenuItems = ["relatedUser1", "subUser1"];
|
||||
const expectedMenuItems = ["relatedUser1", "subUser1"];
|
||||
checkAutoCompleteResults(autocompleteItems, expectedMenuItems, window.location.host, "Check all menuitems are displayed correctly");
|
||||
|
||||
let acEvents = await getTelemetryEvents({ process: "parent", filterProps: TelemetryFilterPropsAC, clear: true });
|
||||
const acEvents = await getTelemetryEvents({ process: "parent", filterProps: TelemetryFilterPropsAC, clear: true });
|
||||
is(acEvents.length, 1, "One autocomplete event");
|
||||
checkACTelemetryEvent(acEvents[0], uname, {
|
||||
checkACTelemetryEvent(acEvents[0], form.uname, {
|
||||
"hadPrevious": "0",
|
||||
"login": expectedMenuItems.length + "",
|
||||
"loginsFooter": "1"
|
||||
});
|
||||
checkLoginForm(uname, "", pword, ""); // value shouldn't update just by opening
|
||||
checkLoginForm(form.uname, "", form.pword, ""); // value shouldn't update just by opening
|
||||
|
||||
synthesizeKey("KEY_ArrowDown"); // first item
|
||||
checkLoginForm(uname, "", pword, ""); // value shouldn't update just by selecting
|
||||
checkLoginForm(form.uname, "", form.pword, ""); // value shouldn't update just by selecting
|
||||
|
||||
synthesizeKey("KEY_Enter");
|
||||
await promiseFormsProcessedInSameProcess();
|
||||
is(pword.value, "relatedPass1", "password should match the login that was selected");
|
||||
checkLoginForm(uname, "relatedUser1", pword, "relatedPass1");
|
||||
is(form.pword.value, "relatedPass1", "password should match the login that was selected");
|
||||
checkLoginForm(form.uname, "relatedUser1", form.pword, "relatedPass1");
|
||||
|
||||
restoreForm();
|
||||
form.uname.value = "";
|
||||
form.pword.value = "";
|
||||
form.uname.focus();
|
||||
|
||||
await popupByArrowDown();
|
||||
|
||||
synthesizeKey("KEY_ArrowDown"); // first item
|
||||
synthesizeKey("KEY_ArrowDown"); // second item
|
||||
checkLoginForm(uname, "", pword, ""); // value shouldn't update just by selecting
|
||||
checkLoginForm(form.uname, "", form.pword, ""); // value shouldn't update just by selecting
|
||||
|
||||
synthesizeKey("KEY_Enter");
|
||||
await promiseFormsProcessedInSameProcess();
|
||||
is(pword.value, "subPass1", "password should match the login that was selected");
|
||||
checkLoginForm(uname, "subUser1", pword, "subPass1");
|
||||
|
||||
restoreForm();
|
||||
is(form.pword.value, "subPass1", "password should match the login that was selected");
|
||||
checkLoginForm(form.uname, "subUser1", form.pword, "subPass1");
|
||||
});
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user