WCAG 2.1 Implementations/JF/research

From WCAG WG

Functional Gap in Browsers with @autocomplete Attributes

As part of the testing required to advance the SC 1.3.4 WCAG 2.1 requirement, I initially set up a test file that had an example of each of the 53 named values for autocomplete tokens found in the W3C HTML 5.2 specification (https://www.w3.org/TR/html52/sec-forms.html#sec-autofill - I did not evaluate the values of True or False). The rudimentary test file can be found at http://john.foliot.ca/demos/autofill.php (Not Secure) and https://john.foliot.ca/demos/autofill.php (SSL Cert).

My intention with building out this file was to first attempt to fill out a form input with each value, to see which values were being “automatically” stored by each browser. Additionally, while sometimes difficult to find, form input values being stored on the browser can also usually be edited via the browser settings (on most browsers tested: I could not find a setting in Internet Explorer, but more on IE later). On a positive note, none of the browsers I tested would support the Credit Card fields on a page not encrypted via SSL.

Test Results

Current native support in the browsers is both incomplete and inconsistent across different browsers, with approximately 50% support of the named values (see chart below). Support in 3rd-party applications however appears quite robust.

NOTE: I have not tested support for additional address line or level fields beyond level 2, as most browsers did not provide the ability to add this data. 3rd-party applications such as LastPass however allow for custom fields to be added, so support for these fields is available in theory.

NOTE: Testing of the fields related to Credit Cards is restricted to forms being served via https. Screen captures here are provided from that secure context.

Summary:

Browsers by Platform
  Windows Platform Mac Platform
Autocomplete Token Values Firefox Chrome Edge Internet Explorer Vivaldi (Chromium) Brave Safari Chrome Firefox
autocomplete="name" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="honorific-prefix" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="given-name" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="additional-name" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="family-name" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="honorific-suffix" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="nickname" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="username" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="new-password" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="current-password" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="organization-title" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="organization" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="street-address" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="address-line1" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="address-line2" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="address-line3" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="address-level4" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="address-level3" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="address-level2" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="address-level1" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="country" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="country-name" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="postal-code" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="cc-name" Field-level support only Supported Not Applicable Not Applicable Supported Supported      
autocomplete="cc-given-name" Field-level support only Supported Not Applicable Not Applicable Supported Supported      
autocomplete="cc-additional-name" Field-level support only Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="cc-family-name" Field-level support only Supported Not Applicable Not Applicable Supported Supported      
autocomplete="cc-number" Field-level support only Supported Not Applicable Not Applicable Supported Supported      
autocomplete="cc-exp" Field-level support only Supported Not Applicable Not Applicable Supported Supported      
autocomplete="cc-exp-month" Field-level support only Supported Not Applicable Not Applicable Supported Supported      
autocomplete="cc-exp-year" Field-level support only Supported Not Applicable Not Applicable Supported Supported      
autocomplete="cc-csc" Field-level support only Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="cc-type" Field-level support only Supported Not Applicable Not Applicable Supported Supported      
autocomplete="transaction-currency" Field-level support only Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="transaction-amount" Field-level support only Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="language" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="bday" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="bday-day" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="bday-month" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="bday-year" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="sex" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="url" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="photo" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="tel" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="tel-country-code" Supported Not Supported Not Applicable Not Applicable Supported Not Supported      
autocomplete="tel-national" Supported Not Supported Not Applicable Not Applicable Supported Not Supported      
autocomplete="tel-area-code" Supported Not Supported Not Applicable Not Applicable Supported Not Supported      
autocomplete="tel-local" Supported Not Supported Not Applicable Not Applicable Supported Not Supported      
autocomplete="tel-local-prefix" Not Supported Not Supported Not Applicable Not Applicable Supported Not Supported      
autocomplete="tel-local-suffix" Not Supported Not Supported Not Applicable Not Applicable Supported Not Supported      
autocomplete="tel-extension" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
autocomplete="email" Supported Supported Not Applicable Not Applicable Supported Supported      
autocomplete="impp" Not Supported Not Supported Not Applicable Not Applicable Not Supported Not Supported      
3rd-Party Applications
Autocomplete Token Values LastPass (www.lastpass.com) DashLane (www.Dashlane.com)  
autocomplete="name" Supported Error - Wrong Value  
autocomplete="honorific-prefix" Supported Not Supported  
autocomplete="given-name" Supported Supported  
autocomplete="additional-name" Supported Not Supported  
autocomplete="family-name" Supported Supported  
autocomplete="honorific-suffix" Customized Support [1] Not Supported  
autocomplete="nickname" Supported Customized Support [2]  
autocomplete="username" Supported Customized Support [2]  
autocomplete="new-password" Customized Support [1] Not Supported  
autocomplete="current-password" Customized Support [1] Not Supported  
autocomplete="organization-title" Supported Not Supported  
autocomplete="organization" Supported Supported  
autocomplete="street-address" Supported Supported  
autocomplete="address-line1" Supported Error - Wrong Value  
autocomplete="address-line2" Error - Wrong Value Not Supported  
autocomplete="address-line3" Error - Wrong Value Not Supported  
autocomplete="address-level4" Supported Not Supported  
autocomplete="address-level3" Supported Not Supported  
autocomplete="address-level2" Supported Not Supported  
autocomplete="address-level1" Supported Not Supported  
autocomplete="country" Supported Error - Wrong Value  
autocomplete="country-name" Supported Supported  
autocomplete="postal-code" Supported Supported  
autocomplete="cc-name" Supported Error - Wrong Value  
autocomplete="cc-given-name" Supported Error - Wrong Value  
autocomplete="cc-additional-name" Supported Not Supported  
autocomplete="cc-family-name" Supported Not Supported  
autocomplete="cc-number" Supported Not Supported  
autocomplete="cc-exp" Supported Not Supported  
autocomplete="cc-exp-month" Supported Not Supported  
autocomplete="cc-exp-year" Supported Not Supported  
autocomplete="cc-csc" Supported Not Supported  
autocomplete="cc-type" Customized Support [1] Not Supported  
autocomplete="transaction-currency" Supported Not Supported  
autocomplete="transaction-amount" Supported Not Supported  
autocomplete="language" Error - Wrong Value Not Supported  
autocomplete="bday" Supported Supported  
autocomplete="bday-day" Supported Error - Wrong Value  
autocomplete="bday-month" Supported Error - Wrong Value  
autocomplete="bday-year" Supported Supported  
autocomplete="sex" Supported Not Supported  
autocomplete="url" Customized Support [1] Not Supported  
autocomplete="photo" Customized Support [1] Not Supported  
autocomplete="tel" Supported Supported  
autocomplete="tel-country-code" Supported Not Supported  
autocomplete="tel-national" Supported Not Supported  
autocomplete="tel-area-code" Error - Wrong Value Not Supported  
autocomplete="tel-local" Supported Not Supported  
autocomplete="tel-local-prefix" Error - Wrong Value Not Supported  
autocomplete="tel-local-suffix" Error - Wrong Value Not Supported  
autocomplete="tel-extension" Supported Not Supported  
autocomplete="email" Supported Supported  
autocomplete="impp" Customized Support [1] Not Supported  


Results by Browser

Firefox:

Screen Capture: Firefox Browser
Screen Capture: Firefox Browser
Supports (16+2 values + Unusual Support for the 12 Credit Card fields):
  • autocomplete="name"
  • autocomplete="given-name"
  • autocomplete="additional-name"
  • autocomplete="family-name"
  • autocomplete="organization"
  • autocomplete="street-address"
  • autocomplete="address-line1" (appears to re-use street-address data)
  • autocomplete="address-level1" (* State)
  • autocomplete="address-level2" (* City)
  • autocomplete="country" (** Appears to extract 2-letter code via the dropdown values)
  • autocomplete="country-name"
  • autocomplete="postal-code"
  • autocomplete="tel"
  • autocomplete="tel-country-code"
  • autocomplete="tel-national"
  • autocomplete="tel-area-code"
  • autocomplete="tel-local"
  • autocomplete="email"

NOTE: Firefox claims to only support address fields in the United States (see highlighted comment in inset image)

NOTE: in Firefox, when providing a space-separated value for telephone, the browser re-configures the number as a solid string, and adds the “+” in front of the country code.

Credit Card Data:

  • autocomplete="cc-name"
  • autocomplete="cc-given-name"
  • autocomplete="cc-additional-name"
  • autocomplete="cc-family-name"
  • autocomplete="cc-number"
  • autocomplete="cc-exp"
  • autocomplete="cc-exp-month"
  • autocomplete="cc-exp-year"
  • autocomplete="cc-csc"
  • autocomplete="cc-type"
  • autocomplete="transaction-currency"
  • autocomplete="transaction-amount"

NOTE: Firefox does not appear to auto-populate Credit Card fields, however it does appear to remember values if you start typing into each field, by exposing possible 'completed' values, in a fashion to how Edge and Internet Explorer support form inputs (see below).


Chrome:

Screen Capture: Chrome Browser
Screen Capture: Chrome Browser
Supports (21+1 values):
  • autocomplete="name"
  • autocomplete="given-name"
  • autocomplete="additional-name"
  • autocomplete="family-name"
  • autocomplete="organization"
  • autocomplete="street-address"
  • autocomplete="address-line1" (* Appears to re-use street-address data – need to verify spec intent)
  • autocomplete="address-level1" (* State)
  • autocomplete="address-level2" (* City)
  • autocomplete="country" (** Appears to extract 2-letter code via the dropdown values)
  • autocomplete="country-name"
  • autocomplete="postal-code"
  • autocomplete="tel"
  • autocomplete="email"

Credit Card Data:

  • autocomplete="cc-name"
  • autocomplete="cc-given-name"
  • autocomplete="cc-family-name"
  • autocomplete="cc-number"
  • autocomplete="cc-exp"
  • autocomplete="cc-exp-month"
  • autocomplete="cc-exp-year"
  • autocomplete="cc-type"

Internet Explorer

Screen Capture: Internet Explorer Browser
Screen Capture: Internet Explorer Browser
Does Not Support

Currently, it does not appear that Internet Explorer supports any of the autocomplete values. When attempting to complete the form, IE offers up some values for form inputs based upon what appears to be a rudimentary predictive typing feature, but there does not appear to be any direct association of the values to possible data-fields. For example, in the screen capture, when typing in “J”, the browser offers possible values previously typed that begin with “j”, but with no other apparent logic provided.

Credit Card Data: Card fields operate in the same fashion as all the other fields. For example, if I attempt to start typing a credit card number that starts with three, then the browser offers to insert 372572661123456, although there is no indication that it is a valid CC number or not, nor which card it is. (Currently using a dummy American Express number)


Microsoft Edge:

Screen Capture: Edge Browser
Screen Capture: Edge Browser
Does Not Support

Currently, it does not appear that Edge supports any of the autocomplete values. When attempting to complete the form, Edge offers up some recently typed values for form inputs, but there does not appear to be any association of the values to possible data-fields.

Credit Card Data: Card fields operate in the same fashion as all the other fields. For example, if I attempt to start typing a credit card number that starts with three, then the browser offers to insert 372572661123456, although there is no indication that it is a valid CC number or not, nor which card it is.



Vivaldi Browser (based on Chromium)

Source: https://vivaldi.com

Supports (27+1 values):
  • autocomplete="name"
  • autocomplete="given-name"
  • autocomplete="additional-name"
  • autocomplete="family-name"
  • autocomplete="organization"
  • autocomplete="street-address"
  • autocomplete="address-line1" (* Appears to re-use street-address data – need to verify spec intent)
  • autocomplete="address-level1" (* State)
  • autocomplete="address-level2" (* City)
  • autocomplete="country" (** Appears to extract 2-letter code via the dropdown values)
  • autocomplete="country-name"
  • autocomplete="postal-code"
  • autocomplete="tel"
  • autocomplete="tel-country-code"
  • autocomplete="tel-national"
  • autocomplete="tel-area-code"
  • autocomplete="tel-local"
  • autocomplete="tel-local-prefix"
  • autocomplete="tel-local-suffix"
  • autocomplete="email"

Credit Card Data:

  • autocomplete="cc-name"
  • autocomplete="cc-given-name"
  • autocomplete="cc-family-name"
  • autocomplete="cc-number"
  • autocomplete="cc-exp"
  • autocomplete="cc-exp-month"
  • autocomplete="cc-exp-year"
  • autocomplete="cc-type"

Brave Browser (Chromium)

Screen capture: Brave browser
Screen capture: Brave browser

Source: https://www.brave.com

Supports (21+1 values):
  • autocomplete="name"
  • autocomplete="given-name"
  • autocomplete="additional-name"
  • autocomplete="family-name"
  • autocomplete="organization"
  • autocomplete="street-address"
  • autocomplete="address-line1" (* Appears to re-use street-address data – need to verify spec intent)
  • autocomplete="address-level1" (* State)
  • autocomplete="address-level2" (* City)
  • autocomplete="country" (** Appears to extract 2-letter code via the dropdown values)
  • autocomplete="country-name"
  • autocomplete="postal-code"
  • autocomplete="tel"
  • autocomplete="email"

Credit Card Data:

  • autocomplete="cc-name"
  • autocomplete="cc-given-name"
  • autocomplete="cc-family-name"
  • autocomplete="cc-number"
  • autocomplete="cc-exp"
  • autocomplete="cc-exp-month"
  • autocomplete="cc-exp-year"
  • autocomplete="cc-type"

Results by 3rd-Party Application

LastPass Premium (www.lastpass.com)

Chrome browser, with fields completed via the LastPass application
Chrome browser, with fields completed via the LastPass application
Supports (40 values natively, support for 49 with user-customization):
  • autocomplete=name
  • autocomplete=honorific-prefix
  • autocomplete=given-name
  • autocomplete=additional-name
  • autocomplete=family-name
  • autocomplete=honorific-suffix (Customized Support)
  • autocomplete=organization-title
  • autocomplete=organization
  • autocomplete=street-address
  • autocomplete=address-line1
  • autocomplete=address-line2 (Issues with Line2 and Line3 values - see screen capture)
  • autocomplete=address-line3
  • autocomplete=address-level4 (Customized Support)
  • autocomplete=address-level3 (Customized Support)
  • autocomplete=address-level2
  • autocomplete=address-level1
  • autocomplete=country
  • autocomplete=country-name
  • autocomplete=postal-code
  • autocomplete=nickname
  • autocomplete=username
  • autocomplete=new-password (Customized Support)
  • autocomplete=current-password (Customized Support)
  • autocomplete=bday
  • autocomplete=bday-day
  • autocomplete=bday-month
  • autocomplete=bday-year
  • autocomplete=sex
  • autocomplete=url (Customized Support)
  • autocomplete=photo (Customized Support)
  • autocomplete=tel
  • autocomplete=tel-country-code
  • autocomplete=tel-national
  • autocomplete=tel-local
  • autocomplete=tel-extension
  • autocomplete=email
  • autocomplete=impp (Customized Support)

Credit Card Data:

  • autocomplete=cc-name
  • autocomplete=cc-given-name
  • autocomplete=cc-additional-name
  • autocomplete=cc-family-name
  • autocomplete=cc-number
  • autocomplete=cc-exp
  • autocomplete=cc-exp-month
  • autocomplete=cc-exp-year
  • autocomplete=cc-csc
  • autocomplete=cc-type (Customized Support)
  • autocomplete=transaction-currency
  • autocomplete=transaction-amount


[1] Customized Support: LastPass does not currently support native fields for all values "Out-of-the-box", however there is a function to add additional values to the app, which then configures LastPass to support these new values.

Dashlane (www.dashlane.com)

Screen Capture: autocomplete form completed by Dashlane
Screen Capture: autocomplete form completed by Dashlane
Supports (12 values natively + 7 erroneously, no apparent support for user-customization):
  • autocomplete=given-name
  • autocomplete=family-name
  • autocomplete=honorific-suffix
  • autocomplete=nickname
  • autocomplete=username
  • autocomplete=organization
  • autocomplete=street-address
  • autocomplete=country-name
  • autocomplete=postal-code
  • autocomplete=bday
  • autocomplete=bday-year
  • autocomplete=tel
  • autocomplete=email

Credit Card Data:

NOTE: Dashlane appears to have numerous confusions related to fields and values

[2] Username and nickname appear to be auto-generated by the application