1c820b7f53
Variant 1 walks the FirstRunWizard state machine through Step 1 → 4 and commits with no pending values to verify the no-op write-back path. Variant 2 picks Roleplay on Step 2, skips Step 3, commits, and asserts LoadPreviousSession / FilterIncludePreviousSessions stayed on their pre-test value — pinning the null-semantics from Spec Z.176. ApplyRoleplay would overwrite six privacy / retention fields, so the step snapshots them before Variant 2 and CleanUp() restores them, keeping the self-test idempotent across /xlperf runs. Catches state-machine throws and CommitPending NREs that would otherwise surface as a hard plugin crash during Finish ✓ clicks. Runs alongside the existing three FontManager / ThemeSwitch self-test steps.