Files
fast-next-template/frontend/eslint.config.mjs
Felipe Cardoso f23fdb974a Refactor to enforce AuthContext usage over useAuthStore and improve test stability
- Replaced `useAuthStore` with `useAuth` from `AuthContext` across frontend components and tests to ensure dependency injection compliance.
- Enhanced E2E test stability by delaying navigation until the auth context is fully initialized.
- Updated Playwright configuration to use a single worker to prevent mock conflicts.
- Refactored test setup to consistently inject `AuthProvider` for improved isolation and mocking.
- Adjusted comments and documentation to clarify dependency injection and testability patterns.
2025-11-05 08:37:01 +01:00

45 lines
1.3 KiB
JavaScript
Executable File

import { dirname } from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
});
const eslintConfig = [
...compat.extends("next/core-web-vitals", "next/typescript"),
{
ignores: [
"**/node_modules/**",
"**/.next/**",
"**/out/**",
"**/build/**",
"**/dist/**",
"**/coverage/**",
"**/src/lib/api/generated/**",
"**/*.gen.ts",
"**/*.gen.tsx",
],
},
{
rules: {
// Enforce Dependency Injection pattern for auth store
// Components/hooks must use useAuth() from AuthContext, not useAuthStore directly
// This ensures testability via DI (E2E mocks, unit test props)
// Exception: Non-React contexts (client.ts) use dynamic import + __TEST_AUTH_STORE__ check
"no-restricted-imports": ["error", {
"patterns": [{
"group": ["**/stores/authStore"],
"importNames": ["useAuthStore"],
"message": "Import useAuth from '@/lib/auth/AuthContext' instead. Direct authStore imports bypass dependency injection and break test mocking."
}]
}]
}
}
];
export default eslintConfig;