Skip to content

Commit 1ff6f38

Browse files
authored
Merge pull request #2826 from vlondonoma/patch-17
[ES] Update part5d.md
2 parents 72d2823 + 1e9d7d8 commit 1ff6f38

File tree

1 file changed

+43
-50
lines changed

1 file changed

+43
-50
lines changed

src/content/5/es/part5d.md

Lines changed: 43 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -63,27 +63,47 @@ Agreguemos un script npm al <i>backend </i> que lo inicia en modo de prueba, o p
6363
{
6464
// ...
6565
"scripts": {
66-
"start": "cross-env NODE_ENV=production node index.js",
67-
"dev": "cross-env NODE_ENV=development nodemon index.js",
66+
"start": "NODE_ENV=production node index.js",
67+
"dev": "NODE_ENV=development nodemon index.js",
6868
"build:ui": "rm -rf build && cd ../../../2/luento/notes && npm run build && cp -r build ../../../3/luento/notes-backend",
6969
"deploy": "git push heroku master",
7070
"deploy:full": "npm run build:ui && git add . && git commit -m uibuild && git push && npm run deploy",
7171
"logs:prod": "heroku logs --tail",
7272
"lint": "eslint .",
73-
"test": "cross-env NODE_ENV=test jest --verbose --runInBand",
74-
"start:test": "cross-env NODE_ENV=test node index.js" // highlight-line
73+
"test": "NODE_ENV=test jest --verbose --runInBand",
74+
"start:test": "NODE_ENV=test node index.js" // highlight-line
7575
},
7676
// ...
7777
}
7878
```
7979

80+
**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+
8082
Cuando tanto el backend como el frontend están ejecutándose, podemos iniciar Cypress con el comando
8183

8284
```js
8385
npm run cypress:open
8486
```
8587

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+
![cypress arrow towards e2e testing option](../../images/5/51new.png)
91+
92+
A continuación debemos elegir un navegador (por ejemplo Chrome) y luego debemos hacer click en "Create new spec":
93+
94+
![create new spec with arrow pointing towards it](../../images/5/52new.png)
95+
96+
Creemos el archivo de test <i>cypress/e2e/note\_app.cy.js</i>:
97+
98+
![cypress with path cypress/e2e/note_app.cy.js](../../images/5/53new.png)
99+
100+
Podemos editar el test en Cypress, pero usemos en cambio VS Code:
101+
102+
![vscode showing edits of test and cypress showing spec added](../../images/5/54new.png)
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:
87107

88108
```js
89109
describe('Note app', function() {
@@ -298,8 +318,6 @@ La última fila asegura que el inicio de sesión fue exitoso.
298318

299319
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>.
300320

301-
### Algunas cosas a tener en cuenta
302-
303321
La prueba primero hace clic en el botón que abre el formulario de inicio de sesión como
304322

305323
```js
@@ -319,40 +337,6 @@ Si buscamos un botón por su texto, [cy.contains](https://docs.cypress.io/api/co
319337
Esto sucederá incluso si el botón no está visible.
320338
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.
321339

322-
Ahora notamos que la variable _cy_ que usan nuestras pruebas nos da un desagradable error de Eslint
323-
324-
![](../../images/5/30ea.png)
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-
```
356340

357341
### Probando un nuevo formulario de nota
358342

@@ -441,7 +425,7 @@ Si las pruebas necesitan poder modificar la base de datos del servidor, la situa
441425
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.
442426

443427
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>
445429

446430
```js
447431
const router = require('express').Router()
@@ -933,13 +917,13 @@ Reemplazemos todas las direcciones del backend en los tests de la siguiente mane
933917
describe('Note ', function() {
934918
beforeEach(function() {
935919
cy.visit('')
936-
cy.request('POST', `${Cypress.env('EXTERNAL_API')}/testing/reset`) // highlight-line
920+
cy.request('POST', `${Cypress.env('BACKEND')}/testing/reset`) // highlight-line
937921
const user = {
938922
name: 'Matti Luukkainen',
939923
username: 'mluukkai',
940924
password: 'secret'
941925
}
942-
cy.request('POST', `${Cypress.env('EXTERNAL_API')}/users`, user) // highlight-line
926+
cy.request('POST', `${Cypress.env('BACKEND')}/users`, user) // highlight-line
943927
})
944928
// ...
945929
})
@@ -1116,7 +1100,7 @@ El frontend y los tests/pruebas se pueden encontrar en [github](https://github.c
11161100
11171101
En los últimos ejercicios de esta parte haremos algunas pruebas E2E para nuestra aplicación de blog.
11181102
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.
11201104
11211105
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
11221106
@@ -1142,7 +1126,7 @@ describe('Blog app', function() {
11421126
})
11431127
```
11441128
1145-
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).
11461130
11471131
#### 5.18: prueba de extremo a extremo de la lista de blogs, paso 2
11481132
@@ -1208,15 +1192,24 @@ Hacer una prueba que compruebe que al usuario le puede gustar ("like") un blog.
12081192
#### 5.21: prueba de extremo a extremo de la lista de blogs, paso 5
12091193
12101194
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
12111197
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.
12131199
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
12151201
12161202
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.
12171203
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.
12191212
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).
12211214
12221215
</div>

0 commit comments

Comments
 (0)