summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/test/browser/heuristics/browser_parse_creditcard_expiry_fields.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/extensions/formautofill/test/browser/heuristics/browser_parse_creditcard_expiry_fields.js')
-rw-r--r--browser/extensions/formautofill/test/browser/heuristics/browser_parse_creditcard_expiry_fields.js198
1 files changed, 198 insertions, 0 deletions
diff --git a/browser/extensions/formautofill/test/browser/heuristics/browser_parse_creditcard_expiry_fields.js b/browser/extensions/formautofill/test/browser/heuristics/browser_parse_creditcard_expiry_fields.js
new file mode 100644
index 0000000000..aa61633f17
--- /dev/null
+++ b/browser/extensions/formautofill/test/browser/heuristics/browser_parse_creditcard_expiry_fields.js
@@ -0,0 +1,198 @@
+/* Any copyright is dedicated to the Public Domain.
+http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/* global add_heuristic_tests */
+
+"use strict";
+
+add_heuristic_tests([
+ {
+ description:
+ "Apply credit card expiry heuristic only when there is only 1 credit card expiry field",
+ fixtureData: `
+ <html>
+ <body>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" placeholder="mm-yy"/>
+ </form>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" id="month"/>
+ </form>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" id="year"/>
+ </form>
+ </body>
+ </html>
+ `,
+ expectedResult: [
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-exp", reason: "regex-heuristic" },
+ ],
+ },
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-exp", reason: "update-heuristic" },
+ ],
+ },
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-exp", reason: "update-heuristic" },
+ ],
+ },
+ ],
+ },
+ {
+ description:
+ "Do not apply credit card expiry heuristic only when the previous field is not a cc field",
+ fixtureData: `
+ <html>
+ <body>
+ <form>
+ <input type="text" placeholder="mm-yy"/>
+ <input type="text" autocomplete="cc-number"/>
+ </form>
+ <form>
+ <input type="text" id="month"/>
+ <input type="text" autocomplete="cc-number"/>
+ </form>
+ <form>
+ <input type="text" id="year"/>
+ <input type="text" autocomplete="cc-number"/>
+ </form>
+ </body>
+ </html>
+ `,
+ expectedResult: [
+ {
+ fields: [
+ { fieldName: "cc-exp", reason: "regex-heuristic" },
+ { fieldName: "cc-number", reason: "autocomplete" },
+ ],
+ },
+ {
+ fields: [{ fieldName: "cc-number", reason: "autocomplete" }],
+ },
+ {
+ fields: [{ fieldName: "cc-number", reason: "autocomplete" }],
+ },
+ ],
+ },
+ {
+ description:
+ "Apply credit card expiry heuristic only when the previous fields has a credit card number field",
+ fixtureData: `
+ <html>
+ <body>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" autocomplete="cc-name"/>
+ <input type="text" placeholder="month"/>
+ </form>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" autocomplete="cc-family-name"/>
+ <input type="text" autocomplete="cc-given-name"/>
+ <input type="text" placeholder="month"/>
+ </form>
+ </body>
+ </html>
+ `,
+ expectedResult: [
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-name", reason: "autocomplete" },
+ { fieldName: "cc-exp", reason: "update-heuristic" },
+ ],
+ },
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-family-name", reason: "autocomplete" },
+ { fieldName: "cc-given-name", reason: "autocomplete" },
+ { fieldName: "cc-exp", reason: "update-heuristic" },
+ ],
+ },
+ ],
+ },
+ {
+ description:
+ "Apply credit card expiry heuristic only when there are credit card expiry fields",
+ fixtureData: `
+ <html>
+ <body>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" placeholder="month"/>
+ <input type="text" placeholder="year"/>
+ </form>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" placeholder="month"/>
+ <input type="text" placeholder="month"/>
+ </form>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" placeholder="year"/>
+ <input type="text" placeholder="year"/>
+ </form>
+ </body>
+ </html>
+ `,
+ expectedResult: [
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-exp-month", reason: "regex-heuristic" },
+ { fieldName: "cc-exp-year", reason: "regex-heuristic" },
+ ],
+ },
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-exp-month", reason: "regex-heuristic" },
+ { fieldName: "cc-exp-year", reason: "update-heuristic" },
+ ],
+ },
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-exp-month", reason: "update-heuristic" },
+ { fieldName: "cc-exp-year", reason: "regex-heuristic" },
+ ],
+ },
+ ],
+ },
+ {
+ description: "Honor autocomplete attribute",
+ fixtureData: `
+ <html>
+ <body>
+ <form>
+ <input type="text" autocomplete="cc-number"/>
+ <input type="text" placeholder="month" autocomplete="cc-exp"/>
+ <input type="text" placeholder="year" autocomplete="cc-exp"/>
+ </form>
+ </body>
+ </html>
+ `,
+ expectedResult: [
+ {
+ fields: [
+ { fieldName: "cc-number", reason: "autocomplete" },
+ { fieldName: "cc-exp", reason: "autocomplete" },
+ ],
+ },
+ {
+ fields: [{ fieldName: "cc-exp", reason: "autocomplete" }],
+ },
+ ],
+ },
+]);