Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/testcafe-community/eslint-plugin-testcafe-community
https://github.com/testcafe-community/eslint-plugin-testcafe-community
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/testcafe-community/eslint-plugin-testcafe-community
- Owner: testcafe-community
- License: mit
- Created: 2020-05-14T20:10:23.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-06-18T06:25:09.000Z (5 months ago)
- Last Synced: 2024-07-21T05:02:13.975Z (4 months ago)
- Language: TypeScript
- Size: 5.56 MB
- Stars: 4
- Watchers: 3
- Forks: 2
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-eslint - TestCafe-Community - TestCafe linting rules with env globals (fork from [TestCafe globals](https://github.com/miherlosev/eslint-plugin-testcafe)). (Plugins / Testing Tools)
README
# eslint-plugin-testcafe-community
ESLint rules for TestCafe
from the TestCafe community.---
## What does it do?
This project provides the global variables `fixture` & `test` for your ESLint
configuration which are specific variables for _TestCafe_. The
[recommended configuration](#recommended-configuration) enables common rules for
best practices when writing tests for TestCafe. The rule descriptions are
provided in the [table](#supported-rules) below.If you use other test suites (Jest/Mocha), make sure to read the
[compatibility](#compatibility) notes at the bottom.## Installation
You'll first need to install [ESLint](http://eslint.org):
```sh
npm i eslint --save-dev
```Next, install `eslint-plugin-testcafe-community`:
```sh
npm install eslint-plugin-testcafe-community --save-dev
```**Note:** If you installed ESLint globally (using the `-g` flag) then you must
also install `eslint-plugin-testcafe-community` globally.## Recommended configuration
This plugin export a recommended configuration that enforce good practices.
To enable this configuration use the extends property in your `.eslintrc` config
file:```json
{
"plugins": ["testcafe-community"],
"extends": "plugin:testcafe-community/recommended"
}
```You may review our
[example TS/JS package](https://github.com/testcafe-community/eslint-plugin-testcafe-community/tree/master/example)
embedded in this repository for an example configuration and plugin testing.See
[ESLint documentation](http://eslint.org/docs/user-guide/configuring#extending-configuration-files)
for more information about extending configuration files.## Supported Rules
✔️ indicates that a rule is recommended for all users.
🛠 indicates that a rule is fixable.
| Name | ✔️ | 🛠 | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- | ------------------------------------------------------------------------------------- |
| [missing-expect](https://github.com/testcafe-community/eslint-plugin-testcafe-community/blob/master/docs/rules/missing-expect.md) | ✔️ | | Ensure tests have at least one expect. |
| [no-debug](https://github.com/testcafe-community/eslint-plugin-testcafe-community/blob/master/docs/rules/no-debug.md) | ✔️ | | `t.debug()` should not exist permanently, use only for debugging of a test failure. |
| [no-disabled-tests](https://github.com/testcafe-community/eslint-plugin-testcafe-community/blob/master/docs/rules/no-disabled-tests.md) | ✔️ | | Prevent tests from being disabled by `fixture.skip()` or `test.skip()` and forgotten. |
| [no-duplicate-titles](https://github.com/testcafe-community/eslint-plugin-testcafe-community/blob/master/docs/rules/no-duplicate-titles.md) | ✔️ | | All test case titles should be unique. |
| [no-focused-tests](https://github.com/testcafe-community/eslint-plugin-testcafe-community/blob/master/docs/rules/no-focused-tests.md) | ✔️ | | Don't allow a single test or fixture to take all the focus. |## Compatibility
### `eslint-plugin-testcafe`
This `eslint-plugin-testcafe-community` plugin was a fork from the original
[`eslint-plugin-testcafe`](https://npmjs.com/package/eslint-plugin-testcafe)
project, which has not seen an update since December 2016 (`v0.2.1`). You **do
not** need to install both packages. This package is an expanded replacement for
the original.### `eslint-plugin-jest` & `eslint-plugin-mocha`
Due to the similarities between Test-Driven Development (TDD) terminology
supported by both [Jest](https://jestjs.io) & [Mocha](https://mochajs.org) and
the matching terminology for TestCafe's API, you may run into lint confusion
errors. This likely happens when your repository includes both Jest/Mocha for
unit tests and TestCafe for End-to-End (E2E) tests.You have a couple solutions to avoid these issues:
1. **\[RECOMMENDED] Top-level directory overrides**. ESLint configurations work
best with a bare minimum base configuration and then specific overrides
entries per additional plugin configuration you need to add.This is the recommendation since it best conforms to the conventions of
these frameworks. `Jest` recommends unit testing code is always nearest to
the code it is testing in multiple `__tests__` directories following the
file tree your `src` or `lib` directories. Since E2E tests are written from
a higher level abstraction without regard for how the code actually works,
it is best to keep these files at a project root level `tests` folder. In
relation to your `eslintrc` definition, it is easiest to maintain by
defining all the overrides at the top level so that it is easier to debug
issues. If you want to share the `*.test.{ts,js}` filename convention, then
you should consider the `excludedFiles` directive for specific directories
(similar to #3).A such configuration would look something like this:
```js
// /.eslintrc.jsmodule.exports = {
root: true,
ignorePatterns: ["*.json"],
// These would affect all files. Note that overrides are combined not replaced
// extends:[]
// plugins:[]
overrides: [
{
// For Typescript
files: ["*.ts"],
parser: "@typescript-eslint/parser",
parserOptions: {
project: "tsconfig.eslint.json", // Custom lint-only config
sourceType: "module"
},
plugins: ["@typescript-eslint"],
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:prettier/recommended"
]
},
{
// TS/JS unit tests (inherits any matches from above)
// Make sure this entry is specific enough (through regex or excludedFiles)
// not to match the same files as the e2e files
files: ["*.spec.{js,ts}", "**/__tests__/**.{js,ts}"],
env: {
"jest/globals": true
},
extends: ["plugin:jest/recommended", "plugin:jest/style"],
plugins: ["jest"]
},
{
// Typescript/JavaScript e2e tests (inherits from any matches above)
files: ["tests/**.test.{js,ts}"],
excludedFiles: ["src/**", "lib/**"],
extends: ["plugin:testcafe-community/recommended"],
plugins: ["testcafe-community"]
}
]
};
```2. **Filename filters**. Use a file naming convention to distinguish the
difference between a unit test and an E2E test. Configure ESLint via
overrides entry to only apply the `jest`/`mocha` plugins to `*.spec.ts` and
`testcafe-community` plugin rules to `*.test.js` files.3. **Single directory configuration**. Creates a separate folder to house all
your TestCafe specific tests usually at the root level of the project. In
this directory, create another `.eslintrc` configuration file that defines an
override entry for the files in this directory and loads the
testcafe-community plugin/extension.## Contributors
PR's & Issue contributions welcome! Please adhere to
[contributing guidelines](https://github.com/testcafe-community/eslint-plugin-testcafe-community/blob/master/CONTRIBUTING.md)
or your submission will be closed or delayed.