Esta semana me sumergí en las pruebas automatizadas con Transportador.Dado que la construcción de una sucursal falla mucho últimamente con tiempos de espera y otros problemas, voy a tratar de averiguar más y arreglar esto.

¿Qué es la prueba automatizada.

Las pruebas automatizadas facilitan la vida una vez que se configuran correctamente y son útiles :)Las pruebas automatizadas utilizan software/herramientas para probar el código rápidamente. Usted configura los casos de prueba y se ejecutan a través de las herramientas. No se requiere interacción humana para probar después de que escribiste esos casos. Puede comparar, ejecutar un ingreso de datos a través de las pruebas.

Las pruebas más comunes y sus diferencias.

Los dos métodos de prueba más comunes con los que me encontré hasta ahora son las pruebas unitarias y las pruebas E2E.

Pruebas unitarias

Las pruebas unitarias se centran en probar unidades individuales.Piense en esto como una función o una pequeña parte de código.Se burla de los servicios (falsos), la red y otros recursos y realiza todas las pruebas de forma aislada.
En Angular Karma y Jasmine framework se utilizan principalmente pruebas unitarias de escritura.

Pruebas E2E

Con las pruebas e2e puede pasar por la interfaz gráfica de usuario como lo hace un usuario.Clic en botones, páginas, menús, CRUD. (no en producción)
El uso más común para pruebas E2E con Angular es el controlador web de Selenio con transportador.
Por lo tanto, para probar su código, es útil usar pruebas unitarias.Si desea probar el uso funcional de su sitio, debe probar E2E.

¿Por qué probar?

El propósito es encontrar problemas rápidamente.Para pruebas E2E: Tampoco desea probar haciendo clic en las pantallas para ver que el botón ifa aún funciona o que una página se carga por sí mismo.Eso sería mucho trabajo y no es consistente si lo hicieran diferentes desarrolladores.

Configuración del Transportador.

Cómo instalar el transportador.

Para instalar protractor, ejecute lo siguiente desde la línea de comandos:
Instala protractor ejecutando:

npm install -g protractor

Luego instala webdriver manager para selenium.

webdriver-manager update

webdriver-manager start

Construir una prueba.

Primero necesita dos archivos para crear una prueba, un archivo de especificaciones y un archivo de configuración.
En el archivo de configuración se configura la ubicación de los archivos de especificaciones. También contiene el navegador que desea usar para probar, el predeterminado es Chrome.La dirección del servidor selenium está incluida para comunicarse.Y también el marco está establecido, esto es Jazmín.Entonces se ve algo como esto:

 // conf.jsexports.config = { framework: 'jasmine', seleniumAddress: 'http://localhost:4444/wd/hub', specs: }

Para construir una prueba, debe determinar un caso. Construyes el caso en el archivo de especificaciones. En primer lugar, usted determina lo que debe hacer la prueba do.In en este caso, comprueba si tu landing page muestra el mensaje de bienvenida.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message', () => { expect(page.containsElement('#welcome')).toBeTruthy() expect(page.getElementText('#welcome')).toEqual('Welcome') })})

Primero describa la página o elemento que desea probar, en este ejemplo es la página de destino. Describe es el nombre de la sintaxis testsuite y Jasmine.Contiene el flujo de extremo a extremo. Dentro de esto están las pruebas de’ it’.
Luego determinas qué ‘necesita’ hacer. «Eso» es una función global de Jasmine. Puede tener múltiples casos de prueba’ it ‘ en el flujo.(describir)
En este caso, verifique si la página de destino recibió el mensaje de bienvenida y, por lo tanto, está disponible como se esperaba. (true, toBeThruthy) También comprueba si el texto es el mismo que el texto de la página de destino ( toEqual(‘yourText’)

Async Await.

JavaScript es asíncrono, no sabes qué script se va a ejecutar primero. Los flujos de transportador son sincrónicos, sus pasos están en un orden de ejecución específico. Haz clic en este y luego en ese botón.
Los flujos de transportador se escriben con una promesa. El transportador puede manejar la promesa con una espera hasta que se complete.

La sintaxis de async await es muy parecida a la sintaxis de TypeScript.
La función asíncrona se puede envolver con ‘async’ y ‘await’.
Await se usa antes de la línea que queremos esperar.

 describe('Landing page', () => {let page: YourAppbeforeEach(() => { page = new YourApp() page.navigateTo('/login') }) it('should display welcome message',async () => { expect(await page.containsElement('#welcome')).toBeTruthy() expect(await page.getElementText('#welcome')).toEqual('Welcome') })})

¿Cuál fue el principal problema con mis compilaciones?

Mis pruebas fallaron mucho con los tiempos de espera. Utilicé async await y todavía tenía algunos problemas. Como puede ver, la sintaxis es casi la misma con TypeScript async / await.

Encontré esto en el protractortest.org sitio.

No olvides desactivar control_flow, no puedes usar una mezcla de async / await y el flujo de control: async / await hace que el flujo de control se vuelva poco fiable (consulta el problema de github). Así que si asincronas / esperas en cualquier parte de una especificación, deberías usar SELENIUM_PROMISE_MANAGER: false

Agregué esto a la configuración y depuré los errores sobrantes.Construyo un poco de tiempo de espera / sueño entre algunas pruebas y funciona bien.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.