No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Ejecuci贸n de scripts

12/24
Recursos

En esta clase incorporaremos a nuestro testing un script de NodeJS que eliminar谩 de la base de datos de Firebase los registros de usuario creados en cada ejecuci贸n, para evitar que falle el test por error de usuario duplicado. Tendremos que correr este script mediante una instrucci贸n shell antes de la ejecuci贸n de cada testing de Cypress.

Para que el script funcione correctamente ser谩 necesario instalar firebase-admin con npm i firebase-admin -D y colocar en el archivo firebase-admin-keys.json las credenciales de acceso al proyecto proporcionadas por Firebase en la secci贸n Cuentas de Servicio.

Finalmente creamos un nuevo script en el archivo de configuraciones de webpack llamado test:clean con la siguiente l铆nea de comandos: cd build && node clean-test-db.js y lo ejecutamos desde el Hook before() en el archivo de definiciones de nuestros tests utillizando la funci贸n cy.exec('npm run test:clean'). Tambi茅n se pueden ejecutar comandos de tipo shell o scripts externos, con la funci贸n cy.task(...) de Cypress.

Aportes 7

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

En este video me tard茅 reconfigurando para ejecutar el script:

clean-test-db.js

Ya que no ten铆a compatibilidad con la versi贸n de node 8.11 que estaba corriendo por lo que instale nvm

https://github.com/nvm-sh/nvm#install-script

y ya instalado actualice a la versi贸n 8.16.2:

nvm install 8.16.2

Con estos cambios al querer levantar nuevamente el servidor surg铆a el siguiente error:

sh: run-p: command not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! platzi-posts@1.0.0 test:dev: `npm run build:test && run-p --race test:server cypress:open`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the platzi-posts@1.0.0 test:dev 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!     /Users/user/.npm/_logs/2020-05-03T18_29_56_429Z-debug.log

Por lo que buscando vi que eran problemas de versiones entonces actualic茅 push state server y npm-run-all

npm i pushstate-server -D
npm install npm-run-all -D

de esta manera mi aplicaci贸n y el script se ejecutan sin problemas.

Versiones mayo 2020:

Node 8.16.2
"cypress": 鈥淾4.5.0鈥,
鈥渇irebase-admin鈥: 鈥淾8.11.0鈥,
鈥減ushstate-server鈥: 鈥淾3.1.0鈥,
鈥渘pm-run-all鈥: 鈥淾4.1.5鈥,

Saludos

Ojo con la versi贸n de firebase-admin

A m铆 me funcion贸 la

"firebase-admin": "^8.11.0",

pero no una posterior

https://docs.cypress.io/guides/references/best-practices#Web-Servers

el comando cy.exec() hace parte de un antipatron segun la documentacion de cypress

Al ejecutar me lanza el siguiente error:

[email protected] test:clean /opt/lampp/htdocs/Platzi/Cypress/platzi-posts
cd build && node clean-test-db.js

(node:19968) ExperimentalWarning: The http2 module is an experimental API.
(node:19968) UnhandledPromiseRejectionWarning: Error: @grpc/grpc-js only works on Node ^8.13.0 || >=10.10.0
at Object.<anonymous> (/opt/lampp/htdocs/Platzi/Cypress/platzi-posts/node_modules/@grpc/grpc-js/build/src/index.js:47:11)
at Module._compile (module.js:652:30)
at Object.Module._extensions鈥s (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/opt/lampp/htdocs/Platzi/Cypress/platzi-posts/node_modules/google-gax/build/src/grpc.js:37:14)
at Module._compile (module.js:652:30)
(node:19968) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:19968) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Al correr el comando me muestra este error:
Error listing users: { Error: Error while making request: url.URL is not a constructor. Error code: undefined
at FirebaseAppError.Error (native)
at FirebaseAppError.FirebaseError [as constructor] (C:\Users\Z055744\Desktop\platzi-posts\node_modules\firebase-admin\lib\utils\error.js:39:28)
at FirebaseAppError.PrefixedFirebaseError [as constructor] (C:\Users\Z055744\Desktop\platzi-posts\node_modules\firebase-admin\lib\utils\error.js:85:28)
at new FirebaseAppError (C:\Users\Z055744\Desktop\platzi-posts\node_modules\firebase-admin\lib\utils\error.js:119:28) at C:\Users\Z055744\Desktop\platzi-posts\node_modules\firebase-admin\lib\utils\api-request.js:123:19
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
errorInfo:
{ code: 鈥榓pp/network-error鈥,
message: 鈥楨rror while making request: url.URL is not a constructor. Error code: undefined鈥 },
codePrefix: 鈥榓pp鈥 }

solo se borran las colecciones pero no se borran los usuarios.

Ayuda con este tema muchas gracias!

Cuando agrego la ejecucion del script cy.exec(鈥榥pm run test:clean鈥) al hook before falla por lo siguiente:

CypressError: cy.exec('npm run test:clean') failed because the command exited with a non-zero code.

Pass {failOnNonZeroExit: false} to ignore exit code failures.

Information about the failure:
Code: 243

No se por que mi test no se ejecuta por completo: