Skip to content

Repository files navigation

Reproducción del caso — botón "Actualizar" / cooldown de 30s

Este proyecto es una implementación de referencia mínima del SDK @wave-telecom/render-block-sdk, armada para reproducir, con el flow real del cliente, el comportamiento reportado: el botón "Actualizar" a veces no respeta el cooldown de 30 segundos, y en la consola del navegador aparece un warning del tipo:

[Violation] 'setTimeout' handler took Nms

No contiene lógica adicional: solo el setup estándar del SDK (initialize() + RenderBlocksProvider + RendererScreen) apuntando al flow configurado.

Entorno usado (igual al reportado por el cliente)

Node.js 18 (fijado en .nvmrc / package.json#engines, 18.20.8 LTS)
Vite 6.4.3
React 18
@wave-telecom/render-block-sdk ^1.0.3

Setup

nvm install    # usa la versión fijada en .nvmrc (Node 18)
nvm use

cp .env.example .env
# completar VITE_WAVE_ACCESS_TOKEN, VITE_WAVE_EXTERNAL_CODE y
# VITE_WAVE_FLOW_ID (o VITE_WAVE_COMPONENT_ID) con los datos del flow

npm install
npm run dev

El .env no debe compartirse ni commitearse (ya está en .gitignore); cada quien lo completa con sus propias credenciales.

Test automatizado (Playwright)

El escenario descrito abajo (Prueba realizada) está además automatizado en e2e/cooldown.spec.ts con Playwright. El test:

  1. Carga la pantalla real del flow y espera a que se muestren el timestamp ("Información al...") y el botón "Actualizar".
  2. Dispara un burst de 7 clics consecutivos (intervalo de 400ms) y verifica que, de todo el burst, solo el primer clic haya generado una request real de refresh (los otros 6 deben quedar bloqueados por el cooldown.)
  3. Espera a que pasen los 30s del cooldown y hace un segundo clic real, verificando que esta vez sí dispara la request y que la respuesta es OK.
  4. Durante toda la ejecución monitorea la consola del navegador y hace fallar el test si aparece algún [Violation] 'setTimeout' handler took Nms, algún error de página, o alguna request fallida.

Cómo ejecutarlo

Requiere el .env ya configurado (ver sección Setup) y las dependencias instaladas.

npx playwright install chromium   # solo la primera vez, instala el navegador
npm run playwright                # corre el test en modo headless
npm run playwright:ui             # corre el test en modo UI (interactivo, para debug)

El test levanta automáticamente el servidor de dev (npm run dev) contra http://localhost:5173 (configurado en playwright.config.ts), así que no hace falta tenerlo corriendo antes (si ya está corriendo, lo reutiliza.)

El test tiene un timeout de 90s (porque espera los 30s reales del cooldown). Si falla, Playwright genera trace y screenshot (retain-on-failure / only-on-failure) que quedan en test-results/ para inspeccionar.

Prueba realizada

Con el flow real del cliente cargado (misma pantalla de consumo ) se ejecutó, en Node 18:

  1. Clics repetidos en "Actualizar" — 6 clics consecutivos en menos de 3 segundos. El timestamp ("Información al ... h") no se actualizó en ninguno de los 6 clics: el cooldown bloqueó correctamente todos los reintentos.
  2. Clic después de pasado el cooldown (31s de espera) — el timestamp sí se actualizó, confirmando que el botón funciona normalmente cuando el cooldown ya expiró.
  3. Consola del navegador monitoreada durante toda la prueba — ningún error, ninguna request fallida, y ningún [Violation] 'setTimeout' handler took Nms'.

Resultado

Con la misma versión de Node (18), Vite 6.4.3 + React 18 + render-block-sdk 1.0.3, y el flow real, el problema no se reprodujo: el cooldown de 30s se respetó en todos los intentos y no apareció el warning de setTimeout en consola.

Esto sugiere que la causa está en algo específico del entorno o de la integración del lado del cliente (versión de Node distinta a la declarada, alguna dependencia con versión diferente, código adicional alrededor del SDK, extensión del navegador, etc.), y no en el SDK en sí. Quedamos a disposición para comparar configuraciones (package.json, versión exacta de Node en producción, código alrededor del initialize()) y ayudar a encontrar la diferencia.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages