Files
gemini-cli/.gemini/skills/regression-finder/references/regression-patterns.md
T

42 lines
1.7 KiB
Markdown
Raw Normal View History

# Common Regression Patterns
When analyzing a "bad" commit, look for these common patterns that often cause
regressions in this codebase.
## 1. State Synchronization Issues
**Symptoms**: UI doesn't update, stale data, "disappearing" history.
**Pattern**: State is derived from multiple sources that are updated at
different times, or state is updated via side-effects (e.g., `useEffect` or
callbacks) instead of being purely derived. **Fix**: Use `useMemo` to derive
state or ensure atomic updates.
## 2. Missing Hook Dependencies
**Symptoms**: Logic runs with old state, variables seem stuck. **Pattern**: A
`useCallback`, `useMemo`, or `useEffect` has an incomplete dependency array.
**Check**: Look for ESLint suppression comments like
`// eslint-disable-next-line react-hooks/exhaustive-deps`.
## 3. Bypassed Logic
**Symptoms**: Feature works sometimes but fails in specific paths (e.g., after
cancellation). **Pattern**: A refactor introduced a new submission or update
path that bypasses existing validation or cleanup logic. **Check**: Search for
direct calls to `onSubmit` or `setState` that should have gone through a wrapper
function (like `handleSubmit`).
## 4. Environment/Platform Specifics
**Symptoms**: Works on MacOS but fails on Windows or Linux. **Pattern**: Usage
of path delimiters (`/` vs
``), terminal escape sequences, or platform-specific CLI flags. **Fix**: Use `node:path`
and verify terminal capability detection.
## 5. Mock Mismatch in Tests
**Symptoms**: Tests pass but application fails (or vice versa). **Pattern**: A
mock in a unit test was not updated to reflect a change in the real
implementation's interface or behavioral expectations. **Check**: Verify that
mock return values and implementations match the current code.