You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**NB** Para conseguir que Cypress funcione con WSL2 se debe realizar una configuración preliminar. Estos dos [enlaces](https://docs.cypress.io/guides/getting-started/installing-cypress#Windows-Subsystem-for-Linux) son buenos lugares para [iniciar](https://nickymeuleman.netlify.app/blog/gui-on-wsl2-cypress).
81
+
80
82
Cuando tanto el backend como el frontend están ejecutándose, podemos iniciar Cypress con el comando
81
83
82
84
```js
83
85
npm run cypress:open
84
86
```
85
87
86
-
Cuando ejecutamos Cypress por primera vez, crea un directorio <i>cypress</i>. Contiene un subdirectorio <i> integration </i>, donde colocaremos nuestras pruebas. Cypress crea un montón de pruebas de ejemplo para nosotros en el directorio <i>integration/examples</i>. Podemos eliminar el directorio <i>examples</i> y hacer nuestra propia prueba en el archivo <i>note\\_app.spec.js</i>:
88
+
Cypress nos pregunta qué tipo de test realizaremos. Debemos elegir "E2E Testing":
89
+
90
+

91
+
92
+
A continuación debemos elegir un navegador (por ejemplo Chrome) y luego debemos hacer click en "Create new spec":
93
+
94
+

95
+
96
+
Creemos el archivo de test <i>cypress/e2e/note\_app.cy.js</i>:
97
+
98
+

99
+
100
+
Podemos editar el test en Cypress, pero usemos en cambio VS Code:
101
+
102
+

103
+
104
+
Ahora podemos cerrar la vista de edición de Cypress.
105
+
106
+
Cambiemos el contenido del test como se muestra a continuación:
87
107
88
108
```js
89
109
describe('Note app', function() {
@@ -298,8 +318,6 @@ La última fila asegura que el inicio de sesión fue exitoso.
298
318
299
319
Tenga en cuenta que el CSS [id-selector](https://developer.mozilla.org/en-US/docs/Web/CSS/ID_selectors) es #, así que si queremos buscar un elemento con el id <i>username</i> el selector de CSS es <i>#username</i>.
300
320
301
-
### Algunas cosas a tener en cuenta
302
-
303
321
La prueba primero hace clic en el botón que abre el formulario de inicio de sesión como
304
322
305
323
```js
@@ -319,40 +337,6 @@ Si buscamos un botón por su texto, [cy.contains](https://docs.cypress.io/api/co
319
337
Esto sucederá incluso si el botón no está visible.
320
338
Para evitar conflictos de nombres, le dimos al botón de enviar la identificación <i>login-button</i> que podemos usar para acceder a él.
321
339
322
-
Ahora notamos que la variable _cy_ que usan nuestras pruebas nos da un desagradable error de Eslint
323
-
324
-

325
-
326
-
Podemos deshacernos de él instalando [eslint-plugin-cypress](https://github.com/cypress-io/eslint-plugin-cypress) como una dependencia de desarrollo
327
-
328
-
```js
329
-
npm install eslint-plugin-cypress --save-dev
330
-
```
331
-
332
-
y cambiando la configuración en <i>.eslintrc.js</i> así:
333
-
334
-
```js
335
-
module.exports= {
336
-
"env": {
337
-
"browser":true,
338
-
"es6":true,
339
-
"jest/globals":true,
340
-
"cypress/globals":true// highlight-line
341
-
},
342
-
"extends": [
343
-
// ...
344
-
],
345
-
"parserOptions": {
346
-
// ...
347
-
},
348
-
"plugins": [
349
-
"react", "jest", "cypress"// highlight-line
350
-
],
351
-
"rules": {
352
-
// ...
353
-
}
354
-
}
355
-
```
356
340
357
341
### Probando un nuevo formulario de nota
358
342
@@ -441,7 +425,7 @@ Si las pruebas necesitan poder modificar la base de datos del servidor, la situa
441
425
Al igual que con las pruebas unitarias y de integración, con las pruebas E2E es mejor vaciar la base de datos y posiblemente formatearla antes de ejecutar las pruebas. El desafío con las pruebas E2E es que no tienen acceso a la base de datos.
442
426
443
427
La solución es crear endpoints de API en el backend para la prueba.
444
-
Creemos un nuevo <i>enrutador</i> para las pruebas
428
+
Creemos un nuevo enrutador para las pruebas dentro de la carpeta <i>controllers</i>, en el archivo <i>testing.js</i>
445
429
446
430
```js
447
431
constrouter=require('express').Router()
@@ -933,13 +917,13 @@ Reemplazemos todas las direcciones del backend en los tests de la siguiente mane
@@ -1116,7 +1100,7 @@ El frontend y los tests/pruebas se pueden encontrar en [github](https://github.c
1116
1100
1117
1101
En los últimos ejercicios de esta parte haremos algunas pruebas E2E para nuestra aplicación de blog.
1118
1102
El material de esta parte debería ser suficiente para completar los ejercicios.
1119
-
Absolutamente también debería consultar la [documentación](https://docs.cypress.io/guides/overview/why-cypress.html#In-a-nutshell) de Cypress (https://docs.cypress.io/guides/overview/why-cypress.html#In-a-nutshell). Probablemente sea la mejor documentación que he visto para un proyecto de código abierto.
1103
+
También debería consultar la [documentación](https://docs.cypress.io/guides/overview/why-cypress.html#In-a-nutshell) de Cypress. Probablemente sea la mejor documentación que he visto para un proyecto de código abierto.
1120
1104
1121
1105
Recomiendo especialmente leer [Introducción a Cypress](https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html#Cypress-Can-Be-Simple-Sometimes), que afirma que
El blog de formateo <i>beforeEach</i> debe vaciar la base de datos utilizando, por ejemplo, el método que usamos en el [material](/es/part5/end_to_end_testing#controlando-el-estado-de-la-base-de-datos).
1129
+
El blog de formateo <i>beforeEach</i> debe vaciar la base de datos utilizando, por ejemplo, el método que usamos en el [material](/es/part5/pruebas_de_extremo_a_extremo#controlar-el-estado-de-la-base-de-datos).
1146
1130
1147
1131
#### 5.18: prueba de extremo a extremo de la lista de blogs, paso 2
1148
1132
@@ -1208,15 +1192,24 @@ Hacer una prueba que compruebe que al usuario le puede gustar ("like") un blog.
1208
1192
#### 5.21: prueba de extremo a extremo de la lista de blogs, paso 5
1209
1193
1210
1194
Realice una prueba para asegurarse de que el usuario que creó un blog pueda eliminarlo.
1195
+
1196
+
#### 5.22: prueba de extremo a extremo de la lista de blogs , paso 6
1211
1197
1212
-
<i>Ejercicio adicional opcional:</i> también verifique que otros usuarios no puedan eliminar el blog.
1198
+
Realice una prueba para asegurarse de que otros usuarios no puedan eliminar el blog.
1213
1199
1214
-
#### 5.22: prueba de extremo a extremo de la lista de blogs , paso 6
1200
+
#### 5.23: prueba de extremo a extremo de la lista de blogs , paso 7
1215
1201
1216
1202
Realice una prueba que verifique que los blogs estén ordenados de acuerdo con los likes con el blog con más likes en primer lugar.
1217
1203
1218
-
Este ejercicio puede ser un poco más complicado. Una solución es encontrar todos los blogs y luego compararlos en la función de devolución de llamada de un comando [then](https://docs.cypress.io/api/commands/then.html#DOM-element).
1204
+
<i>Este ejercicio puede ser un poco más complicado que los anteriores</i>. Una posible solución es adicionar cierta clase para el elemento que cubre el contenido del blog y luego usar el método [eq](https://docs.cypress.io/api/commands/eq#Syntax) para obtener el elemento en un índice específico:
1205
+
1206
+
```js
1207
+
cy.get('.blog').eq(0).should('contain', 'The title with the most likes')
1208
+
cy.get('.blog').eq(1).should('contain', 'The title with the second most likes')
1209
+
```
1210
+
1211
+
Tenga en cuenta que podría terminar teniendo problemas si hace clic en el botón "Like" muchas veces seguidas. Puede ser que Cypress haga clic tan rápido que no tenga tiempo de actualizar el estado de la aplicación entre los clics. Una solución para esto es esperar a que se actualice la cantidad de Likes entre todos los clics.
1219
1212
1220
-
Este fue el último ejercicio de esta parte, y es hora de enviar su código a github y marcar los ejercicios que completó en el [sistema de envío de ejercicios](https://studies.cs.helsinki.fi/stats/courses/fullstackopen).
1213
+
Este fue el último ejercicio de esta parte, y es hora de enviar su código a github y marcar los ejercicios que completó en el [sistema de envío de ejercicios](https://studies.cs.helsinki.fi/stats/courses/fullstackopen).
0 commit comments