Vitest + Playwright + LitElement, el navegador no funciona

Resumen Técnico

Se busca ejecutar pruebas unitarias usando Vitest, pero al utilizar el fixture de @open-wc, no funciona como se esperaba.

El problema

El proyecto utiliza Lit Element con múltiples pruebas unitarias y se está usando Playwright como corredor. Al escribir una prueba, se espera que el fixture de @open-wc monte correctamente el componente en el DOM necesario para las pruebas.

import { expect, fixture, html } from '@open-wc/testing';

describe('MyComponent', async () => {
  it('should exist', async () => {
    const myComponent = /** @type {MyComponent} */ (
      await fixture(html`
        <my-component></my-component>
      `)
    );

    expect(myComponent).to.exist;
  }
})

Se inicializó la configuración de Vitest con npx vitest init browser. Se definió el ambiente como jsdom, habilitando el uso de Playwright como proveedor del navegador. Sin embargo, el cambio de la importación afectó la ejecución de las pruebas.

import { describe, it, expect } from 'vitest';

Las pruebas que no requieren el navegador funcionan correctamente, pero al ejecutar las pruebas que sí lo requieren, se produce un error debido a que no se monta correctamente el componente en el DOM.

Intentos de Solución:

  • Se intentó agregar cargadores similares a la configuración de React, pero no se observaron mejoras.
  • import { litStyleLoader, litTemplateLoader } from '@mordech/vite-lit-loader';
    
    export default defineConfig({
      plugins: [litStyleLoader(), litTemplateLoader()],
    // ...
    
  • Se cambió el entorno a happy-dom, pero tampoco tuvo éxito.

Posible Solución:

Es posible que se necesite verificar si los plugins de Lit están siendo correctamente aplicados en la configuración de Vitest y asegurar que el fixture de @open-wc esté completamente compatible con el entorno y el corredor de Playwright. Además, revisar la implementación de los componentes para asegurar que se están montando correctamente y que todos los recursos necesarios están disponibles en el contexto de prueba.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *