markSteph / react-testing-techniques

React testing Techniques

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

React Testing Techniques

This project implements an online shopping application to show techniques used to test React applications. We use the following tools for testing:

Unit Testing

  • Jest - a testing framework designed to ensure correctness of any JavaScript or TypeScript codebase

  • React Testing Library - a testing framework for React components that encourages better testing practices

  • Mock Service Worker - a framework to mock APIs by intercepting requests at the network level. It allows us to reuse the same mock definition for testing, development, and debugging.

Integration Testing

  • Cypress - a testing framework for fully built Web applications running in a browser

Manual Testing

  • Storybook - a tool that helps build components in isolation and record their states as stories. Stories make it easy to explore a component in all its permutations no matter how complex. They also serve as excellent visual test cases. Storybook testing can also be automated. For details, look at the Storybook documentation.

This project was bootstrapped with React Accelerate.

Testing Topics

  • Structuring code for easier testing - pure JavaScript logic vs. React components
  • Snapshot testing vs. traditional unit testing
  • Suppressing console errors
  • Checking for existence of an element
  • Waiting for removal of an element
  • Waiting for something to happen
  • User events (note how {selectall} works)
  • Mocking a callback (see ProductView test)
  • Use MSW instead of excessive mocking
  • Overriding MSW handlers (see CartView test)
  • Mocking MSW handlers (see CatalogView test)
  • Difference between queryBy, getBy and findBy
  • Testing for page navigation

Getting Started

Note: If you prefer to use npm, please feel free to replace the yarn commands in this section with equivalent npm commands.

Make sure your development machine is set up for building React apps. See the recommended setup procedure here.

Execute the following commands to install dependencies:

yarn install

Execute the following commands to run the app:

yarn start

Now point your browser to http://localhost:3000/.

Running Unit Tests

Execute one of the following command to run unit tests.

yarn test # interactive mode

# OR

yarn test:coverage # non-interactive mode with coverage information

Running End-to-End Tests

yarn start # starts a local server hosting your react app

# in a difference shell, run cypress
yarn cypress:open

Running Storybook

yarn storybook

Screenshots

Home page with item catalog and shopping cart

Home Page

About

React testing Techniques


Languages

Language:TypeScript 75.6%Language:JavaScript 12.9%Language:CSS 9.4%Language:HTML 2.1%Language:Shell 0.0%