|
1 | 1 | # Symfony UX Stimulus testing
|
2 | 2 |
|
| 3 | +> [!WARNING] |
| 4 | +> **Deprecated**: This package is deprecated and will not receive any further updates. |
| 5 | +
|
| 6 | +Because this package only provides very small helpers to help write tests for Stimulus controllers, and is tightly coupled with [Jest](https://jestjs.io/), [jsdom](https://github.com/jsdom/jsdom) and [Testing Library](https://testing-library.com/) dependencies, we can no longer recommend it. |
| 7 | + |
| 8 | +In 2025, we cannot force developers to install Jest (and [~270 sub-dependencies](https://npmgraph.js.org/?q=jest) including [Babel](https://babeljs.io/)) and the like, since [many test runners exist](https://npmtrends.com/ava-vs-japa-vs-jasmine-vs-jest-vs-karma-vs-mocha-vs-tap-vs-vitest), and many of them are more modern and much faster, like [Vitest](https://vitest.dev/). |
| 9 | + |
| 10 | +We want to give you the choice to use the best tools for your needs, and not force you to use what we suggested in the past. |
| 11 | + |
| 12 | +To migrate from `@symfony/stimulus-testing`, you can follow these steps: |
| 13 | + |
| 14 | +1. Install the dev dependencies `@testing-library/jest-dom @testing-library/dom`; |
| 15 | + you may also want to install `mutationobserver-shim regenerator-runtime` if you still have |
| 16 | + legacy code or _architecture_. |
| 17 | +2. In the file `assets/test/setup.js`, replace imports: |
| 18 | +```diff |
| 19 | +-import '@symfony/stimulus-testing/setup'; |
| 20 | ++import '@testing-library/jest-dom'; |
| 21 | +``` |
| 22 | +3. Create the file `assets/test/stimulus-helpers.js` with the following content: |
| 23 | +```js |
| 24 | +export function mountDOM(html = '') { |
| 25 | + const div = document.createElement('div'); |
| 26 | + div.innerHTML = html; |
| 27 | + document.body.appendChild(div); |
| 28 | + |
| 29 | + return div; |
| 30 | +} |
| 31 | + |
| 32 | +export function clearDOM() { |
| 33 | + document.body.innerHTML = ''; |
| 34 | +} |
| 35 | +``` |
| 36 | +4. In your tests files, replace imports for `mountDOM` and `clearDOM`: |
| 37 | +```diff |
| 38 | +// assets/test/controllers/hello_controller.test.js |
| 39 | +-import { clearDOM, mountDOM } from '@symfony/stimulus-testing'; |
| 40 | ++import { clearDOM, mountDOM } from '../stimulus-helpers'; |
| 41 | +``` |
| 42 | +5. And finally, remove the `@symfony/stimulus-testing` dependency from your project. |
| 43 | + |
| 44 | +--- |
| 45 | + |
3 | 46 | Symfony UX Stimulus testing is a low-level package to help write tests for Stimulus controllers
|
4 | 47 | in applications and reusable packages.
|
5 | 48 |
|
|
0 commit comments