Guía de test de API IDEE - Desarrollos-IDEE/API-IDEE GitHub Wiki

La API-IDEE utiliza playwright para hacer las pruebas de la herramienta.

Ejemplo de test en playwright:

// Ejemplo en OL
import { test, expect } from '@playwright/test';

test('Click attributions', async ({ page }) => {
  await page.goto('/test/playwright/ol/basic-ol.html');
  let mapjs;
  await page.evaluate(() => {
    mapjs = IDEE.map({
      container: 'map',
      controls: ['attributions'],
    });
  });
  await page.waitForFunction(() => mapjs.isFinished());
  const attributions = await page.locator('.m-attributions').first();
  await expect(attributions).toHaveClass(/collapsed/);
  await attributions.getByRole('button', { name: 'Plugin attributions' }).click();
  await page.waitForTimeout(1000);
  await expect(attributions).toHaveClass(/opened/);
  await attributions.getByRole('button', { name: 'Plugin attributions' }).click();
  await page.waitForTimeout(1000);
  await expect(attributions).toHaveClass(/collapsed/);
});

Estructura

En el Core como en los plugins, en la carpeta test, tendrá que contener una carpeta llamada playwright que contendrán los test.

Dependiendo de la implementación, se crean dos carpetas:

  • cesium: Test de playwright para la implementación de Cesium.
  • ol: Test de playwright para la implementación de Openlayers.
test/
├── development/
├── playwright/
    ├── cesium
    ├── ol
├── production/
└── configuration_filtered.js

En la carpeta cesium y ol se encuentra un html básico que se utilizará como base para los test.

Ejecución de Test en el CORE (API-IDEE-JS)

Configuración

Será necesario ejecutar npx -y [email protected] install para instalar playwright en la máquina.

Para configurar los test de Playwright la API-IDEE proporciona dos archivos de configuración, uno por cada implementación. Estos archivos se encuentran en la carpeta playwright-config,playwright-cesium.config.js y playwright-ol.config.js.

La configuración se utilizará en el package.json para la ejecución de los test:

  • "test:playwright-ol": "playwright test --config=./playwright-config/playwright-ol.config.js"
  • "test:playwright-cesium": "playwright test --config=./playwright-config/playwright-cesium.config.js"
  • "test:all": "npm run test:playwright-ol; npm run test:playwright-cesium"

Ejecución

Para ejecutar las pruebas en local, se tiene que tener compilada la herramienta. Ejecutar el comando npm run build para generar la carpeta "dist".

En el package.json contiene 3 scripts para la ejecución de los test.

  • npm run test:playwright-ol: Ejecuta los test de Openlayers.
  • npm run test:playwright-cesium: Ejecuta los test de Cesium.
  • npm run test:all: Ejecuta todos los test (ol y cesium).

Cada test se ejecutará en 3 navegadores distintos: Chrome, Firefox y Webkit.

El puerto donde se levantarán los test será el 8081, este puerto debe estar libre en la máquina donde se ejecuten.

Ejecución de Test en los plugins

Configuración

Al igual que en el CORE los plugins contarán con una carpeta playwright-config para la configuración.

El package.json contará con los 3 (test:playwright-ol, test:playwright-cesium y test:all)script necesarios para lanzar los test.

Ejecución

  • npm run test:playwright-ol: Ejecuta los test de Openlayers.
  • npm run test:playwright-cesium: Ejecuta los test de Cesium.
  • npm run test:all: Ejecuta todos los test (ol y cesium).

Cada test se ejecutará en 3 navegadores distintos: Chrome, Firefox y Webkit.

El puerto donde se levantarán los test será el 8081, este puerto debe estar libre en la máquina donde se ejecuten.

Ejecución de Test en los plugins externos

Para los plugins que no se encuentran dentro de api-idee-js (externos) deberán:

  • Instalar la librería playwright: npm i -D @playwright/[email protected]
  • Crear archivo webpack.playwright.config.js con el mismo contenido que el del propio CORE
  • Crear carpeta playwright-config con archivos playwright-cesium.config.js y playwright-ol.config.js con el mismo contenido que el del propio CORE
  • Crear el html apuntando al dist del plugin (necesario npm run build)
  • En el test apuntar a page.goto('/test/playwright/ol/help-ol.html')
  • Crear scripts en el package.json
    • "test:playwright-ol": "playwright test --config=./playwright-config/playwright-ol.config.js",
    • "test:playwright-cesium": "playwright test --config=./playwright-config/playwright-cesium.config.js"
    • "test:all": "npm run test:playwright-ol",