mirror of
https://github.com/microsoft/playwright.git
synced 2024-12-21 02:02:19 +03:00
8611ee8df7
This lets our spec files be .ts instead of just .js. The typescript files will be checked against the public types. Tests are compiled with babel just in time before running them, emulating the jest experience. TypeScript tests are also linted with eslint. I converted keyboard.spec.js as the first demo. I'll follow up converting some more more tests.
121 lines
3.5 KiB
JavaScript
121 lines
3.5 KiB
JavaScript
module.exports = {
|
|
parser: '@typescript-eslint/parser',
|
|
plugins: ['@typescript-eslint', 'notice'],
|
|
parserOptions: {
|
|
project: ['./tsconfig.json', './test/tsconfig.json'],
|
|
ecmaVersion: 9,
|
|
sourceType: 'module',
|
|
},
|
|
|
|
/**
|
|
* ESLint rules
|
|
*
|
|
* All available rules: http://eslint.org/docs/rules/
|
|
*
|
|
* Rules take the following form:
|
|
* "rule-name", [severity, { opts }]
|
|
* Severity: 2 == error, 1 == warning, 0 == off.
|
|
*/
|
|
"rules": {
|
|
'@typescript-eslint/no-unused-vars': [2, {args: 'none'}],
|
|
/**
|
|
* Enforced rules
|
|
*/
|
|
// syntax preferences
|
|
"quotes": [2, "single", {
|
|
"avoidEscape": true,
|
|
"allowTemplateLiterals": true
|
|
}],
|
|
"semi": 2,
|
|
"no-extra-semi": 2,
|
|
"comma-style": [2, "last"],
|
|
"wrap-iife": [2, "inside"],
|
|
"spaced-comment": [2, "always", {
|
|
"markers": ["*"]
|
|
}],
|
|
"eqeqeq": [2],
|
|
"accessor-pairs": [2, {
|
|
"getWithoutSet": false,
|
|
"setWithoutGet": false
|
|
}],
|
|
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
|
|
"curly": [2, "multi-or-nest", "consistent"],
|
|
"new-parens": 2,
|
|
"arrow-parens": [2, "as-needed"],
|
|
"prefer-const": 2,
|
|
"quote-props": [2, "consistent"],
|
|
|
|
// anti-patterns
|
|
"no-var": 2,
|
|
"no-with": 2,
|
|
"no-multi-str": 2,
|
|
"no-caller": 2,
|
|
"no-implied-eval": 2,
|
|
"no-labels": 2,
|
|
"no-new-object": 2,
|
|
"no-octal-escape": 2,
|
|
"no-self-compare": 2,
|
|
"no-shadow-restricted-names": 2,
|
|
"no-cond-assign": 2,
|
|
"no-debugger": 2,
|
|
"no-dupe-keys": 2,
|
|
"no-duplicate-case": 2,
|
|
"no-empty-character-class": 2,
|
|
"no-unreachable": 2,
|
|
"no-unsafe-negation": 2,
|
|
"radix": 2,
|
|
"valid-typeof": 2,
|
|
"no-implicit-globals": [2],
|
|
|
|
// es2015 features
|
|
"require-yield": 2,
|
|
"template-curly-spacing": [2, "never"],
|
|
|
|
// spacing details
|
|
"space-infix-ops": 2,
|
|
"space-in-parens": [2, "never"],
|
|
"space-before-function-paren": [2, {
|
|
"anonymous": "never",
|
|
"named": "never",
|
|
"asyncArrow": "always"
|
|
}],
|
|
"no-whitespace-before-property": 2,
|
|
"keyword-spacing": [2, {
|
|
"overrides": {
|
|
"if": {"after": true},
|
|
"else": {"after": true},
|
|
"for": {"after": true},
|
|
"while": {"after": true},
|
|
"do": {"after": true},
|
|
"switch": {"after": true},
|
|
"return": {"after": true}
|
|
}
|
|
}],
|
|
"arrow-spacing": [2, {
|
|
"after": true,
|
|
"before": true
|
|
}],
|
|
"@typescript-eslint/func-call-spacing": 2,
|
|
"@typescript-eslint/type-annotation-spacing": 2,
|
|
|
|
// file whitespace
|
|
"no-multiple-empty-lines": [2, {"max": 2}],
|
|
"no-mixed-spaces-and-tabs": 2,
|
|
"no-trailing-spaces": 2,
|
|
"linebreak-style": [ process.platform === "win32" ? 0 : 2, "unix" ],
|
|
"indent": [2, 2, { "SwitchCase": 1, "CallExpression": {"arguments": 2}, "MemberExpression": 2 }],
|
|
"key-spacing": [2, {
|
|
"beforeColon": false
|
|
}],
|
|
|
|
// copyright
|
|
"notice/notice": [2, {
|
|
"mustMatch": "Copyright",
|
|
"templateFile": "./utils/copyright.js",
|
|
}],
|
|
|
|
// type-aware rules
|
|
"@typescript-eslint/no-unnecessary-type-assertion": 2,
|
|
}
|
|
};
|