utopia-ui/cypress/eslint.config.mjs
mahula 78a8c68800
feat(other): initial end-to-end tests working in github ci and locally (#402)
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-10-09 21:59:06 +02:00

134 lines
3.5 KiB
JavaScript

import js from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginCypress from 'eslint-plugin-cypress'
export default tseslint.config(
js.configs.recommended,
...tseslint.configs.recommended,
{
files: ['**/*.cy.{js,jsx,ts,tsx}', 'cypress/**/*.{js,jsx,ts,tsx}'],
plugins: {
cypress: pluginCypress,
},
languageOptions: {
globals: {
cy: 'readonly',
Cypress: 'readonly',
expect: 'readonly',
assert: 'readonly',
chai: 'readonly',
describe: 'readonly',
it: 'readonly',
beforeEach: 'readonly',
afterEach: 'readonly',
before: 'readonly',
after: 'readonly',
},
},
rules: {
'cypress/no-assigning-return-values': 'error',
'cypress/no-unnecessary-waiting': 'error',
'cypress/no-async-tests': 'error',
'cypress/unsafe-to-chain-command': 'error',
'@typescript-eslint/no-unused-vars': ['error', {
'argsIgnorePattern': '^_',
'varsIgnorePattern': '^_'
}],
'@typescript-eslint/no-explicit-any': 'warn',
'no-console': 'warn',
'no-debugger': 'error',
'no-unused-vars': 'warn',
'prefer-const': 'error',
'no-var': 'error',
'eqeqeq': ['error', 'always'],
'curly': ['error', 'all'],
'indent': ['error', 2],
'quotes': ['error', 'single', { 'avoidEscape': true }],
'semi': ['error', 'never'],
'comma-dangle': ['error', 'never'],
'object-curly-spacing': ['error', 'always'],
'array-bracket-spacing': ['error', 'never'],
'space-before-function-paren': ['error', 'never'],
'keyword-spacing': ['error', { 'before': true, 'after': true }],
'space-infix-ops': 'error',
'eol-last': ['error', 'always'],
'no-trailing-spaces': 'error',
'max-len': ['warn', {
'code': 100,
'ignoreUrls': true,
'ignoreStrings': true,
'ignoreTemplateLiterals': true
}]
}
},
{
files: ['cypress/support/**/*.{js,ts}'],
rules: {
// Enable console warnings in support files
'no-console': 'warn'
}
},
{
files: ['cypress.config.{js,ts}', 'eslint.config.js'],
rules: {
'no-console': 'off',
'@typescript-eslint/no-require-imports': 'off'
}
},
// Node.js CommonJS files (plugins, etc.) - exclude TypeScript rules
{
files: ['plugins/**/*.js'],
languageOptions: {
ecmaVersion: 2020,
sourceType: 'commonjs',
globals: {
require: 'readonly',
module: 'readonly',
exports: 'readonly',
process: 'readonly',
console: 'readonly',
__dirname: 'readonly',
__filename: 'readonly',
Buffer: 'readonly',
global: 'readonly'
}
},
rules: {
// Disable TypeScript-specific rules for CommonJS files
'@typescript-eslint/no-require-imports': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': 'off',
// Allow CommonJS patterns
'no-undef': 'off',
'no-console': 'off',
// Keep basic JS rules
'no-unused-vars': 'warn',
'prefer-const': 'error',
'no-var': 'error'
}
},
{
ignores: [
'node_modules/**',
'cypress/downloads/**',
'cypress/screenshots/**',
'cypress/videos/**',
'cypress/plugins/**', // Ignore Node.js CommonJS plugin files
'results/**',
'dist/**',
'build/**',
'*.min.js'
]
}
)