test_inspectFields.js (1492B)
1 /* Any copyright is dedicated to the Public Domain. 2 https://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const { FormAutofillChild } = ChromeUtils.importESModule( 7 "resource://autofill/FormAutofillChild.sys.mjs" 8 ); 9 10 add_task(async function test_inspectFields() { 11 const doc = MockDocument.createTestDocument( 12 "http://localhost:8080/test/", 13 `<form> 14 <input id="cc-number" autocomplete="cc-number"> 15 <input id="cc-name" autocomplete="cc-name"> 16 <input id="cc-exp" autocomplete="cc-exp"> 17 </form> 18 <select id="cc-type" autocomplete="cc-type"> 19 <option/> 20 <option value="visa">VISA</option> 21 </select> 22 <form> 23 <input id="name" autocomplete="name"> 24 <select id="country" autocomplete="country"> 25 <option/> 26 <option value="US">United States</option> 27 </select> 28 </form> 29 <input id="email" autocomplete="email"> 30 <input id="unknown" autocomplete="unknown"> 31 ` 32 ); 33 const fac = new FormAutofillChild(); 34 sinon.stub(fac, "document").get(() => { 35 return doc; 36 }); 37 sinon.stub(fac, "browsingContext").get(() => { 38 return {}; 39 }); 40 41 const fields = fac.inspectFields(); 42 43 const expectedElements = Array.from(doc.querySelectorAll("input, select")); 44 const inspectedElements = fields.map(field => field.element); 45 Assert.deepEqual( 46 expectedElements, 47 inspectedElements, 48 "inspectedElements should return all the eligible fields" 49 ); 50 51 sinon.restore(); 52 });