` wrapper with the circle `
` and label `` inside.
Update `StepIndicator.test.tsx` only if needed. The existing 5 tests should pass with this structure since:
- `screen.getByText(/Backend/)` will match the label span
- `screen.getAllByRole('button')` finds completed step buttons
- `buttons.find(b => b.textContent?.includes('Backend'))` works because label is inside button
- Dispatch behavior is unchanged
Run the full test suite after rebuild to catch any regressions.
npx vitest run src/components/wizard/StepIndicator.test.tsx --reporter=dot && npx vitest run --reporter=dot
StepIndicator renders numbered circles connected by lines, completed steps show checkmarks and are clickable, current step is highlighted, future steps are muted. All inline styles removed. All 5 existing WIZD-03 tests pass. No regressions in full suite.
- `npx vitest run src/components/wizard/StepIndicator.test.tsx` — all 5 WIZD-03 tests pass
- `npx vitest run --reporter=dot` — full suite green
- No inline `style={{}}` props remain in StepIndicator.tsx
- No hardcoded color values (`#999`, etc.) remain
- StepIndicator uses MD3 circles with numbered/checkmark states
- Connector lines between steps show progress visually
- All semantic tokens used (no hardcoded colors)
- All existing tests pass without modification (or with minimal test selector updates if button textContent changed)