Capturas pixel-estables
Renderizado determinista con espera a la carga de tipografías, animaciones fijadas y enmascaramiento de contenido dinámico: los diffs reflejan regresiones reales, no ruido.
ScanU es una plataforma de pruebas de regresión visual y capturas cross-browser pensada para equipos web profesionales. Captura renders al píxel de cada página que importa, en los navegadores y resoluciones que sus usuarios usan de verdad, y saca a la luz los cambios de layout que las pruebas unitarias y end-to-end dejan pasar en silencio.
Qué es ScanU
ScanU convierte la última milla de la calidad de entrega — justo lo que sus usuarios ven — en una señal sobre la que su equipo puede actuar. La plataforma toma capturas pixel-estables de las páginas que usted designa, fija una baseline explícita, y cada ejecución posterior se compara contra esa baseline en los navegadores y dispositivos que importan.
La mayoría de los equipos ya ejecutan linters, comprobaciones de tipos, pruebas unitarias y flujos end-to-end. Todo eso puede permanecer en verde mientras un botón se desplaza doce píxeles, una modal pierde su padding, un menú se rompe en Safari o un breakpoint móvil reflúja el hero en silencio. Las pruebas funcionales verifican el comportamiento; no verifican qué aspecto tiene la página. Para eso sirve una herramienta de screenshot testing, y eso es lo que ScanU hace — sin ceremonias.
Bajo el capó, ScanU dirige motores de renderizado reales — Chromium, Gecko y WebKit — contra las URL o las previsualizaciones de componentes que usted indique. Cada ejecución produce una captura determinista para cada par (navegador, viewport) configurado. La primera ejecución aceptada se convierte en la baseline. A partir de ahí, cada pull request, cada despliegue, cada revisión programada es un diff contra esa baseline: cualquier regresión visual se expone como un cambio revisable, igual que una code review destaca una línea modificada.
El pipeline de comparación completo se encarga de los detalles que hacen que el diffing de capturas sea de verdad útil en un flujo de producción: tolerancia al anti-aliasing, estabilización de animaciones, carga de tipografías, enmascaramiento de contenido dinámico, captura con scroll y umbrales perceptuales de diff — para que un ajuste sub-pixel de hinting no ahogue una regresión de layout real.
ScanU está construido para equipos que tratan la UI como un contrato con sus usuarios. Es una herramienta de pruebas de regresión visual, una herramienta de comparación de capturas cross-browser y una superficie de revisión de diffs — en una sola plataforma — entre su build y su release gate.
Renderizado determinista con espera a la carga de tipografías, animaciones fijadas y enmascaramiento de contenido dinámico: los diffs reflejan regresiones reales, no ruido.
Chromium, Gecko y WebKit ejecutados en paralelo, en las resoluciones de escritorio, tableta y móvil que sus usuarios usan de verdad.
Baseline, captura actual y diff resaltado uno al lado del otro. Aceptar, rechazar o actualizar la baseline: siempre con una acción explícita, nunca en silencio.
Funciona en su pipeline existente. Status checks, comentarios de pull request y enlaces a artefactos aparecen donde sus ingenieros ya revisan el código.
Apunte ScanU a Storybook, a un sandbox de componentes o a URLs en vivo. Cambios de tokens y refactorizaciones de componentes reciben una auditoría visual honesta antes del despliegue.
Capturas y metadatos almacenados en infraestructura europea, con tratamiento de datos conforme al RGPD — adecuado para equipos con requisitos estrictos de residencia de datos.
Por qué importa
El coste de un bug visual rara vez se mide en tiempo de desarrollo. Se mide en la confianza de un usuario que abre su producto, ve algo sutilmente mal y decide en silencio que este equipo no cuida los detalles. Esa confianza es difícil de reconstruir y casi siempre es más barato prevenir el bug.
Las pruebas funcionales responden bien a una pregunta: «¿hace el botón lo correcto cuando se pulsa?». Son mudas sobre todo lo que ocurre antes del clic — si el botón tiene el color adecuado, el tamaño adecuado, la posición adecuada, si sigue siendo legible en una pantalla de 360 píxeles o si es siquiera visible tras la última refactorización CSS. Es en ese hueco donde viven la mayor parte de los incidentes del día de lanzamiento.
Las regresiones reales que vemos, y para atrapar las cuales ScanU está diseñado, se agrupan en torno a un puñado de desencadenantes predecibles:
gap de un contenedor flex en un único breakpoint. En escritorio el layout parece idéntico; en una tableta de 768 píxeles, dos tarjetas se solapan.Ninguno de esos cambios hace fallar una aserción. Todos rompen la experiencia de un usuario. El trabajo de ScanU es hacer que este segundo tipo de fallo sea tan fácil de ver, revisar y bloquear como una prueba unitaria en rojo. Cuando el diff aparece en la pull request, una diseñadora puede opinar igual que un reviewer opina sobre una firma de función — antes de mergear, no después de que llegue a producción.
Ese cambio — pasar de «esperemos que alguien lo note en staging» a «revisemos un cambio visual como revisamos un cambio de código» — es el valor central de una herramienta de regresión visual en una pipeline de entrega moderna.
Pruebas cross-browser
El cross-browser testing no es un impuesto de nostalgia heredado de IE6. Los motores modernos — Chromium, Gecko y WebKit — siguen divergiendo en los detalles de los que sus layouts dependen en silencio, y un número sorprendente de incidentes en producción se reduce a una diferencia de renderizado que nadie auditó.
Cuando una regresión solo aparece en un motor, casi siempre significa una de tres cosas: se usó una funcionalidad que llega más tarde en algunos motores que en otros; un layout depende de una métrica que varía por plataforma (anchura de scrollbar, baseline de tipografía, algoritmo de suavizado); o un polyfill condicionado por user-agent se comporta en el mundo real de manera ligeramente distinta que en la máquina de desarrollo. Las tres son invisibles para una suite de pruebas agnóstica al motor.
Ejemplos típicos que vemos durante una auditoría cross-browser:
date, datetime-local, select — se renderizan con un chrome visiblemente distinto en WebKit frente a Chromium, empujando a veces elementos adyacentes unos cuantos píxeles.line-height equilibrada en Chromium puede empujar un CTA bajo la línea de flotación en Gecko.gap en contenedores flex, aspect-ratio y container queries llegaron en momentos ligeramente distintos a los motores. Si su build apunta a una baseline más antigua, los caminos de fallback pueden renderizarse distintos del camino principal.prefers-color-scheme, accent-color y forced-colors en Windows — se propagan al DOM de forma distinta según la plataforma y son fáciles de perder en un entorno de dev local.ScanU captura cada página en los motores y viewports que usted configure, en una sola ejecución, con fixtures y hooks de timing idénticos, de modo que los diffs que ve son diferencias de layout reales — no un efecto secundario de ejecutar cada navegador en un harness distinto. Puede ver todas las capacidades cross-browser en la página de producto: la matriz que configura es la matriz capturada en cada ejecución.
Para equipos que publican design systems, o cualquier producto cuya identidad visual forme parte de la marca, esa matriz no es un lujo. Es la única manera de saber que lo que su cliente ve en Safari coincide con lo que usted aprobó en Chrome.
| Navegador | Viewport | Estado |
|---|---|---|
| Chromium 124 | 1440 × 900 | Coincide con la baseline |
| Firefox 126 | 1440 × 900 | Coincide con la baseline |
| WebKit (Safari 17) | 1440 × 900 | Diff visual · revisar |
| Chromium 124 | 768 × 1024 | Coincide con la baseline |
| WebKit (Safari 17) | 768 × 1024 | Desplazamiento de layout detectado |
| Chromium 124 | 390 × 844 | Nueva baseline pendiente |
Cómo funciona la comparación
Una herramienta de diff visual solo es útil en la medida de la relación señal-ruido de los diffs que produce. La pipeline de captura de ScanU está diseñada para que lo único que cambie entre dos ejecuciones sea aquello que usted realmente cambió — no la escenografía de tipografías, animaciones, marcas de tiempo o huecos de anuncio alrededor.
Cada ejecución es una pipeline de tres pasos. Primero ScanU navega en cada motor hasta la página o el componente bajo prueba, espera un conjunto configurado de señales de readiness — tipografías cargadas, imágenes decodificadas, red en silencio, un atributo data-ready o una sonda JavaScript personalizada — y fija todas las animaciones CSS en su frame final. Después captura la página en cada viewport configurado en la misma ejecución, con scroll-stitching para páginas largas, de modo que obtenga el artefacto completo y no solo el trozo visible. Por último compara la captura con la baseline aceptada y produce un resultado por par (navegador, viewport): idéntico, dentro de la tolerancia o significativamente distinto.
La comparación en sí no es un diff ingenuo de píxeles. ScanU aplica un modelo perceptual que entiende el anti-aliasing, el renderizado sub-pixel y los pequeños cambios de espacio de color, para que una peculiaridad de kerning en WebKit no se disfrace de bug. También admite máscaras explícitas para las zonas que usted sabe que cambiarán en cada carga — datos en vivo, marcas de tiempo relativas, contenido aleatorizado, carruseles — de forma que esas áreas aporten cero ruido al diff.
Cuando aparece un cambio real, la plataforma muestra tres paneles sincronizados: la baseline, la captura actual y un overlay de diff que resalta exactamente lo que se movió. Una única decisión revisable — aceptar, rechazar o actualizar la baseline — se registra para cada cambio, y esa decisión pasa a formar parte de la historia del proyecto. No hay deriva silenciosa ni aceptación automática: la baseline solo se mueve cuando una persona autorizada lo decide.
La misma pipeline se puede invocar desde tres puntos de entrada: contra URLs en vivo (producción, staging, previsualizaciones de PR), contra un sitio estático o un bundle construido, o contra previsualizaciones de componentes en un sandbox estilo Storybook. La mayor parte de los equipos usa la primera vía como release gate, la segunda para artefactos de despliegue y la tercera para el trabajo en design system — las tres alimentan el mismo almacén de baselines.
El último render aceptado para esta página, navegador y viewport. Congelado hasta que un revisor lo actualice explícitamente.
La captura de esta ejecución. Mismas fixtures, mismos hooks de timing, mismo viewport — solo ha cambiado el código bajo prueba.
Las regiones resaltadas en ámbar muestran dónde el render actual se desvía de la baseline más allá de la tolerancia configurada.
Para quién es ScanU
ScanU está construido para los equipos cuyo trabajo se juzga por lo que el usuario ve. Es un grupo más amplio de lo que parece — no solo diseñadores e ingenieros frontend, sino cualquiera cuyas decisiones de lanzamiento dependan de que una UI esté correcta en un navegador determinado, en un viewport determinado, un día determinado.
Ingenieros frontend y full-stack usan ScanU como última etapa de una pipeline de pull request: la build está verde, las pruebas unitarias pasan, la suite end-to-end está contenta — y entonces un diff visual confirma que el cambio coincide con lo que la diseñadora esperaba, o saca a la luz una regresión que nadie habría cazado leyendo un parche. El resultado es menos tiempo apagando incendios post-despliegue y más tiempo en el trabajo que de verdad mueve el producto.
Los ingenieros de QA ganan un piso de pruebas que escala sin reescribir selectores. Añadir una página a la suite visual es una URL y una baseline — no una semana de XPath frágiles. El piso que atrapa las regresiones de UI se convierte en miembro de primera clase de la pirámide de pruebas, en lugar de un mensaje de Slack post-hoc de un usuario.
Equipos de design system y de plataforma ejecutan ScanU contra cada sandbox de componente de su biblioteca. Cuando cambia un token, cada componente que depende de él recibe automáticamente una auditoría visual. Cuando un componente se refactoriza, los consumidores corriente abajo reciben un diff que pueden revisar antes de que aterrice la nueva versión. Así es como un design system evita acumular regresiones silenciosas a lo largo de los años.
Los responsables de producto e ingeniería usan la superficie de revisión como evidencia. Las release notes pueden incluir un enlace al diff visual aceptado para cada lanzamiento. Los post-mortem pueden referenciar si una regresión fue atrapada, se pasó por alto o se aceptó explícitamente. Con el tiempo la plataforma se convierte en un registro de cómo ha evolucionado la UI y de quién firmó cada paso.
Casos de uso
La misma plataforma sirve a flujos de trabajo muy distintos. El hilo común es que cada uno de estos equipos publica UI a un ritmo que a sus clientes les importa, y cada uno necesita poder saber — de un vistazo — si la UI sigue teniendo el aspecto que debería.
Sea cual sea la forma del equipo, ScanU se suele adoptar por una de cinco razones: un incidente reciente en producción que una regresión visual habría atrapado; una migración de design system cuyo radio de impacto es imposible de auditar a mano; un flujo CI/CD que necesita un release gate más rico que «pruebas en verde»; un entregable orientado al cliente que requiere evidencia antes/después; o una postura de compliance que prefiere herramientas de test alojadas en la UE. Una integración CI/CD común está detrás de las cinco — la misma pipeline hace el trabajo, la dispare una PR, un merge o una planificación nocturna.
Entreguen a sus clientes un delta visual semanal por sitio. Evidencia antes/después en cada sprint, en cada navegador del contrato, en un único informe.
Añada un piso visual a la pirámide de pruebas. Las páginas nuevas entran en la suite con una URL y una baseline — sin selectores frágiles ni scripts de captura flakey que mantener.
Los diffs de captura aparecen en línea en las pull requests. Las regresiones de layout se atrapan en revisión, no en producción, ni en un hilo de Slack de un cliente.
Muévanse rápido sin romper la home. Una red de seguridad determinista que mantiene el sitio de marketing pixel-estable a lo largo de rediseños, A/B tests y migraciones de tokens.
Cobertura visual sobre cada sandbox de componente. Cambios de tokens, cambios de tema y refactorizaciones de componentes reciben una auditoría automática antes de publicar la librería.
Valide breakpoints móvil, tableta y escritorio en la misma ejecución. Las pruebas responsive dejan de ser una tarea de captura y se convierten en un paso de revisión.
CI/CD y confianza en el lanzamiento
La confianza en el lanzamiento no es una sensación. Es una pipeline que dice la verdad sobre lo que se va a publicar — incluidas las partes sobre las que su test runner no tiene opinión. ScanU se conecta a esa pipeline como status check, como comentario de PR y como artefacto guardado, enlazable desde cualquier post-mortem.
El modelo de integración es deliberadamente sobrio: el paso de captura de ScanU se ejecuta en el mismo job que ya lanza sus pruebas; reporta un pass, un review-needed o un fail en la PR; y ese estado se trata como cualquier otro check obligatorio. Los equipos ya saben leer verde, amarillo y rojo en su pipeline — un check de regresión visual encajado en ese ritmo añade una nueva dimensión de seguridad sin exigir un nuevo modelo mental.
Bajo el capó, ScanU está diseñado para las realidades del CI/CD moderno:
La guía de integración CI/CD paso a paso describe el cableado específico para GitHub Actions, GitLab CI, Bitbucket Pipelines y runners auto-alojados. El caso común es un único job adicional; el caso más avanzado es una matriz de entornos que promociona una baseline a través de un lanzamiento por fases.
RGPD · Alojamiento en la UE · Privacidad
Los artefactos de test son datos. Las capturas pueden recoger incidentalmente datos personales que aparecían en la página — un nombre en la barra de navegación, un email en el menú de perfil, una referencia de pedido en una pantalla de confirmación. Una plataforma de test visual responsable trata esos artefactos con el mismo cuidado que los datos de producción que reflejan.
ScanU está construido y alojado en la Unión Europea, con almacenamiento y procesamiento en infraestructura operada en la UE. Para equipos con compromisos de residencia de datos — sectores regulados, compradores públicos, clientes B2B sensibles a la privacidad — a menudo es un requisito de compras, no una preferencia. ScanU está diseñado para satisfacerlo sin ceder en capacidades de producto.
De esa postura se derivan algunas decisiones deliberadas de diseño:
Para la postura de privacidad completa — subencargados, alojamiento regional, DPA, ventanas de retención — consulte la documentación sobre RGPD y tratamiento de datos. Para la mayoría de los equipos, la versión corta es suficiente: sus capturas se quedan en la UE, y la plataforma está construida para que se queden ahí.
La diferencia
El visual testing es una categoría saturada. Buena parte de lo que diferencia a ScanU son las cosas que se niega a hacer — los atajos que no toma, el ruido que no reenvía a su cola de revisión y las opiniones que tiene sobre cómo debe revisarse un diff.
Las herramientas genéricas de captura suelen distribuirse como una librería que uno pega a su test runner, y luego le tocan a usted el timing, las tipografías, las animaciones y la eterna pregunta de si un desplazamiento de un píxel es un bug real o un artefacto de redondeo. ScanU adopta una postura más firme: si la plataforma no puede producir una captura determinista, es problema de la plataforma — no suyo. Por eso las señales de readiness, la carga de tipografías, el pinning de animaciones, el scroll stitching, el diff perceptual y las regiones enmascaradas están integrados, no añadidos a posteriori.
El pricing sigue la misma lógica. Para un equipo razonable — unas pocas docenas de páginas, tres motores, tres viewports, una pipeline — el coste de la cobertura visual no debería ser una línea que haya que defender en un comité de presupuesto. La página de precios está escrita en números claros: qué se obtiene en cada nivel, qué cuenta como run y cuál es el tope. Ningún presupuesto a medida para equipos que solo quieren publicar la UI que han diseñado.
Estabilización, readiness de tipografías, pinning de animaciones y scroll stitching son funciones de plataforma — no fragmentos que usted mantiene en su propio repo.
El motor de diff entiende el anti-aliasing y el renderizado sub-pixel, así que los microdesplazamientos invisibles no ahogan las regresiones que de verdad importan.
Las baselines solo se mueven cuando una persona autorizada acepta el cambio. Cada actualización es auditable. No hay deriva silenciosa.
Capturas, metadatos e historial de revisión viven en infraestructura de la UE. Sin opt-in necesario para equipos que deben mantener esa postura.
Lo que ScanU atrapa
La mayor parte de los bugs que atrapa una plataforma de regresión visual no son exóticos. Son las pequeñas roturas sin dramatismo, fáciles de pasar por alto, que se cuelan ante los reviewers porque ninguna aserción mira hacia ellas. Aquí una muestra de las categorías que ScanU está construido específicamente para sacar a la luz.
Los bugs visuales se agrupan en un puñado de patrones recurrentes. Cada uno parece trivial de forma aislada; cada uno puede llegar a producción sin una sola prueba en rojo. Todos salen a la luz como diff en la próxima ejecución de ScanU, antes de que la PR se mergee.
backdrop-filter. En Safari una barra de navegación aparece de repente opaca donde antes difuminaba.text-wrap: balance luce nítido en Chrome pero sigue desequilibrado en motores que aún no lo han publicado. Sin un check cross-browser es invisible en la máquina de quien desarrolla.La descripción de funcionalidades repasa las primitivas de detección con más detalle — tolerancias perceptuales, regiones enmascaradas, captura por scroll, branching de baseline — y muestra cómo cada una se corresponde con una de las categorías anteriores. Para la mayoría de los equipos la versión corta es: si algo cambia visualmente, ScanU lo detecta; si es esperado, lo acepta con un clic; si no, lo ha atrapado antes que nadie.
FAQ
Siguientes pasos
La forma más rápida de decidir si el test de regresión visual encaja en su pipeline es lanzarlo una vez contra un proyecto que ya publica. ScanU es gratis para empezar, se engancha en unos minutos a un job de CI existente y produce su primer diff en el siguiente commit.
La mayoría de los equipos empieza con una sola página de alto tráfico en tres navegadores y tres viewports. Es suficiente para ver la plataforma en acción, y es suficiente para atrapar la próxima regresión real que su suite de pruebas actual habría pasado por alto.
A partir de ahí, el alcance crece con la confianza del equipo: más páginas, más breakpoints, cobertura a nivel de componente sobre el design system, un status check obligatorio en cada pull request. No hay que reservar llamada, no hay onboarding a medida, no hay compromiso mínimo.