summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/test/browser/browser_autocomplete_marked_back_forward.js
blob: ada61fa0142c702d33fd2632e5901e91cee93a3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
 * Test that autofill autocomplete works after back/forward navigation
 */

"use strict";

const URL = BASE_URL + "autocomplete_basic.html";

function checkPopup(autoCompletePopup) {
  let first = autoCompletePopup.view.results[0];
  const { primary, secondary } = JSON.parse(first.label);
  ok(
    primary.startsWith(TEST_ADDRESS_1["street-address"].split("\n")[0]),
    "Check primary label is street address"
  );
  is(
    secondary,
    TEST_ADDRESS_1["address-level2"],
    "Check secondary label is address-level2"
  );
}

add_task(async function setup_storage() {
  await setStorage(TEST_ADDRESS_1, TEST_ADDRESS_2, TEST_ADDRESS_3);
});

add_task(async function test_back_forward() {
  await BrowserTestUtils.withNewTab(
    { gBrowser, url: URL },
    async function (browser) {
      const { autoCompletePopup } = browser;

      // Check the page after the initial load
      await openPopupOn(browser, "#street-address");
      checkPopup(autoCompletePopup);

      // Now navigate forward and make sure autofill autocomplete results are still attached
      let loadPromise = BrowserTestUtils.browserLoaded(browser);
      BrowserTestUtils.loadURIString(browser, `${URL}?load=2`);
      info("expecting browser loaded");
      await loadPromise;

      // Check the second page
      await openPopupOn(browser, "#street-address");
      checkPopup(autoCompletePopup);

      // Check after hitting back to the first page
      let stoppedPromise = BrowserTestUtils.browserStopped(browser);
      browser.goBack();
      info("expecting browser stopped");
      await stoppedPromise;
      await openPopupOn(browser, "#street-address");
      checkPopup(autoCompletePopup);

      // Check after hitting forward to the second page
      stoppedPromise = BrowserTestUtils.browserStopped(browser);
      browser.goForward();
      info("expecting browser stopped");
      await stoppedPromise;
      await openPopupOn(browser, "#street-address");
      checkPopup(autoCompletePopup);

      await closePopup(browser);
    }
  );
});