Summary
There are currently 97 ESLint warnings (0 errors) across the monorepo that should be cleaned up as tech debt. 45 of them are auto-fixable via --fix.
Warning breakdown
| Count |
Rule |
Notes |
| 61 |
react-refresh/only-export-components |
Mixing non-component exports in component files |
| 30 |
testing-library/render-result-naming-convention |
Unit test render result naming |
| 21 |
playwright/no-force-option |
{ force: true } usage in e2e page objects |
| 20 |
playwright/prefer-hooks-on-top |
beforeEach/afterEach not at top of describe block |
| 19 |
playwright/prefer-to-have-length |
Use .toHaveCount() instead of .length assertions |
| 11 |
playwright/no-wait-for-timeout |
page.waitForTimeout() calls in e2e tests |
| 2 |
playwright/prefer-to-have-count |
Similar to above |
| 2 |
testing-library/no-node-access |
Direct DOM node access in unit tests |
| 2 |
@typescript-eslint/no-explicit-any |
Explicit any type usage |
| 1 |
@next/next/no-document-import-in-page |
Wrong next/document import location |
| 1 |
@typescript-eslint/no-empty-function |
Empty function body |
Affected packages
apps/chat — react-refresh, testing-library, @typescript-eslint warnings
apps/chat-e2e — playwright warnings (majority)
apps/overlay-sandbox — react-refresh warning
Steps to fix
- Run
npm run lint:fix to auto-fix the 45 fixable warnings.
- Manually address the remaining warnings:
- Replace
{ force: true } with proper Playwright wait strategies.
- Replace
waitForTimeout() with deterministic waits (waitFor, toBeVisible, etc.).
- Move
beforeEach/afterEach hooks to the top of describe blocks.
- Fix
toHaveCount() / toHaveLength() assertion usage.
- Separate non-component exports from component files.
Acceptance criteria
npm run lint reports 0 warnings.
Summary
There are currently 97 ESLint warnings (0 errors) across the monorepo that should be cleaned up as tech debt. 45 of them are auto-fixable via
--fix.Warning breakdown
react-refresh/only-export-componentstesting-library/render-result-naming-conventionplaywright/no-force-option{ force: true }usage in e2e page objectsplaywright/prefer-hooks-on-topbeforeEach/afterEachnot at top of describe blockplaywright/prefer-to-have-length.toHaveCount()instead of.lengthassertionsplaywright/no-wait-for-timeoutpage.waitForTimeout()calls in e2e testsplaywright/prefer-to-have-counttesting-library/no-node-access@typescript-eslint/no-explicit-anyanytype usage@next/next/no-document-import-in-pagenext/documentimport location@typescript-eslint/no-empty-functionAffected packages
apps/chat— react-refresh, testing-library, @typescript-eslint warningsapps/chat-e2e— playwright warnings (majority)apps/overlay-sandbox— react-refresh warningSteps to fix
npm run lint:fixto auto-fix the 45 fixable warnings.{ force: true }with proper Playwright wait strategies.waitForTimeout()with deterministic waits (waitFor,toBeVisible, etc.).beforeEach/afterEachhooks to the top of describe blocks.toHaveCount()/toHaveLength()assertion usage.Acceptance criteria
npm run lintreports 0 warnings.