-
-
Notifications
You must be signed in to change notification settings - Fork 26.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(eslint-config-react-app): Add jest & testing-library rules #8963
feat(eslint-config-react-app): Add jest & testing-library rules #8963
Conversation
Dupe of #8155 ? |
64939bb
to
1ef63b6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FWIW, this looks good to me 👍
Ping @iansu |
I have the same question as here: #8155 (comment) |
@ianschmitz I've replied on the original PR #8155 (comment) |
I'd really appreciate it if we can merge this or #8155. It's important to the user experience of testing library that the ESLint plugins are used, but it's confusing that CRA includes some of our best practice suggestions while missing the ESLint plugins that make it easy for users to follow them. I understand not having this in the build tool is not ideal, but this seems to be an issue with |
@nickmccurdy @ianschmitz This one can be merged if it's up to me. 🙂 |
1ef63b6
to
75095e2
Compare
@ianschmitz I've rebased my branch onto See the original post. |
75095e2
to
6510a5d
Compare
@ianschmitz If needed, I can add |
This comment has been minimized.
This comment has been minimized.
@nickmccurdy Then this one can be merged as soon as |
Oh sorry I misread, I thought you were talking about |
@MichaelDeBoey I guess you mean you enabled those rules which will be recommended in v4. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the updates here @MichaelDeBoey - and for all of your work on this so far.
I've left some thoughts around other rules that we could remove. As previously mentioned, the team want to keep eslint-config-react-app
very minimal (which was the original philosophy).
If you think I've missed/misunderstood anything, let me know - I read the descriptions for each rule, but in some cases it was harder to tell if the rule was for potential errors/issues, or just good practice.
I'd love to also get some thoughts from @ianschmitz and @iansu here.
// https://github.com/jest-community/eslint-plugin-jest | ||
'jest/expect-expect': 'off', | ||
'jest/no-commented-out-tests': 'warn', | ||
'jest/no-conditional-expect': 'error', | ||
'jest/no-deprecated-functions': 'warn', | ||
'jest/no-disabled-tests': 'warn', | ||
'jest/no-done-callback': 'error', | ||
'jest/no-export': 'error', | ||
'jest/no-focused-tests': 'warn', | ||
'jest/no-identical-title': 'error', | ||
'jest/no-interpolation-in-snapshots': 'error', | ||
'jest/no-jasmine-globals': 'error', | ||
'jest/no-jest-import': 'error', | ||
'jest/no-mocks-import': 'error', | ||
'jest/no-standalone-expect': 'off', | ||
'jest/no-test-callback': 'off', | ||
'jest/no-test-prefixes': 'warn', | ||
'jest/valid-describe': 'error', | ||
'jest/valid-expect': 'error', | ||
'jest/valid-expect-in-promise': 'error', | ||
'jest/valid-title': 'warn', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can also turn off:
jest/no-commented-out-tests
jest/no-deprecated-functions
(TypeScript 4.0 should also help here)jest/no-disabled-tests
jest/no-done-callback
jest/no-export
jest/no-focused-tests
jest/no-test-prefixes
I'm not sure about this, maybe @ianschmitz can chime in:
jest/no-jasmine-globals
Also, I couldn't find no-test-callback
, has that been deprecated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For now I kept the jest/no-jasmine-globals
rule
Let me know if it needs to be removed 🙂
// https://github.com/testing-library/eslint-plugin-testing-library | ||
'testing-library/await-async-query': 'error', | ||
'testing-library/await-async-utils': 'error', | ||
'testing-library/no-await-sync-query': 'warn', | ||
'testing-library/no-debug': 'warn', | ||
'testing-library/no-dom-import': ['error', 'react'], | ||
'testing-library/no-manual-cleanup': 'error', | ||
'testing-library/no-render-in-setup': 'error', | ||
'testing-library/no-wait-for-empty-callback': 'error', | ||
'testing-library/no-wait-for-snapshot': 'error', | ||
'testing-library/prefer-explicit-assert': 'warn', | ||
'testing-library/prefer-find-by': 'warn', | ||
'testing-library/prefer-presence-queries': 'warn', | ||
'testing-library/prefer-screen-queries': 'warn', | ||
'testing-library/prefer-wait-for': 'warn', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can also turn off:
testing-library/no-debug
testing-library/no-manual-cleanup
testing-library/no-render-in-setup
testing-library/prefer-*
I'm not sure about these, if they don't cause any errors - maybe we should turn them off?
testing-library/no-await-sync-query
testing-library/no-dom-import
testing-library/no-wait-for-empty-callback
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For now I kept the testing-library/no-await-sync-query
, testing-library/no-dom-import
& testing-library/no-wait-for-empty-callback
rules
Let me know if they need to be removed 🙂
7b284b7
to
a670c12
Compare
a670c12
to
bdb4d1c
Compare
* Update template tests (facebook#8705) * Bump TypeScript template to 3.8 (facebook#8713) * Add .cjs and .mjs files support to test runner (facebook#8768) * Use simplified import of @testing-library/jest-dom (facebook#8763) * Include absoluteRuntime in babel preset docs (facebook#5847) * Specify what files are served form a bare local copy (facebook#8749) * fix: handle templates without main package field (facebook#8734) * Add experimental react-refresh support (facebook#8582) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * Add setupTests.js to the list of generated files (facebook#8791) * Simplify wording in setting-up-your-editor.md (facebook#8684) * Update url to see prettier in action (facebook#8610) * Bump acorn from 6.4.0 to 6.4.1 in /docusaurus/website (facebook#8656) Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1. - [Release notes](https://github.com/acornjs/acorn/releases) - [Commits](acornjs/acorn@6.4.0...6.4.1) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Don't use webpack multi entry unnecessarily (facebook#8834) Passing an array with a single entry is not equivalent. This causes Webpack to generate another wrapper module around the entry. This is just unnecessary overhead and bytes. * Widen eslint-config-react-app peer dependency versions (facebook#8892) See facebook#7790 for a previous similar PR. * Revert "Replace favicon in templates (facebook#8194)" (facebook#8925) This reverts commit c03bb36. * Minor/patch dependency upgrades (facebook#8947) * Upgrade to Jest 25 (facebook#8362) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * Drop Node 8 support (facebook#8948) * Bump React Hooks ESLint plugin to 4.0.0 (facebook#8939) * Update build script deployment URL (facebook#8651) * Do not check for interactive session to shut down dev server (facebook#8845) * Support source maps for scss in dev environments (facebook#8638) * Skip stdin resuming to support lerna parallel (facebook#8700) * Set resetMocks to true by default in jest config (facebook#7899) * Add import/no-anonymous-default-export lint rule (facebook#8926) * Upgrade testing-library packages (facebook#8406) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * Bump style-loader to 1.2.1 (facebook#8891) * Support devDependencies in templates (facebook#8838) * fix react-refresh babel plugin not applied (facebook#8952) * Add a VSCode tip in the CSS reset section (facebook#8246) * Add back in --stats output from webpack. (facebook#8790) * Fix --use-pnp for Yarn 2 (facebook#8460) * Replace period in CSS Module classnames (facebook#8492) * Move shortlinks to cra.link (facebook#8957) * Remove outdated comment (facebook#8858) * bump webpack-dev-server to 3.11.0 (facebook#8975) Co-authored-by: Marc Hassan <marc@unqork.com> * Dependency major version upgrades (facebook#8950) * Update packages (facebook#9081) * Fix dotenv file loading order (facebook#9037) * Fix dotenv file loading order * tests: fix failing env tests * tests: fix more failing tests Co-authored-by: Brody McKee <mrmckeb@hotmail.com> * feat: remove typescript flag and NODE_PATH support (facebook#8934) * Update question issue template * Update getting-started.md to match templates (facebook#9089) * Upgrade to Jest 26 (facebook#8955) * Update Jest to 26 * Upgrade to Jest 26.0.1 * Use jest-circus test runner by default * Try resolving test runner to fix behavior tests * Run TypeScript verification in new context * Delete globalThis if polyfilled * feat(react-scripts): allow testMatch for jest config (facebook#9114) resolves facebook#8637 * Add support for absolute paths when using url() in CSS (facebook#7937) * Support scss absolute path resolution for url() Adding resolve-url-loader broke all apps using scss with centralized assets folder and all url(./assets/*.png) broke (facebook#7023). This change allows apps to use url(/assets/*.png) and it would map to src/assets/*.png * test: Add global scss assets test * Upgrade dependencies (facebook#9132) * Fix typo in docs (facebook#9135) * Add performance relayer + documentation (web-vitals) (facebook#9116) Co-authored-by: Brody McKee <mrmckeb@users.noreply.github.com> Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * Update deployment docs for Azure Static Web Apps (facebook#9042) Co-authored-by: Minh Nguyen <minhnguyenxx@gmail.com> * Replace Spectrum links with GitHub Discussions (facebook#9102) * Use process.execPath to spawn node subprocess (facebook#8694) * Upgrade dependencies (facebook#9196) * Bump version of Verdaccio (facebook#7787) * Support ESLint 7.x (facebook#8978) * Fix chai URL (facebook#8895) The root domain, chaijs.com, does not serve a valid certificate and gives a browser warning. * Explain how to uninstall create-react-app globally (facebook#9244) * Explain how to uninstall create-react-app globally * Add uninstallation intructions for yarn * Upgrade dependencies (facebook#9317) * Switch to the Workbox InjectManifest plugin (facebook#9205) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * Upgrade refresh plugin (facebook#9348) * feat: Update ESLint dependencies (facebook#9251) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * Remove server worker registration from default templates (facebook#9349) * Clarify wording in adding TypeScript to existing project (facebook#9231) * feat: better refresh plugin integration (facebook#9375) * feat: exit on outdated create-react-app version (facebook#9359) * Prepare 4.0.0 alpha release * Updated README.md Templates to Follow ESLint Markdown Rules (facebook#9241) * [Doc] fix React Testing Library example (facebook#9245) * Update running-tests.md (facebook#9380) * Add Fast Refresh warning when using React < 16.10 (facebook#9350) * Publish refreshOverlayInterop with react-dev-utils (facebook#9390) * fix: remove deprecated rule (facebook#9401) * clean formatMessage usage (facebook#9059) * feat: Update testing-library dependencies to latest (facebook#9252) * fix: use default modules option from `preset-env` (facebook#9374) * Bump immer version (facebook#8933) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> Co-authored-by: Ian Sutherland <ian@iansutherland.ca> * Upgrade whatwg-fetch (facebook#9392) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * Fix template name handling (facebook#9412) * Prepare 4.0.0 alpha release * chore: update to jest@26.3 (facebook#9461) * Create SECURITY.md * Add 3.4.2 to changelog * Add 3.4.3 to the changelog * Fixes in the /packages/react-devs-utils/README.md file (facebook#9471) * Added CRA logo in README.md (facebook#9363) * Added React logo in README.md * Added React logo in README file that makes looks nicer now. * Added CRA Logo in README.md that looks nicer * Replacing React Logo with CRA Logo instead Co-authored-by: Eddie Monge Jr <eddiemonge@users.noreply.github.com> * Update README.md Co-authored-by: Eddie Monge Jr <eddiemonge@users.noreply.github.com> Co-authored-by: Dan Abramov <dan.abramov@gmail.com> * Update Vercel deployment documentation (facebook#9560) * Fix insensitive language in Docusaurus docs (facebook#9618) * Remove ESLint extends and add Jest rules (facebook#9587) * fix: Fix azure-pipelines' endOfLine (facebook#9258) * Update template dependencies to latest version (facebook#9526) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * Update running-tests.md (facebook#9073) * feat: Update ESLint dependencies (facebook#9434) * Emphasise that Next.js is capable of SSG (facebook#9630) * docs: add alt tag to homepage logo (facebook#9499) * fix: resolve CI build failure (facebook#9640) * Use new JSX transform with React 17 (facebook#9645) * Upgrade dependencies (facebook#9639) * Prepare 4.0.0 alpha release * Update postcss-safe-parser * Prepare 4.0.0 alpha release * Update CODEOWNERS * fix: resolve ESLint config from appPath (facebook#9683) * Add AVIF image support (facebook#9611) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * fix: resolve new JSX runtime issues (facebook#9788) * Upgrade Docusaurus to latest version (facebook#9728) * Replace deprecated eslint-loader with eslint-webpack-plugin (facebook#9751) * Replace deprecated eslint-loader by eslint-webpack-plugin * Update eslintFormatter for eslint-webpack-plugin * fix: always enable jsx-uses-react Co-authored-by: Brody McKee <mrmckeb@hotmail.com> * Add 3.4.4 to the changelog * Bump resolve-url-loader version (facebook#9841) * Bump resolve-url-loader version * Unpin resolve-url-loader * Fix refreshOverlayInterop module scope error (facebook#9805) * Make eslint-plugin-jest an optional peerDependency (facebook#9670) * feat(eslint-config-react-app): Add jest & testing-library rules (facebook#8963) * feat: Update ESLint dependencies (facebook#9856) * feat: remove unused React imports (facebook#9853) * feat: Update all dependencies (facebook#9857) Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> * New JSX Transform opt out (facebook#9861) * Use new JSX setting with TypeScript 4.1.0 (facebook#9734) * Upgrade to React 17 (facebook#9863) * Prepare 4.0.0 alpha release * Pass JSX runtime setting to Babel preset in Jest config (facebook#9865) * Prepare 4.0.0 release * Update CHANGELOG * Add link to Open Collective (facebook#9864) * Update CHANGELOG * Update react dom in error overlay * Prepare 4.0.0 release * Publish - babel-plugin-named-asset-import@0.3.7 - babel-preset-react-app@10.0.0 - confusing-browser-globals@1.0.10 - cra-template-typescript@1.1.0 - cra-template@1.1.0 - create-react-app@4.0.0 - eslint-config-react-app@6.0.0 - react-app-polyfill@2.0.0 - react-dev-utils@11.0.0 - react-error-overlay@6.0.8 - react-scripts@4.0.0 * undo antd-package removel Co-authored-by: Michaël De Boey <info@michaeldeboey.be> Co-authored-by: Braedon Gough <38016720+braedongough@users.noreply.github.com> Co-authored-by: Andrey Sitnik <andrey@sitnik.ru> Co-authored-by: Kirill Korolyov <kirill.korolyov@gmail.com> Co-authored-by: Iddan Aaronsohn <mail@aniddan.com> Co-authored-by: Clément Hallet <clement@challet.eu> Co-authored-by: Brody McKee <mrmckeb@users.noreply.github.com> Co-authored-by: Adam Charron <adam@charrondev.com> Co-authored-by: Ian Schmitz <ianschmitz@gmail.com> Co-authored-by: Mostafa Nawara <nawaragfx@gmail.com> Co-authored-by: Cory House <housecor@gmail.com> Co-authored-by: Michael Schmidt-Voigt <michael@schmidt-voigt.de> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sebastian Markbåge <sebastian@calyptus.eu> Co-authored-by: Minh Nguyen <minhnguyenxx@gmail.com> Co-authored-by: Dan Abramov <dan.abramov@gmail.com> Co-authored-by: Kenneth Skovhus <skovhus@users.noreply.github.com> Co-authored-by: Sten Arthur Laane <laanesten@gmail.com> Co-authored-by: Jeremy Wadsack <jeremy.wadsack@gmail.com> Co-authored-by: Matt Korostoff <mkorostoff@gmail.com> Co-authored-by: Hieu Do <xlu.untitled@gmail.com> Co-authored-by: Alex Krolick <alexkrolick@users.noreply.github.com> Co-authored-by: Shakib Hossain <3992124+shakib609@users.noreply.github.com> Co-authored-by: Ernesto García <gnapse@gmail.com> Co-authored-by: Eugene Chybisov <imchybisov@gmail.com> Co-authored-by: Tan Li Hau <tanhauhau@users.noreply.github.com> Co-authored-by: Maaz Syed Adeeb <maaz.adeeb@gmail.com> Co-authored-by: Sam Saccone <samccone@gmail.com> Co-authored-by: Nick McCurdy <nick@nickmccurdy.com> Co-authored-by: Evan Kennedy <evan_kennedy@yahoo.com> Co-authored-by: Ian Sutherland <ian@iansutherland.ca> Co-authored-by: Chetanya Kandhari <availchet@gmail.com> Co-authored-by: Marc Hassan <marc.j.hassan@gmail.com> Co-authored-by: Marc Hassan <marc@unqork.com> Co-authored-by: Joe Haddad <timer150@gmail.com> Co-authored-by: Brody McKee <mrmckeb@hotmail.com> Co-authored-by: Josemaria Nriagu <49484425+josenriagu@users.noreply.github.com> Co-authored-by: Jeroen Claassens <jeroen.claassens@live.nl> Co-authored-by: atlanteh <atlanteh@gmail.com> Co-authored-by: Jakob Krigovsky <jakob@krigovsky.com> Co-authored-by: Houssein Djirdeh <houssein.djirdeh@gmail.com> Co-authored-by: Burke Holland <burkeholland@gmail.com> Co-authored-by: Anuraag Agrawal <anuraaga@gmail.com> Co-authored-by: Brian Morearty <brian@morearty.org> Co-authored-by: Jeffrey Posnick <jeffy@google.com> Co-authored-by: Dylan Brookes <24858006+merelinguist@users.noreply.github.com> Co-authored-by: Michael Mok <pmmmwh@gmail.com> Co-authored-by: Rafael Quijada <firehawk09@users.noreply.github.com> Co-authored-by: Sakito Mukai <sakito21@gmail.com> Co-authored-by: Andy C <7357845+andycanderson@users.noreply.github.com> Co-authored-by: Kline Moralee <klinemoralee@gmail.com> Co-authored-by: Gerrit Alex <admin@gerritalex.de> Co-authored-by: Sam Chen <chenxsan@gmail.com> Co-authored-by: Huáng Jùnliàng <jlhwung@gmail.com> Co-authored-by: Stafford Williams <staff0rd@users.noreply.github.com> Co-authored-by: Lenard Pratt <striderman34@gmail.com> Co-authored-by: Simen Bekkhus <sbekkhus91@gmail.com> Co-authored-by: Webdot_30 <nwaforuchechukwu2007@gmail.com> Co-authored-by: Raihan Nismara <31585789+raihan71@users.noreply.github.com> Co-authored-by: Eddie Monge Jr <eddiemonge@users.noreply.github.com> Co-authored-by: Timothy <1695613+timothyis@users.noreply.github.com> Co-authored-by: Liam Duffy <3338808+liamness@users.noreply.github.com> Co-authored-by: Tobias Büschel <13087421+tobiasbueschel@users.noreply.github.com> Co-authored-by: Hongbo Miao <Hongbo.Miao@outlook.com> Co-authored-by: Alexey Pyltsyn <lex61rus@gmail.com> Co-authored-by: Clément DUNGLER <clementdungler@gmail.com> Co-authored-by: Johannes Pfeiffer <johannespfeiffer@netnexus.de> Co-authored-by: Sai <sai@pelago.com.sg>
Now since we have added testing library eslint configs to cra, we don't need to add eslint-plugin-jest and eslint-plugin-testing-library to our project? Am I correct? Because i was going through @kentcdodds article, https://kentcdodds.com/blog/common-mistakes-with-react-testing-library , and found out these plugins as recommended. |
@jugshaurya you are right! Create React App already includes them since v4. We still need to mention this on |
Closes #8446
Closes #8959
Since we now have ESLint 7 support, we need to wait until
eslint-plugin-jest-dom
&eslint-plugin-testing-library
are ESLint 7 compatible.eslint-plugin-jest
eslint-plugin-testing-library