diff options
Diffstat (limited to 'browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js')
-rw-r--r-- | browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js | 103 |
1 files changed, 102 insertions, 1 deletions
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js index a247341fef..f3b04d7f9c 100644 --- a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js +++ b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js @@ -1,4 +1,5 @@ "use strict"; +requestLongerTimeout(3); async function expectSavedAddresses(expectedAddresses) { const addresses = await getAddresses(); @@ -18,7 +19,11 @@ async function expectSavedAddresses(expectedAddresses) { add_setup(async function () { await SpecialPowers.pushPrefEnv({ - set: [["extensions.formautofill.addresses.capture.enabled", true]], + set: [ + ["extensions.formautofill.addresses.enabled", true], + ["extensions.formautofill.addresses.supported", "on"], + ["extensions.formautofill.addresses.capture.enabled", true], + ], }); }); @@ -102,6 +107,7 @@ add_task(async function test_save_doorhanger_state_valid() { for (const TEST of TEST_CASES) { await expectSavedAddresses([]); + const onChanged = waitForStorageChangedEvents("add"); await BrowserTestUtils.withNewTab( { gBrowser, url: ADDRESS_FORM_URL }, async function (browser) { @@ -122,8 +128,103 @@ add_task(async function test_save_doorhanger_state_valid() { await clickDoorhangerButton(MAIN_BUTTON, 0); } ); + await onChanged; await expectSavedAddresses([Object.assign(DEFAULT, TEST.expected)]); await removeAllRecords(); } }); + +add_task(async function test_save_doorhanger_state_is_select() { + const DEFAULT_TEST_DOC = ` + <form id="form"> + <input id="name" autocomplete="name"> + <input id="street-address" autocomplete="street-address"> + <select id="address-level1" autocomplete="address-level1"> + <option value=""></option> + <option value="AL">Alabama</option> + <option value="AK">Alaska</option> + <option value="AP">Armed Forces Pacific</option> + + <option value="ca">california</option> + <option value="AR">US-Arkansas</option> + <option value="US-CA">California</option> + <option value="CA">California</option> + <option value="US-AZ">US_Arizona</option> + <option value="Ariz">Arizonac</option> + </select> + <input id="city" autocomplete="address-level2"> + <input id="country" autocomplete="country"> + <input id="submit" type="submit"> + </form>`; + + const TEST_CASES = [ + { + description: "Save state with regular select option", + filled: { "address-level1": "CA" }, + expected: { "address-level1": "CA" }, + }, + { + description: "Save state with lowercase value", + filled: { "address-level1": "ca" }, + expected: { "address-level1": "CA" }, + }, + { + description: "Save state with a country code prefixed to the label", + filled: { "address-level1": "AR" }, + expected: { "address-level1": "AR" }, + }, + { + description: "Save state with a country code prefixed to the value", + filled: { "address-level1": "US-CA" }, + expected: { "address-level1": "CA" }, + }, + { + description: + "Save state with a country code prefixed to the value and label", + filled: { "address-level1": "US-AZ" }, + expected: { "address-level1": "AZ" }, + }, + { + description: "Should not save when failed to abbreviate the value", + filled: { "address-level1": "Ariz" }, + expected: { "address-level1": "" }, + }, + { + description: "Should not save select with multiple selections", + filled: { "address-level1": ["AL", "AK", "AP"] }, + expected: { "address-level1": "" }, + }, + ]; + + for (const TEST of TEST_CASES) { + const onChanged = waitForStorageChangedEvents("add"); + await BrowserTestUtils.withNewTab(EMPTY_URL, async function (browser) { + info(`Test ${TEST.description}`); + + await SpecialPowers.spawn(browser, [DEFAULT_TEST_DOC], doc => { + content.document.body.innerHTML = doc; + }); + + await SimpleTest.promiseFocus(browser); + + const onPopupShown = waitForPopupShown(); + await focusUpdateSubmitForm(browser, { + focusSelector: "#name", + newValues: { + "#name": "John Doe", + "#street-address": "Main Street", + "#country": "US", + "#address-level1": TEST.filled["address-level1"], + }, + }); + + await onPopupShown; + await clickDoorhangerButton(MAIN_BUTTON, 0); + }); + await onChanged; + + await expectSavedAddresses([TEST.expected]); + await removeAllRecords(); + } +}); |