Saltar al contenido

Testing

Las pruebas te ayudan a escribir y mantener código de Astro que funciona. Astro soporta muchas herramientas populares para pruebas unitarias, pruebas de componentes, y pruebas end-to-end incluyendo Jest, Mocha, Jasmine, Cypress y Playwright. Incluso puedes instalar librerías de testing específicas de framework como React Testing Library para probar tus componentes de UI framework.

Los frameworks de testing te permiten declarar assertions o expectations sobre cómo tu código debería comportarse en situaciones específicas, luego compararlas con el comportamiento actual de tu código.

Un framework de pruebas unitarias nativo de Vite con soporte ESM, TypeScript y JSX impulsado por esbuild.

Usa el helper getViteConfig() de Astro en tu archivo de configuración vitest.config.ts para configurar Vitest con los ajustes de tu proyecto de Astro:

vitest.config.ts
/// <reference types="vitest/config" />
import { getViteConfig } from 'astro/config';
export default getViteConfig({
test: {
// Vitest configuration options
},
});

Por defecto, getViteConfig() intentará cargar un archivo de configuración de Astro en tu proyecto y aplicarlo al entorno de pruebas. A partir de Astro 4.8, si necesitas personalizar la configuración de Astro aplicada en tus pruebas, pasa un segundo argumento a getViteConfig():

export default getViteConfig(
{ test: { /* Vitest configuration options */ } },
{
site: 'https://example.com/',
trailingSlash: 'always',
},
);

Consulta la plantilla de inicio de Astro + Vitest en GitHub.

Añadido en: astro@4.9.0

Puedes probar componentes de Astro nativamente usando la container API. Primero, configura vitest como se explicó arriba, luego crea un archivo .test.js para probar tu componente:

example.test.js
import { experimental_AstroContainer as AstroContainer } from 'astro/container';
import { expect, test } from 'vitest';
import Card from '../src/components/Card.astro';
test('Card with slots', async () => {
const container = await AstroContainer.create();
const result = await container.renderToString(Card, {
slots: {
default: 'Card content',
},
});
expect(result).toContain('This is a card');
expect(result).toContain('Card content');
});

Playwright es un framework de testing end-to-end para aplicaciones web modernas. Usa la API de Playwright en JavaScript o TypeScript para probar tu código de Astro en todos los motores de renderizado modernos incluyendo Chromium, WebKit, y Firefox.

Puedes empezar y ejecutar tus pruebas usando la extensión de VS Code.

Alternativamente, puedes instalar Playwright dentro de tu proyecto de Astro usando el gestor de paquetes de tu elección. Sigue los pasos del CLI para elegir JavaScript/TypeScript, nombrar tu carpeta de pruebas, y añadir un workflow opcional de GitHub Actions.

Ventana de la terminal
npm init playwright@latest
  1. Elige una página para probar. Este ejemplo probará la página de ejemplo index.astro a continuación.

    src/pages/index.astro
    ---
    ---
    <html lang="en">
    <head>
    <title>Astro is awesome!</title>
    <meta name="description" content="Pull content from anywhere and serve it fast with Astro's next-gen islands architecture." />
    </head>
    <body></body>
    </html>
  2. Crea una nueva carpeta y añade el siguiente archivo de prueba en src/test. Copia y pega la siguiente prueba en el archivo para verificar que la información meta de la página es correcta. Actualiza el valor del <title> de la página para que coincida con la página que estás probando.

    src/test/index.spec.ts
    import { test, expect } from '@playwright/test';
    test('meta is correct', async ({ page }) => {
    await page.goto("http://localhost:4321/");
    await expect(page).toHaveTitle('Astro is awesome!');
    });

Puedes ejecutar una sola prueba o varias pruebas a la vez, probando uno o múltiples navegadores. Por defecto, tus resultados de prueba se mostrarán en la terminal. Opcionalmente, puedes abrir el HTML Test Reporter para mostrar un reporte completo y filtrar los resultados de las pruebas.

  1. Para ejecutar nuestra prueba del ejemplo anterior usando la línea de comandos, usa el comando test. Opcionalmente, incluye el nombre del archivo para ejecutar solo esa prueba:

    Ventana de la terminal
    npx playwright test index.spec.ts
  2. Para ver el HTML Test Report completo, ábrelo usando el siguiente comando:

    Ventana de la terminal
    npx playwright show-report
Avanzado: Lanzar un servidor web de desarrollo durante las pruebas
Sección titulada “Avanzado: Lanzar un servidor web de desarrollo durante las pruebas”

También puedes hacer que Playwright inicie tu servidor cuando ejecutas tu script de pruebas usando la opción webServer en el archivo de configuración de Playwright.

Aquí hay un ejemplo de la configuración y comandos necesarios al usar npm:

  1. Añade un script de prueba a tu archivo package.json en la raíz del proyecto, como "test:e2e": "playwright test".

  2. En playwright.config.ts, añade el objeto webServer y actualiza el valor del comando a npm run preview.

    playwright.config.ts
    import { defineConfig } from '@playwright/test';
    export default defineConfig({
    webServer: {
    command: 'npm run preview',
    url: 'http://localhost:4321/',
    timeout: 120 * 1000,
    reuseExistingServer: !process.env.CI,
    },
    use: {
    baseURL: 'http://localhost:4321/',
    },
    });
  3. Ejecuta npm run build, luego ejecuta npm run test:e2e para ejecutar las pruebas de Playwright.

