Declared address
Every field states what it wants through autocomplete.
This is the easy path and the one a well-built checkout uses — if
anything fails here, nothing else will work either.
Shipping
Plain tokens, no section or billing prefixes.
Expected: picking one address fills the whole block in one go.
With section and shipping prefixes
autocomplete="section-blue shipping postal-code" is
valid. Only the last word is the token; the rest must be ignored.
Expected: same as above, prefixes make no difference.
Guessed address
Nothing is declared. CoerFill has to work it out from the label, the name attribute and the placeholder. This is the heuristic path, and the reason the picker always shows what it is about to write.
Labels only
No autocomplete anywhere; every field has a real <label for>.
Expected: recognised from the label text alone.
Name attributes only
No labels at all — the shape a hand-rolled form often has.
Expected: addressLine1 beats address
— the longer hint wins, so line 1 and line 2 do not both get the street.
aria-labelledby
The label lives in a separate element, referenced by id.
PostcodeExpected: found through the reference.
Dutch labels
Most forms you actually meet are in Dutch. Same heuristics, other words.
Bezorgadres
Expected: every field recognised from the Dutch word.
Payment
The card number and the security code are the two values that turn a filled form into a payment, so they are the two behind Windows Hello. The expiry date is not: a prompt for a month teaches you to wave the prompt away.
Declared card fields
Expected: the picker shows the card masked (•••• 4242).
Filling asks for Windows Hello once, naming the card and this site.
Within five minutes a second card fill asks nothing.
Guessed card fields
Nothing declared — the names are what a checkout tends to use.
Expected: same behaviour, including the unlock.
No <form> element
Most modern checkouts are divs, not forms. CoerFill falls back to the whole document, so one pick still fills the set.
Divs all the way down
Expected: fills exactly like a real form.
Reactive field
This field behaves like a React-controlled input: it keeps its own
copy of the value and puts it back unless it sees the events a real
keystroke produces. Assigning .value alone is the
classic autofill bug, and this is the field that catches it.
Watched input
Expected: after filling, this line says the value stuck and both events were seen.
Split and odd fields
Fields that are one value in CoerFill but several on the page, and a couple of shapes that trip naive matching.
Expiry split in two
Expected: only filled when the entry holds month and year
separately. An entry with just cc-exp leaves these alone.
Name as one field
Expected: filled from name, not from first name.
Already filled
The picker deliberately stays away from a field that already has a value — that is usually you coming back to check it.
Expected: no picker on focus. Ctrl+Shift+F still opens it.
Hands off
The half that is easy to forget to test. Nothing here should ever be offered a value.
Password
CoerVault holds passwords. CoerFill must not offer anything here, ever.
Expected: no picker on either password field.
Unrelated fields
Expected: nothing offered. Ctrl+Shift+F says there is nothing saved for this kind of field.
Disabled and read-only
Expected: left alone.