Skip to content
This repository was archived by the owner on Jul 5, 2025. It is now read-only.

Commit 17420a4

Browse files
committed
feature #10 Deprecate the package (Kocal)
This PR was merged into the main branch. Discussion ---------- Deprecate the package I don't think there is any interest in _maintaining_ it anymore. Because of Jest and Babel, installing ``@symfony`/stimulus-testing` installs [**~500 subdependencies**](https://npmgraph.js.org/?q=%40symfony%2Fstimulus-testing), which is totally unacceptable, since the added-value of this package is only these two functions: ```js export function mountDOM(html = '') { const div = document.createElement('div'); div.innerHTML = html; document.body.appendChild(div); return div; } export function clearDOM() { document.body.innerHTML = ''; } ``` It's like a Composer package, but all its dependencies being shadowed and not removable by the final user. Removing it from `@symfony`/ux, where we don't use Jest and Babel but Vitest, allowed us to remove ~400 useless Node.js dev dependencies: symfony/ux#2879 The package is still experimental, and I suggest to deprecate this package. I've added migration steps for people being stuck with it, even if I think we, Symfony, are maybe the only ones to use it: https://github.com/user-attachments/assets/86a21c37-8560-43dc-bec9-0043875831ea We can observe: 1. it always had ~1k downloads per week this last year, 2. more recently we had ~21k downloads per week, and I believe that's correlated to my last two-months work on UX 3. and since a few days, it started to drop again (currently at 8k downloads for the last full week), when I removed it from UX Commits ------- 07d2209 Deprecate the package
2 parents 7194dc0 + 07d2209 commit 17420a4

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

README.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,48 @@
11
# Symfony UX Stimulus testing
22

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+
346
Symfony UX Stimulus testing is a low-level package to help write tests for Stimulus controllers
447
in applications and reusable packages.
548

0 commit comments

Comments
 (0)