Más información sobre Playwright se puede encontrar en los siguientes enlaces:

Cypress es una herramienta de testing front-end construida para la web moderna. Cypress te permite escribir pruebas end-to-end para tu sitio de Astro.

Puedes instalar Cypress usando el gestor de paquetes de tu elección. Esto instalará Cypress localmente como una dependencia de desarrollo para tu proyecto.

Ventana de la terminal
npm install cypress --save-dev

En la raíz de tu proyecto, crea un archivo cypress.config.js con el siguiente contenido:

cypress.config.js
import { defineConfig } from 'cypress'
export default defineConfig({
e2e: {
supportFile: false
}
})
  1. Elige una página para probar. Este ejemplo probará la página de ejemplo index.astro a continuación.

    src/pages/index.astro
    ---
    ---
    <html lang="en">
    <head>
    <title>Astro is awesome!</title>
    <meta name="description" content="Pull content from anywhere and serve it fast with Astro's next-gen islands architecture." />
    </head>
    <body>
    <h1>Hello world from Astro</h1>
    </body>
    </html>
  2. Crea un archivo index.cy.js en la carpeta cypress/e2e. Usa la siguiente prueba en el archivo para verificar que el título de la página y el encabezado son correctos.

    cypress/e2e/index.cy.js
    it('titles are correct', () => {
    const page = cy.visit('http://localhost:4321');
    page.get('title').should('have.text', 'Astro is awesome!')
    page.get('h1').should('have.text', 'Hello world from Astro');
    });

Cypress se puede ejecutar desde la línea de comandos o desde la Cypress App. La App proporciona una interfaz visual para ejecutar y depurar tus pruebas.

Primero, inicia el dev server para que Cypress pueda acceder a tu sitio en vivo.

Para ejecutar nuestra prueba del ejemplo anterior usando la línea de comandos, ejecuta el siguiente comando:

Ventana de la terminal
npx cypress run

Alternativamente, para ejecutar la prueba usando la Cypress App, ejecuta el siguiente comando:

Ventana de la terminal
npx cypress open

Una vez que la Cypress App se inicie, elige E2E Testing, luego selecciona el navegador a usar para ejecutar las pruebas.

Una vez que la ejecución de la prueba termine, deberías ver marcas de verificación verdes en la salida confirmando que tu prueba pasó:

Salida de npx cypress run
Running: index.cy.js (1 of 1)
titles are correct (107ms)
1 passing (1s)

Más información sobre Cypress se puede encontrar en los siguientes enlaces:

Nightwatch.js es un framework de automatización de pruebas con un conjunto poderoso de herramientas para escribir, ejecutar, y depurar tus pruebas en la web con soporte integrado para todos los navegadores principales y sus equivalentes móviles, así como aplicaciones móviles nativas.

Puedes instalar NightwatchJS dentro de tu proyecto de Astro usando el gestor de paquetes de tu elección. Sigue los pasos del CLI para elegir JavaScript/TypeScript, nombrar tu carpeta de pruebas, y seleccionar si incluir o no pruebas de componentes y pruebas en navegadores móviles.

Ventana de la terminal
npm init nightwatch@latest
  1. Elige una página para probar. Este ejemplo probará la página de ejemplo index.astro a continuación.

    src/pages/index.astro
    ---
    ---
    <html lang="en">
    <head>
    <title>Astro is awesome!</title>
    <meta name="description" content="Pull content from anywhere and serve it fast with Astro's next-gen islands architecture." />
    </head>
    <body></body>
    </html>
  2. Crea una nueva carpeta src/test/ y añade el siguiente archivo de prueba:

    src/test/index.js
    describe('Astro testing with Nightwatch', function () {
    before(browser => browser.navigateTo('http://localhost:4321/'));
    it("check that the title is correct", function (browser) {
    browser.assert.titleEquals('Astro is awesome!')
    });
    after(browser => browser.end());
    });

Puedes ejecutar una sola prueba o varias pruebas a la vez, probando uno o múltiples navegadores. Por defecto, tus resultados de prueba se mostrarán en la terminal. Opcionalmente, puedes abrir el HTML Test Reporter para mostrar un reporte completo y filtrar los resultados de las pruebas.

Puedes ejecutar las pruebas con la extensión VSCode de NightwatchJS o usando los pasos del CLI a continuación:

  1. Para ejecutar todas las pruebas, ingresa el siguiente comando en la terminal. Opcionalmente, incluye el nombre del archivo para ejecutar solo una prueba:

    Ventana de la terminal
    npx nightwatch test/index.js

    Adicionalmente, puedes ejecutar las pruebas contra un navegador específico usando el argumento del CLI --environment o -e. Si no tienes el navegador relevante instalado, Nightwatch intentará configurarlo para ti usando Selenium Manager:

    Ventana de la terminal
    npx nightwatch test/index.ts -e firefox
  2. Para ver el HTML Test Report completo, ábrelo usando el siguiente comando:

    Ventana de la terminal
    npx nightwatch test/index.ts --open

Más información sobre NightwatchJS se puede encontrar en los siguientes enlaces:

Contribuir Comunidad Patrocinar