Ich habe heute den Cypress-Zweig getestet, den du entwickelt hast, und es funktioniert gut
Ich habe begonnen, die Frontend-Komponente des Tp-Link-Dienstes zu testen und komme gut voran. Der Fixture/Mock-Teil der Backend-Aufrufe ist etwas komplexer, aber es funktioniert auch.
Ich denke, wir sollten wirklich in den TDD-Modus wechseln, um solche Tests zu schreiben.
Für den Backend-API-Teil möchten wir nur den Core testen? Der Rest (Dienste) ist zu stark mit der Hardware verknüpft, also möchten wir alles mocken, oder?
Ich denke, es gibt einen Fehler zwischen der Dokumentation und dem Befehl im package.json, um den Server für die Cypress-Tests zu starten (npm run start:cypress <=> npm run cypress:start)
Danke für die Arbeit und ich freue mich darauf, das in der CI und in der Abdeckung zu sehen
Ja, das wird die Implementierung unserer Tests einfacher machen und auch die Validierung unserer Entwicklungen.
Es wäre gut, den Core so weit wie möglich zu testen. Aber ja, für die Interaktionen mit den Geräten ist es kompliziert, also müssen wir versuchen, nur die WebServices zu mocken, die die echten Dienste aufrufen.
Wenn wir es auf einer Konfigurationsseite machen (wie für Bluetooth und die Scan-Frequenz, die nur Parameter in der Datenbank speichert).
Das Skript npm run cypress:start sollte nicht in der package.json der Root-Verzeichnis sein, und die Dokumentation besagt, dass man sich im Root-Verzeichnis von Gladys befinden muss (weder im Frontend noch im Server).
(ja, ich weiß cypress:start vs start:cypress, ich habe versucht, der bereits bestehenden « Logik » zu folgen, aber alles ist änderbar ).
Mit meinem PR führt die CI bereits die Tests aus (blockierend im Fehlerfall), es fehlt nur die Abdeckung.
Danke, dass du es versucht hast, @pierre-gilles und ich hatten vereinbart, dass ich die Komponente « react-select » testen sollte, die ein wenig besonders ist (um die zu verwendende Technik bereitzustellen), und die Community damit spielen lassen sollte, bevor ich merge, dann Stück für Stück, um den Tunneleffekt zu vermeiden (und ich gebe zu, dass 5 Tage am Stück daran zu arbeiten, anstrengend ist).
@AlexTrovato Gibt es eine Chance, dass ich bald den Cypress-PR zusammenführen kann? Ich denke, wie besprochen, können wir ihn zusammenführen, auch wenn nicht alles abgedeckt ist. Dann ist zumindest die Struktur auf dem Master und wir können uns darauf stützen, um PRs zu erstellen, die die Abdeckung erhöhen
Ja, das können wir, wenn sie durchgeht. Ich bin mir nicht sicher, ob ich einen aktuellen Rebase habe.
Wir kommen mit der Zeit, genau wie du sagst, das ist in Ordnung für mich.
Entschuldigung, ich muss wohl nicht gut sein ^^ @AlexTrovato könntest du mir helfen, Cypress unter WSL zu starten? Also, falls ich etwas nicht verstanden oder falsch gemacht habe…
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
Und schließlich habe ich versucht, Cypress zu starten (Versuch von der Frontend und der Gladys-Wurzel aus).
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
Dann habe ich versucht, dem Link zu folgen, den du in deinen Slides angibst:
Danach habe ich versucht, den Server- und Frontend-Teil neu zu starten, aber auch das hat nichts gebracht.
Ich habe keine Clients auf Xlaunch. Gibt es bestimmte Ports, die ich öffnen muss?
Bon c’est fait, alors ça ajoute des choses, au moins ça versucht wirklich, es zu starten ^^
Aber es stürzt ab ^^ - Ich werde mir das heute Abend ansehen, wenn ich nach Hause komme ^^ :
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
Es sieht so aus, als ob dies Ihr erstes Mal mit Cypress: 6.9.1 ist
⠹ Überprüfung, ob Cypress ausgeführt werden kann /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
⠴ Überprüfung, ob Cypress ausgeführt werden kann /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
⠋ Überprüfung, ob Cypress ausgeführt werden kann /home/terdieu/.cache/Cypress/6.9.1/Cypress
internal/modules/cjs/loader.js:1144
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: Das Modul '/home/terdieu/gladys-dev/requeteAPI/Gladys/server/node_modules/node-webcrypto-ossl/build/Release/nodessl.node'
wurde mit einer anderen Node.js-Version kompiliert, die
NODE_MODULE_VERSION 72 verwendet. Diese Version von Node.js erfordert
NODE_MODULE_VERSION 83. Bitte versuchen Sie, das Modul neu zu kompilieren oder neu zu installieren
(z. B. mit `npm rebuild` oder `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
⠙ Überprüfung, ob Cypress ausgeführt werden kann /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! Das Skript „gladys-server@ cypress:start“ ist fehlgeschlagen.
npm ERR! Dies ist wahrscheinlich kein Problem mit npm. Es gibt wahrscheinlich zusätzliche Protokollausgaben darüber.
npm ERR! Ein vollständiger Log dieser Ausführung kann gefunden werden 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! Das Skript „gladys-server@ cypress“ ist fehlgeschlagen.
npm ERR! Dies ist wahrscheinlich kein Problem mit npm. Es gibt wahrscheinlich zusätzliche Protokollausgaben darüber.
npm ERR! Ein vollständiger Log dieser Ausführung kann gefunden werden 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! Das Skript „gladys@4.8.3 start-server:cypress“ ist fehlgeschlagen.
npm ERR! Dies ist wahrscheinlich kein Problem mit npm. Es gibt wahrscheinlich zusätzliche Protokollausgaben darüber.
npm ERR! Ein vollständiger Log dieser Ausführung kann gefunden werden in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-13T04_06_38_114Z-debug.log
⠹ Überprüfung, ob Cypress ausgeführt werden kann /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! Das Skript „gladys@4.8.3 start:cypress“ ist fehlgeschlagen.
npm ERR! Dies ist wahrscheinlich kein Problem mit npm. Es gibt wahrscheinlich zusätzliche Protokollausgaben darüber.
npm ERR! Ein vollständiger Log dieser Ausführung kann gefunden werden 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! Das Skript „gladys@4.8.3 cypress“ ist fehlgeschlagen.
npm ERR! Dies ist wahrscheinlich kein Problem mit npm. Es gibt wahrscheinlich zusätzliche Protokollausgaben darüber.
npm ERR! Ein vollständiger Log dieser Ausführung kann gefunden werden in:
npm ERR! /home/terdieu/.npm/_logs/2022-04-13T04_06_38_202Z-debug.log
Allerdings musst du ein npm rebuild durchführen, wenn du die Node-Version geändert hast (das steht in den vorherigen Logs), weil die Pakete unter Node 12 installiert wurden.