Commit e154ab3a authored by Evan Read's avatar Evan Read

Merge branch 'winh-jest-differences-docs' into 'master'

Document the differences between Karma and Jest setup

Closes #59976

See merge request gitlab-org/gitlab-ce!28216
parents bb6d1572 e1b31627
...@@ -15,10 +15,8 @@ information on general testing practices at GitLab. ...@@ -15,10 +15,8 @@ information on general testing practices at GitLab.
## Jest ## Jest
GitLab has started to migrate tests to the [Jest](https://jestjs.io) We have started to migrate frontend tests to the [Jest](https://jestjs.io) testing framework (see also the corresponding
testing framework. You can read a [detailed evaluation](https://gitlab.com/gitlab-org/gitlab-ce/issues/49171) [epic](https://gitlab.com/groups/gitlab-org/-/epics/895)).
of Jest compared to our use of Karma and Jasmine. In summary, it will allow us
to improve the performance and consistency of our frontend tests.
Jest tests can be found in `/spec/frontend` and `/ee/spec/frontend` in EE. Jest tests can be found in `/spec/frontend` and `/ee/spec/frontend` in EE.
...@@ -26,6 +24,17 @@ It is not yet a requirement to use Jest. You can view the ...@@ -26,6 +24,17 @@ It is not yet a requirement to use Jest. You can view the
[epic](https://gitlab.com/groups/gitlab-org/-/epics/873) of issues [epic](https://gitlab.com/groups/gitlab-org/-/epics/873) of issues
we need to solve before being able to use Jest for all our needs. we need to solve before being able to use Jest for all our needs.
### Differences to Karma
- Jest runs in a Node.js environment, not in a browser. Support for running Jest tests in a browser [is planned](https://gitlab.com/gitlab-org/gitlab-ce/issues/58205).
- Because Jest runs in a Node.js environment, it uses [jsdom](https://github.com/jsdom/jsdom) by default.
- All calls to `setTimeout` and `setInterval` are mocked away. See also [Jest Timer Mocks](https://jestjs.io/docs/en/timer-mocks).
- `rewire` is not required because Jest supports mocking modules. See also [Manual Mocks](https://jestjs.io/docs/en/manual-mocks).
- The following will cause tests to fail in Jest:
- Unmocked requests.
- Unhandled Promise rejections.
- Calls to `console.warn`, including warnings from libraries like Vue.
### Debugging Jest tests ### Debugging Jest tests
Running `yarn jest-debug` will run Jest in debug mode, allowing you to debug/inspect as described in the [Jest docs](https://jestjs.io/docs/en/troubleshooting#tests-are-failing-and-you-don-t-know-why). Running `yarn jest-debug` will run Jest in debug mode, allowing you to debug/inspect as described in the [Jest docs](https://jestjs.io/docs/en/troubleshooting#tests-are-failing-and-you-don-t-know-why).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment