eslint-plugin-altriatest
v2.2.0
Published
ESLint plugin to enforce history.push, Link, and LinkButton usage with constants or validated routes
Maintainers
Readme
eslint-plugin-altriatest
altria's test rules
✨ Full TypeScript and TSX support! See TypeScript Support Guide for details.
Installation
You'll first need to install ESLint:
npm i eslint --save-devNext, install eslint-plugin-altriatest:
npm install eslint-plugin-altriatest --save-devUsage
In your configuration file, import the plugin eslint-plugin-altriatest and add altriatest to the plugins key:
import { defineConfig } from "eslint/config";
import altriatest from "eslint-plugin-altriatest";
export default defineConfig([
{
plugins: {
altriatest
}
}
]);Then configure the rules you want to use under the rules key.
import { defineConfig } from "eslint/config";
import altriatest from "eslint-plugin-altriatest";
export default defineConfig([
{
plugins: {
altriatest
},
rules: {
"altriatest/no-history-push-literal": "error"
}
}
]);Advanced: Routes Configuration
The no-history-push-literal rule supports reading allowed paths from your project's route configuration file:
export default defineConfig([
{
plugins: { altriatest },
rules: {
"altriatest/no-history-push-literal": ["error", {
routesPath: "config/routes.ts" // Path relative to project root
}]
}
}
]);With this configuration:
- ✅ Paths defined in your routes file are allowed
- ✅ Dynamic routes like
/user/:idare supported - ✅ Works with
history.push(),<Link to>, and<LinkButton to> - ❌ Undefined paths will trigger an error
Supported Patterns:
// ✅ Correct - using constants
history.push(Router.Home);
<Link to={Router.Home}>Home</Link>
// ✅ Correct - path defined in routes.ts
history.push('/home');
<Link to="/home">Home</Link>
// ✅ Correct - dynamic route matching /user/:id
<Link to={`/user/${userId}`}>Profile</Link>
<LinkButton to={`/saas/serviceManage/${row.id}`}>Manage</LinkButton>
// ❌ Error - path not in routes.ts
history.push('/undefined-path');
<Link to="/undefined-path">Link</Link>See the Routes Configuration Guide for detailed documentation.
Configurations
TODO: Run eslint-doc-generator to generate the configs list (or delete this section if no configs are offered).
Rules
| Name | Description | | :--------------------------------------------------------------- | :----------------------------------------------- | | no-history-push-literal | Disallow literal strings in history.push() and Link components |
TypeScript Support
All rules fully support TypeScript and TSX files!
For TypeScript projects, install the additional dependency:
npm install --save-dev typescript-eslintThen update your config:
import { defineConfig } from "eslint/config";
import tseslint from "typescript-eslint";
import altriatest from "eslint-plugin-altriatest";
export default defineConfig([
...tseslint.configs.recommended,
{
files: ["**/*.ts", "**/*.tsx"],
plugins: {
altriatest
},
rules: {
"altriatest/no-history-push-literal": "error"
}
}
]);See the full TypeScript Support Guide for more examples and configuration options.
