J’ai testé aujourd’hui la branche Cypress que tu as développé et ça marche bien
J’ai commencé à tester le front du service Tp-Link et j’arrive à bien avancer. La partie fixture/mock des appels backend est un peu plus complexe mais ça marche aussi.
Je pense qu’il faut vraiment se mettre en mode TDD pour écrire ce genre de tests.
Pour la partie API backend, on veut tester que le core ? Le reste (services) est trop lié au matériel donc on veut tout mocker, c’est ça ?
Je pense qu’il y a une erreur entre la doc et la commande dans le package.json pour lancer le server pour les tests cypress (npm run start:cypress <=> npm run cypress:start)
Merci pour le boulot et hâte de voir ça dans la CI et dans le coverage
Oui ce sera plus simple pour mettre en place nos tests, et aussi pour valider nos devs.
Ce serait bien de tester le core au maximum. Mais en effet, pour les interactions avec les devices, c’est compliqué, donc il faut tenter de mocker uniquement les WebServices faisant appel aux vrais services.
Si on fait sur une page de config (comme pour le Bluetooth et la fréquence se scan, qui ne fait qu’enregistrer des param en base de données).
Le script npm run cypress:start ne devrait pas être sur le fichier package.json de la racine, et la doc précise qu’il faut se placer à la racine de Gladys (ni sur front, ni sur server).
(oui je sais cypress:start vs start:cypress, j’ai tenté de suivre la « logique » déjà en place, mais tout est changeable ).
Avec ma PR, la CI exécute déjà les tests (bloquant en cas d’erreur), ne manque que la couverture.
Merci d’avoir essayer, avec @pierre-gilles on avait convenu que je devais tester le composant « react-select » qui est un peu particulier (afin de fournir la technique à appliquer), et de laisser la communauté jouer avec avant de merger, puis merger petits bouts par petits bouts, afin d’éviter l’effet tunnel (et j’avoue que bosser 5 jours d’affiler dessus, ça use).
@AlexTrovato Du coup tu pense que je peux merger soon la PR cypress? Je pense comme on s’est dit qu’on peut le merger même si tout n’est pas couvert, comme ça au moins la structure est sur master et on peut se baser dessus pour faire des PRs qui ajoute du coverage
Désolé je ne dois pas être doué ^^ @AlexTrovato pourrais-tu m’aider à lancer Cypress sous WSL ? Enfin si il y a un point que je n’ai pas compris ou fait …
terdieu@DUBLEM-PC-01:~/gladys-dev/requeteAPI/Gladys/front[ExpandIconSelectionScenes !]$ npm run start:cypress
> gladys-front@ start:cypress /home/terdieu/gladys-dev/requeteAPI/Gladys/front
> cross-env DEMO_MODE=false WEBSOCKET_URL=ws://localhost:1443 LOCAL_API_URL=http://localhost:1443 npm start
> gladys-front@ start /home/terdieu/gladys-dev/requeteAPI/Gladys/front
> per-env
> gladys-front@ start:development /home/terdieu/gladys-dev/requeteAPI/Gladys/front
> npm run -s dev
Build [ ] 0% (0.0s) compilingℹ 「wds」: Project is running at http://0.0.0.0:1444/
ℹ 「wds」: webpack output is served from /
ℹ 「wds」: Content not from webpack is served from /home/terdieu/gladys-dev/requeteAPI/Gladys/front/src
ℹ 「wds」: 404s will fallback to /index.html
Build [== ] 10% (0.1s) buildingBrowserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Why you should do it regularly:
https://github.com/browserslist/browserslist#browsers-data-updating
Build [========== ] 49% (13.9s) buildingBrowserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Why you should do it regularly:
https://github.com/browserslist/browserslist#browsers-data-updating
Compiled successfully!
You can view the application in browser.
Local: http://0.0.0.0:1444
On Your Network: http://172.29.212.22:1444
Et enfin tenté de lancé Cypress (essai à partir du front et de la racine Gladys).
terdieu@DUBLEM-PC-01:~/gladys-dev/requeteAPI/Gladys[ExpandIconSelectionScenes !]$ npm run cypress:open
> gladys@4.8.3 cypress:open /home/terdieu/gladys-dev/requeteAPI/Gladys
> cd front && npm run cypress:open
> gladys-front@ cypress:open /home/terdieu/gladys-dev/requeteAPI/Gladys/front
> cypress open --config-file cypress/cypress.json
It looks like this is your first time using Cypress: 6.9.1
✖ Verifying Cypress can run /home/terdieu/.cache/Cypress/6.9.1/Cypress
→ Cypress Version: 6.9.1
Cypress verification timed out.
This command failed with the following output:
/home/terdieu/.cache/Cypress/6.9.1/Cypress/Cypress --no-sandbox --smoke-test --ping=156
----------
Command timed out after 30000 milliseconds: /home/terdieu/.cache/Cypress/6.9.1/Cypress/Cypress --no-sandbox --smoke-test --ping=156
Timed out
----------
Platform: linux (Ubuntu - 20.04)
Cypress Version: 6.9.1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gladys-front@ cypress:open: `cypress open --config-file cypress/cypress.json`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys-front@ cypress:open script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-12T08_25_08_213Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gladys@4.8.3 cypress:open: `cd front && npm run cypress:open`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys@4.8.3 cypress:open script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-12T08_25_08_243Z-debug.log
J’ai ensuite tenté de suivre le lien que tu donnes dans tes slides :
Apres j ai tenté de relancer la partie serv et front avant egalement mais rien non plus.
J ai aucun client sur Xlaunch. Des port en particulier à ouvrir ?
Bon c’est fait, alors ça ajoute des choses, au moins ça tente vraiment de le lancer ^^
Mais ça plante ^^ - Je regarderais ça ce soir en rentrant ^^ :
terdieu@DUBLEM-PC-01:~/gladys-dev/requeteAPI/Gladys[ExpandIconSelectionScenes !]$ npm run cypress
> gladys@4.8.3 cypress /home/terdieu/gladys-dev/requeteAPI/Gladys
> run-p start:cypress cypress:open
> gladys@4.8.3 cypress:open /home/terdieu/gladys-dev/requeteAPI/Gladys
> cd front && npm run cypress:open
> gladys@4.8.3 start:cypress /home/terdieu/gladys-dev/requeteAPI/Gladys
> run-p start-server:cypress start-front:cypress
> gladys-front@ cypress:open /home/terdieu/gladys-dev/requeteAPI/Gladys/front
> cypress open --config-file cypress/cypress.json
> gladys@4.8.3 start-server:cypress /home/terdieu/gladys-dev/requeteAPI/Gladys
> cd server && npm run cypress
> gladys@4.8.3 start-front:cypress /home/terdieu/gladys-dev/requeteAPI/Gladys
> cd front && npm run start:cypress
> gladys-server@ cypress /home/terdieu/gladys-dev/requeteAPI/Gladys/server
> npm run cypress:clean && npm run cypress:start
> gladys-front@ start:cypress /home/terdieu/gladys-dev/requeteAPI/Gladys/front
> cross-env DEMO_MODE=false WEBSOCKET_URL=ws://localhost:1443 LOCAL_API_URL=http://localhost:1443 npm start
It looks like this is your first time using Cypress: 6.9.1
⠹ Verifying Cypress can run /home/terdieu/.cache/Cypress/6.9.1/Cypress
> gladys-server@ cypress:clean /home/terdieu/gladys-dev/requeteAPI/Gladys/server
> npx rimraf ./gladys-cypress.db*
> gladys-front@ start /home/terdieu/gladys-dev/requeteAPI/Gladys/front
> per-env
⠴ Verifying Cypress can run /home/terdieu/.cache/Cypress/6.9.1/Cypress
> gladys-server@ cypress:start /home/terdieu/gladys-dev/requeteAPI/Gladys/server
> cross-env SQLITE_FILE_PATH=./gladys-cypress.db node index.js
> gladys-front@ start:development /home/terdieu/gladys-dev/requeteAPI/Gladys/front
> npm run -s dev
⠋ Verifying Cypress can run /home/terdieu/.cache/Cypress/6.9.1/Cypress
internal/modules/cjs/loader.js:1144
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: The module '/home/terdieu/gladys-dev/requeteAPI/Gladys/server/node_modules/node-webcrypto-ossl/build/Release/nodessl.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 72. This version of Node.js requires
NODE_MODULE_VERSION 83. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1144:18)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:101:18)
at Object.<anonymous> (/home/terdieu/gladys-dev/requeteAPI/Gladys/server/node_modules/node-webcrypto-ossl/buildjs/native.js:3:16)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:790:12)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:101:18)
at Object.<anonymous> (/home/terdieu/gladys-dev/requeteAPI/Gladys/server/node_modules/node-webcrypto-ossl/buildjs/key_storage.js:8:16)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32) {
code: 'ERR_DLOPEN_FAILED'
}
npm ERR! code ELIFECYCLE
⠙ Verifying Cypress can run /home/terdieu/.cache/Cypress/6.9.1/Cypress
npm ERR! gladys-server@ cypress:start: `cross-env SQLITE_FILE_PATH=./gladys-cypress.db node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys-server@ cypress:start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-13T04_06_38_053Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gladys-server@ cypress: `npm run cypress:clean && npm run cypress:start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys-server@ cypress script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-13T04_06_38_092Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gladys@4.8.3 start-server:cypress: `cd server && npm run cypress`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys@4.8.3 start-server:cypress script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-13T04_06_38_114Z-debug.log
⠹ Verifying Cypress can run /home/terdieu/.cache/Cypress/6.9.1/Cypress
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gladys@4.8.3 start:cypress: `run-p start-server:cypress start-front:cypress`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys@4.8.3 start:cypress script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-13T04_06_38_161Z-debug.log
ERROR: "start:cypress" exited with 1.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gladys@4.8.3 cypress: `run-p start:cypress cypress:open`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys@4.8.3 cypress script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-13T04_06_38_202Z-debug.log
Par contre il faut faire un npm rebuild si tu as changer de version de node ( c’est écrit dans les logs précédent) car les packages ont été installés sous node 12.