"use strict"; const TESTCASES = [ { description: "Form containing 8 fields with autocomplete attribute.", document: `
`, targetElementId: "given-name", expectedResult: [ "given-name", "additional-name", "family-name", "street-addr", "city", "country", "email", "tel", ], }, { description: "Form containing only 2 fields with autocomplete attribute.", document: `
`, targetElementId: "street-addr", expectedResult: [], }, { description: "Fields without form element.", document: ` `, targetElementId: "street-addr", expectedResult: ["street-addr", "city", "country", "email", "tel"], }, ]; let markedFieldId = []; var FormAutofillContent; add_task(async function setup() { ({ FormAutofillContent } = ChromeUtils.import( "resource://formautofill/FormAutofillContent.jsm" )); FormAutofillContent._markAsAutofillField = function(field) { markedFieldId.push(field.id); }; }); TESTCASES.forEach(testcase => { add_task(async function() { info("Starting testcase: " + testcase.description); markedFieldId = []; let doc = MockDocument.createTestDocument( "http://localhost:8080/test/", testcase.document ); let element = doc.getElementById(testcase.targetElementId); FormAutofillContent.identifyAutofillFields(element); Assert.deepEqual( markedFieldId, testcase.expectedResult, "Check the fields were marked correctly." ); }); });