js: configure vitest + happy-dom test environment (#81105) #666

Open
csechet wants to merge 1 commits from wip/81105-tests-unitaires-js into main
Owner

Le test est là à titre d'exemple, je le retirerai si c'est validé. Le choix de vitest rapport à jest parce qu'il supporte sans installation ni configuration supplémentaire les modules ES6 et jsdom, contrairement à jest. Le package.json ne sert qu'à faire tourner les tests.

Par contre le "blazing fast" annoncé ici https://vitest.dev/ est tout relatif. Blazing fast pour du nodejs, probablement.

Pour tester :

npm install
npm run test

En ayant au préalable fait une prière aux oracles de la compatibilité entre versions de NodeJS (18.13.0 chez moi).

Le test est là à titre d'exemple, je le retirerai si c'est validé. Le choix de vitest rapport à jest parce qu'il supporte sans installation ni configuration supplémentaire les modules ES6 et jsdom, contrairement à jest. Le package.json ne sert qu'à faire tourner les tests. Par contre le "blazing fast" annoncé ici https://vitest.dev/ est tout relatif. Blazing fast pour du nodejs, probablement. Pour tester : ``` npm install npm run test ``` En ayant au préalable fait une prière aux oracles de la compatibilité entre versions de NodeJS (18.13.0 chez moi).
csechet added 1 commit 2023-09-12 12:06:13 +02:00
Owner

Même avec la même version,

 $ npm install npm run test
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'npm@10.1.0',
npm WARN EBADENGINE   required: { node: '^18.17.0 || >=20.5.0' },
npm WARN EBADENGINE   current: { node: 'v18.13.0', npm: '9.2.0' }
npm WARN EBADENGINE }

added 173 packages, and audited 437 packages in 8s

93 packages are looking for funding
  run `npm fund` for details

1 moderate severity vulnerability

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
Même avec la même version, ``` $ npm install npm run test npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: 'npm@10.1.0', npm WARN EBADENGINE required: { node: '^18.17.0 || >=20.5.0' }, npm WARN EBADENGINE current: { node: 'v18.13.0', npm: '9.2.0' } npm WARN EBADENGINE } added 173 packages, and audited 437 packages in 8s 93 packages are looking for funding run `npm fund` for details 1 moderate severity vulnerability To address all issues, run: npm audit fix Run `npm audit` for details. ```
Author
Owner

Même avec la même version,

Ma faute, c'est deux commandes : npm install puis npm run test, j'ai corrigé la description.

> Même avec la même version, Ma faute, c'est deux commandes : npm install puis npm run test, j'ai corrigé la description.
csechet force-pushed wip/81105-tests-unitaires-js from 2e2fea0f67 to 597433296c 2023-09-20 10:54:33 +02:00 Compare
csechet force-pushed wip/81105-tests-unitaires-js from 597433296c to b789422571 2023-09-20 13:56:02 +02:00 Compare
csechet force-pushed wip/81105-tests-unitaires-js from b789422571 to e2f231ae4c 2023-09-20 14:43:13 +02:00 Compare
csechet force-pushed wip/81105-tests-unitaires-js from e2f231ae4c to 27760c502c 2023-09-20 15:12:25 +02:00 Compare
csechet changed title from js: configure vitest + jsdom test environments (#81105) to js: configure web-test-runner test environment (#81105) 2023-09-20 15:27:16 +02:00
Author
Owner

Une autre tentative.

On utilise web-test-runner, qui lance les tests dans un browser (en utilisant Playwright ici).

https://modern-web.dev/docs/test-runner/overview/

Au prix d'une installation initiale plus lourde (il faut télécharger le driver firefox pour playwright), on teste dans un "vrai" environnement, et pas un mock comme JSDOM. On peut aussi déboguer les tests directement dans le navigateur, et les faire potentiellement tourner sur Chrome & Safari sur Jenkins. Et on peut aussi faire des tests dans des pages HTML directement, plutôt que de faire un document.body.innerHTML = "...", ce qui permet de mieux tester tout de qui est DOMContentLoaded et patin couffin.

J'ai essayé de me passer de package.json en installant tout dans l'environnement nodeenv, mais ça pose beaucoup de problème de résolution des packages dans les tests. Donc je sais que c'est pas beau un package.json, mais on peut choisir de ne pas le regarder.

tox -e web-test-runner

Pour lancer, c'est passé sur Jenkins.

Une autre tentative. On utilise web-test-runner, qui lance les tests dans un browser (en utilisant Playwright ici). https://modern-web.dev/docs/test-runner/overview/ Au prix d'une installation initiale plus lourde (il faut télécharger le driver firefox pour playwright), on teste dans un "vrai" environnement, et pas un mock comme JSDOM. On peut aussi déboguer les tests directement dans le navigateur, et les faire potentiellement tourner sur Chrome & Safari sur Jenkins. Et on peut aussi faire des tests dans des pages HTML directement, plutôt que de faire un document.body.innerHTML = "...", ce qui permet de mieux tester tout de qui est DOMContentLoaded et patin couffin. J'ai essayé de me passer de package.json en installant tout dans l'environnement nodeenv, mais ça pose beaucoup de problème de résolution des packages dans les tests. Donc je sais que c'est pas beau un package.json, mais on peut choisir de ne pas le regarder. `tox -e web-test-runner` Pour lancer, c'est passé sur Jenkins.
csechet changed title from js: configure web-test-runner test environment (#81105) to WIP: js: configure web-test-runner test environment (#81105) 2023-09-25 10:41:56 +02:00
Author
Owner

Après quelques tests dans la vraie vie, c'est quand même maxi plus lourd avec web-test-runner : c'est pas stable, la configuration est compliquée. Je vais revenir à vitest + happy-dom (qui parait un peu plus solide que JSDom), et configurer ça dans tox.

Après quelques tests dans la vraie vie, c'est quand même maxi plus lourd avec web-test-runner : c'est pas stable, la configuration est compliquée. Je vais revenir à vitest + happy-dom (qui parait un peu plus solide que JSDom), et configurer ça dans tox.
csechet force-pushed wip/81105-tests-unitaires-js from 27760c502c to d8b23170e0 2023-09-26 12:53:06 +02:00 Compare
csechet changed title from WIP: js: configure web-test-runner test environment (#81105) to js: configure vitest + happy-dom test environment (#81105) 2023-09-26 13:03:00 +02:00
Author
Owner

tox -e vitest

désormais, plus de package.json, tout est géré dans tox.

`tox -e vitest` désormais, plus de package.json, tout est géré dans tox.
csechet requested review from fpeters 2023-09-26 13:20:23 +02:00
Owner

Le test est là à titre d'exemple, je le retirerai si c'est validé.

On en discutera de toute façon en novembre mais je visualise assez mal encore comment de vrais tests vont être écrits.

Je trouverais super de prendre un problème récent et de lui associer un test unitaire js, je pense ici à #82406, en regardant les commits touchant au js ces derniers mois, je me dis que peut-être #80310 pourrait aussi être un candidat.

> Le test est là à titre d'exemple, je le retirerai si c'est validé. On en discutera de toute façon en novembre mais je visualise assez mal encore comment de vrais tests vont être écrits. Je trouverais super de prendre un problème récent et de lui associer un test unitaire js, je pense ici à #82406, en regardant les commits touchant au js ces derniers mois, je me dis que peut-être #80310 pourrait aussi être un candidat.
fpeters refused to review 2023-10-26 09:35:26 +02:00
All checks were successful
gitea/wcs/pipeline/head This commit looks good
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/wcs#666
No description provided.