@revoloo/cypress6
Version:
Cypress.io end to end testing tool
349 lines (345 loc) • 7.76 kB
JavaScript
const customRules = require('./custom-rules')
const baseRules = {
'@cypress/dev/arrow-body-multiline-braces': [
'error',
'always',
],
'array-bracket-newline': [
'error',
'consistent',
],
'array-bracket-spacing': [
'error',
'never',
],
'arrow-parens': [
'error',
'always',
],
'arrow-spacing': 'error',
'block-spacing': 'error',
'brace-style': [
'error',
'1tbs',
{
'allowSingleLine': false,
},
],
'function-paren-newline': [
'error',
'consistent',
],
'comma-dangle': [
'error',
'always-multiline',
],
'comma-spacing': 'error',
'curly': [
'error',
'multi-line',
'consistent',
],
'constructor-super': 'error',
'default-case': 'error',
'eol-last': 'error',
'eqeqeq': [
'error',
'allow-null',
],
'indent': [
'error',
2,
{
'SwitchCase': 1,
'MemberExpression': 0,
},
],
'key-spacing': 'error',
'keyword-spacing': 'error',
'no-buffer-constructor': 'error',
'no-case-declarations': 'error',
'no-class-assign': 'error',
'no-cond-assign': 'error',
'no-console': 'error',
'no-const-assign': 'error',
'no-constant-condition': 'error',
'no-control-regex': 'error',
'no-debugger': 'error',
'no-delete-var': 'error',
'no-dupe-class-members': 'error',
'no-dupe-keys': 'error',
'no-dupe-args': 'error',
'no-duplicate-case': 'error',
'no-duplicate-imports': 'error',
'no-else-return': [
'error',
{
'allowElseIf': false,
},
],
'no-empty': 'error',
'no-empty-character-class': 'error',
'no-empty-pattern': 'error',
'no-ex-assign': 'error',
'no-extra-boolean-cast': 'error',
'no-extra-semi': 'error',
'no-fallthrough': 'error',
'no-func-assign': 'error',
'no-inner-declarations': 'error',
'no-invalid-regexp': 'error',
'no-irregular-whitespace': 'error',
'no-mixed-spaces-and-tabs': 'error',
'no-multiple-empty-lines': [
'error',
{
'max': 1,
'maxEOF': 0,
'maxBOF': 0,
},
],
'no-multi-spaces': 'error',
'no-negated-in-lhs': 'error',
'no-new-symbol': 'error',
'no-obj-calls': 'error',
'no-octal': 'error',
'no-redeclare': 'error',
'no-regex-spaces': 'error',
'no-self-assign': 'error',
'no-spaced-func': 'error',
'no-sparse-arrays': 'error',
'no-this-before-super': 'error',
'no-trailing-spaces': 'error',
'no-undef': 'error',
'no-unexpected-multiline': 'error',
'no-unneeded-ternary': 'error',
'no-unreachable': 'error',
'no-unused-labels': 'error',
'no-unused-vars': ['error', { args: 'none' }],
'no-useless-concat': 'error',
'no-useless-constructor': 'error',
'no-var': 'error',
'no-whitespace-before-property': 'error',
'object-curly-spacing': [
'error',
'always',
],
'object-shorthand': 'error',
'one-var': [
'error',
'never',
],
'padded-blocks': ['error', 'never'],
'padding-line-between-statements': [
'error',
{
'blankLine': 'always',
'prev': '*',
'next': 'return',
},
{
'blankLine': 'always',
'prev': [
'const',
'let',
'var',
'if',
'while',
'export',
'cjs-export',
'import',
'cjs-import',
'multiline-expression',
],
'next': '*',
},
{
'blankLine': 'any',
'prev': [
'const',
'let',
'var',
'import',
'cjs-import',
],
'next': [
'const',
'let',
'var',
'import',
'cjs-import',
],
},
],
'prefer-rest-params': 'error',
'prefer-spread': 'error',
'prefer-template': 'error',
'quotes': [
'error',
'single',
{
'allowTemplateLiterals': true,
},
],
'semi': [
'error',
'never',
],
'semi-spacing': 'error',
'space-before-blocks': 'error',
'space-before-function-paren': 'error',
'space-in-parens': [
'error',
'never',
],
'space-infix-ops': 'error',
'space-unary-ops': 'error',
'template-curly-spacing': 'error',
'use-isnan': 'error',
'valid-typeof': 'error',
}
// '@cypress/dev/no-only': 'error',
module.exports = {
configs: {
general: {
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
},
plugins: [
'json-format',
],
settings: {
json: {
'sort-package-json': 'pro',
},
},
env: {
node: true,
es6: true,
},
rules: {
...baseRules,
},
overrides: [
{
files: [
'*.jsx',
'*.tsx',
],
rules: {
'@cypress/dev/arrow-body-multiline-braces': 'off',
},
},
{
files: '*.coffee',
parser: '@fellow/eslint-plugin-coffee',
parserOptions: {
parser: 'babel-eslint',
sourceType: 'module',
ecmaVersion: 2018,
},
plugins: [
'@fellow/eslint-plugin-coffee',
],
rules: {
...Object.assign({}, ...Object.keys(baseRules).map((key) => ({ [key]: 'off' }))),
'@fellow/coffee/coffeescript-error': [
'error',
{},
],
},
},
{
files: '*.ts',
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
],
rules: {
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
'args': 'none',
},
],
'@typescript-eslint/type-annotation-spacing': 'error',
'@typescript-eslint/no-useless-constructor': [
'error',
],
'@typescript-eslint/member-delimiter-style': [
'error',
{
'multiline': {
'delimiter': 'none',
},
'singleline': {
'delimiter': 'comma',
},
},
],
},
},
],
},
tests: {
env: {
mocha: true,
},
globals: {
expect: true,
},
plugins: ['mocha'],
rules: {
'mocha/handle-done-callback': 'error',
'mocha/no-exclusive-tests': 'error',
'mocha/no-global-tests': 'error',
'@cypress/dev/skip-comment': 'error',
},
overrides: [{
files: '*.spec.tsx',
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
'react',
],
rules: {
'no-unused-vars': 'off', // avoid interface imports to be warned against
},
}],
},
react: {
env: {
browser: true,
},
parser: 'babel-eslint',
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
legacyDecorators: true,
},
},
plugins: ['react'],
rules: {
'react/jsx-curly-spacing': 'error',
'react/jsx-equals-spacing': 'error',
'react/jsx-no-duplicate-props': 'error',
'react/jsx-no-undef': 'error',
'react/jsx-pascal-case': 'error',
'react/jsx-uses-react': 'error',
'react/jsx-uses-vars': 'error',
'react/jsx-wrap-multilines': 'error',
'react/no-unknown-property': 'error',
'react/prefer-es6-class': 'error',
'react/react-in-jsx-scope': 'error',
'react/require-render-return': 'error',
'react/jsx-filename-extension': 'error',
},
},
},
rules: {
...customRules,
},
}