@testgorilla/tgo-linting
v1.0.3
Published
Linting rules and code quality standards for TestGorilla projects
Readme
@testgorilla/tgo-linting
Linting rules and code quality standards for TestGorilla projects.
Installation
npm install @testgorilla/tgo-linting @angular-eslint/template-parser --save-devUsage
This package supports both modern flat config (ESLint 9+) and legacy config formats (ESLint 8.x and below).
Flat Config (ESLint 9+)
Recommended approach:
// eslint.config.js
import tgoPlugin from '@testgorilla/tgo-linting';
export default [
tgoPlugin.configs.recommended,
// Your other configurations
];Manual configuration:
// eslint.config.js
import tgoPlugin from '@testgorilla/tgo-linting';
export default [
{
plugins: {
tgo: tgoPlugin,
},
rules: {
'tgo/require-data-testid': 'warn', // Example rule configuration
},
},
];Legacy Config (ESLint 8.x and below)
Using the legacy preset:
// .eslintrc.js
const { legacy } = require('@testgorilla/tgo-linting');
module.exports = {
// Your base config
extends: [
// Your other extends
],
plugins: ['tgo'],
overrides: [
{
files: ['*.html'],
parser: '@angular-eslint/template-parser',
...legacy,
},
],
};Manual configuration:
// .eslintrc.js
module.exports = {
plugins: ['tgo'],
extends: [
// Your other extends
],
overrides: [
{
files: ['*.html'],
parser: '@angular-eslint/template-parser',
rules: {
'tgo/require-data-testid': 'warn', // Example rule configuration
},
},
],
};Important Notes
- Template Parser Required: The
tgo/require-data-testidrule only works with HTML/Angular templates. You must configure@angular-eslint/template-parserfor.htmlfiles. - Angular Projects: If you're using
@angular-eslint, the template parser is usually already configured for HTML files in your overrides.
Rules
Available Rules
| Rule | Description |
|------|-------------|
| tgo/require-data-testid | Ensures specific HTML elements have a data-testid attribute for E2E testing |
Rule Documentation
Detailed documentation for each rule, including examples and configuration options, can be found alongside the rule implementation:
- require-data-testid - Enforces data-testid attributes on specified elements
Adding New Rules
To add a new ESLint rule to this package:
Create the rule file in
src/rules/:// src/rules/your-rule-name.ts import { Rule } from 'eslint' const rule: Rule.RuleModule = { meta: { type: 'problem', // or 'suggestion' or 'layout' docs: { description: 'Your rule description', category: 'Best Practices', recommended: false, }, schema: [], // JSON schema for rule options messages: { // Define error messages here }, }, create(context) { // Your rule implementation return { // AST node visitors } }, } export default ruleAdd tests in
src/rules/your-rule-name.spec.ts:import { RuleTester } from '@typescript-eslint/rule-tester' import rule from './your-rule-name' const ruleTester = new RuleTester({ parser: '@angular-eslint/template-parser', }) ruleTester.run('your-rule-name', rule, { valid: [ // Test cases that should pass ], invalid: [ // Test cases that should fail ], })Export the rule in
src/rules/index.ts:import yourRuleName from './your-rule-name' export const rules = { 'require-data-testid': requireDataTestId, 'your-rule-name': yourRuleName, }Add to recommended config (optional) in
src/configs/recommended.ts:rules: { 'tgo/require-data-testid': 'warn', 'tgo/your-rule-name': 'error', // or 'warn' }Document the rule in
src/rules/your-rule-name.md:- Describe what the rule does
- Provide configuration options
- Show correct and incorrect code examples
- Explain the rationale
Update this README by adding the new rule to the rules table above
Test your changes:
nx test tgo-linting nx build tgo-linting
Development
Building
nx build tgo-lintingTesting
nx test tgo-lintingLinting
nx lint tgo-lintingLicense
PROPRIETARY - © TestGorilla
