import { withDefaultOption, type EslintJestRules } from '../types/index.mjs'; export const eslintJestRules = { /* Rules common with vitest and playwright (keep settings aligned) */ 'jest/expect-expect': withDefaultOption('error'), 'jest/max-expects': 'off', 'jest/max-nested-describe': withDefaultOption('error'), 'jest/no-commented-out-tests': 'off', 'jest/no-conditional-expect': 'error', 'jest/no-conditional-in-test': 'off', 'jest/no-duplicate-hooks': 'error', 'jest/no-hooks': withDefaultOption('error'), 'jest/no-restricted-matchers': [ 'error', { toBeTruthy: 'Use `.toBe(true)` instead.', toBeFalsy: 'Use `.toBe(false)` instead.', }, ], 'jest/no-standalone-expect': withDefaultOption('error'), 'jest/prefer-comparison-matcher': 'error', 'jest/prefer-equality-matcher': 'error', 'jest/prefer-hooks-in-order': 'error', 'jest/prefer-hooks-on-top': 'error', 'jest/prefer-strict-equal': 'error', 'jest/prefer-to-be': 'error', 'jest/prefer-to-contain': 'error', 'jest/prefer-to-have-length': 'error', 'jest/require-hook': 'off', 'jest/require-to-throw-message': 'error', 'jest/require-top-level-describe': 'off', 'jest/valid-describe-callback': 'error', 'jest/valid-expect': withDefaultOption('error'), 'jest/valid-title': 'off', /* Rules common with vitest (keep settings aligned) */ 'jest/consistent-test-it': ['error', { fn: 'test' }], 'jest/no-alias-methods': 'error', 'jest/no-disabled-tests': 'error', 'jest/no-focused-tests': 'error', 'jest/no-identical-title': 'error', 'jest/no-interpolation-in-snapshots': 'error', 'jest/no-large-snapshots': withDefaultOption('error'), 'jest/no-mocks-import': 'error', 'jest/no-restricted-jest-methods': [ 'error', { advanceTimersByTime: null, spyOn: null, }, ], 'jest/no-test-prefixes': 'error', 'jest/no-test-return-statement': 'error', 'jest/prefer-called-with': 'error', 'jest/prefer-each': 'error', 'jest/prefer-expect-assertions': 'off', 'jest/prefer-expect-resolves': 'error', 'jest/prefer-lowercase-title': 'off', 'jest/prefer-mock-promise-shorthand': 'error', 'jest/prefer-snapshot-hint': withDefaultOption('error'), 'jest/prefer-spy-on': 'error', 'jest/prefer-todo': 'error', 'jest/prefer-mock-return-shorthand': 'error', /* eslint-plugin-jest specific rules */ 'jest/no-confusing-set-timeout': 'error', 'jest/no-deprecated-functions': 'error', 'jest/no-done-callback': 'error', 'jest/no-export': 'off', 'jest/no-jasmine-globals': 'error', 'jest/no-untyped-mock-factory': 'error', 'jest/padding-around-after-all-blocks': 'error', 'jest/padding-around-after-each-blocks': 'error', 'jest/padding-around-all': 'error', 'jest/padding-around-before-all-blocks': 'error', 'jest/padding-around-before-each-blocks': 'error', 'jest/padding-around-describe-blocks': 'error', 'jest/padding-around-expect-groups': 'error', 'jest/padding-around-test-blocks': 'error', 'jest/prefer-importing-jest-globals': withDefaultOption('error'), 'jest/prefer-jest-mocked': 'error', 'jest/unbound-method': withDefaultOption('error'), 'jest/valid-expect-in-promise': 'error', 'jest/prefer-ending-with-an-expect': withDefaultOption('error'), 'jest/no-unneeded-async-expect-function': 'error', 'jest/prefer-to-have-been-called': 'error', 'jest/prefer-to-have-been-called-times': 'error', 'jest/valid-mock-module-path': withDefaultOption('error'), 'jest/no-error-equal': 'error', 'jest/no-unnecessary-assertion': 'error', 'jest/valid-expect-with-promise': withDefaultOption('error'), } as const satisfies EslintJestRules;