UNPKG

eslint-config-amex

Version:
66 lines (59 loc) 2.52 kB
/* * Copyright (c) 2026 American Express Travel Related Services Company, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ import { defineConfig } from "eslint/config"; import globals from "globals"; import eslintPluginJest from "eslint-plugin-jest"; import eslintPluginJestDom from "eslint-plugin-jest-dom"; import eslintPluginN from "eslint-plugin-n"; import baseConfig from "./index.js"; import { JS_FILES_IN_TEST_DIR } from "./constants/index.js"; const amexJsTestConfig = (overrides = {}) => defineConfig([ // https://github.com/americanexpress/eslint-config-amex/blob/16.x/test.js { name: "eslint-config-amex/test-config", files: overrides.files ?? [JS_FILES_IN_TEST_DIR], ...(overrides.ignores ? { ignores: overrides.ignores } : []), extends: [baseConfig({ files: overrides.files ?? [JS_FILES_IN_TEST_DIR] })], plugins: { jest: eslintPluginJest, "jest-dom": eslintPluginJestDom, n: eslintPluginN, }, languageOptions: { globals: { ...globals.jest, }, }, rules: { ...eslintPluginJest.configs["flat/recommended"].rules, ...eslintPluginJestDom.configs["flat/recommended"].rules, // open a PR per rule change // the way jest mocking works sometimes requires requiring within scope of each test "n/global-require": "warn", // skipped tests can lead to false build successes "jest/no-disabled-tests": "error", // forces you to remove .only from tests by raising error whenever you are using that feature. "jest/no-focused-tests": "error", // disallows having tests with identical name "jest/no-identical-title": "error", // disallows large snapshots (default 50 line threshold) "jest/no-large-snapshots": "error", // prop spreading is very useful in tests for specs that including variations of the same // props repeatedly "react/jsx-props-no-spreading": 0, ...overrides.rules, }, }, ]); export default amexJsTestConfig;