Does the generated SSN change on every test run?
Yes, by default the choice is random on every call. For a reproducible fixture, copy the value once and hardcode it in the test file instead of generating it inside the run itself.
Why does the generated SSN area never show up as 666?
The generator automatically remaps an attempted area of 666 to 667, because 666 sits on the SSA exclusion list. Document that behavior if your test depends on a specific area value.
Should the fixture store the SSN with dashes or without them?
It depends on what the component receives: store the 9 raw digits when the test is about a typing mask, and the dashed version when the test only checks display or an already-formatted payload.
Can the same synthetic SSN be reused across many test cases in one suite?
Only if the cases run in isolation. On a shared staging database with a uniqueness rule on SSN, generate a fresh value per case so it does not collide with a record left behind by an earlier test.