A checkout can save the wrong billing address even when both address sections look correct. Browser autofill, component state and a “same as shipping” control all affect which values reach the server. Test their interaction as a sequence rather than checking each input once.
Give each section meaningful autocomplete hints
HTML autocomplete supports shipping and billing grouping tokens. For example, use shipping address-line1 and billing address-line1 for the corresponding street inputs. A section-* token can distinguish additional groups. These are browser hints; verify behavior in the browsers your users actually use.
Use visibly different fixtures
Choose fictional shipping and billing values that cannot be confused at a glance: “42 Example Street” and “18 Demo Road”, for instance. Keep them in an isolated test profile. Inspect both saved records after submission instead of relying only on the checkout summary.
Test the same-address control in both directions
- Enter different shipping and billing values.
- Enable “same as shipping” and confirm the effective billing value.
- Edit shipping while the option remains enabled.
- Disable the option and verify the specified restoration behavior.
- Submit and compare the payload with the visible state.
Decide in advance whether disabling the option restores the earlier billing draft or starts from the current shipping address. Either behavior needs clear labels and consistent persistence.
Include autofill and manual corrections
Autofill a section, then manually change its apartment or postcode. Move to the next step and return. The correction should survive, and editing billing should not unexpectedly mutate shipping. Test browser Back, reload and validation failure because each can restore state through a different path.
Keep the scope clear
These checks establish that checkout preserves the intended addresses. They do not prove delivery eligibility or payment acceptance. Test payment-provider behavior separately in its sandbox using its documented fixtures.
The US address generator supplies synthetic starting values. Save your selected fixtures with the regression case so repeated runs remain comparable.