Desarrollo web con ChatGPT: prueba original de un componente responsive

Actualizado el 17 de agosto de 2026. El desarrollo web con ChatGPT puede acelerar una primera propuesta de HTML, CSS y JavaScript, pero el código generado no debe considerarse correcto, seguro, accesible ni listo para producción sin pruebas. Para aportar evidencia propia, congelamos un brief y una rúbrica, ejecutamos tres solicitudes independientes y publicamos las entradas, salidas sin editar, pruebas, capturas, entorno y checksums.

Respuesta corta: en la reevaluación corregida v1.0.2, las tres salidas superaron las 36 reglas automatizadas previstas para este componente: 3/3 salidas aceptadas y 108/108 reglas aprobadas. La corrección del evaluador se hizo después de recibir las respuestas, no estaba preregistrada y no implicó nuevas llamadas a la API ni cambios en el código generado. El resultado describe este brief, estos fixtures y esta fecha; no certifica accesibilidad, seguridad ni preparación para producción.

Qué significa “desarrollo web con ChatGPT” en esta prueba

La expresión describe el uso de un modelo como asistente para proponer código. Esta ejecución no se hizo en la interfaz de consumo de ChatGPT: usamos la Responses API con el identificador solicitado y devuelto gpt-5.6-sol. Producto, API, modelo, parámetros, herramientas y contexto son variables distintas y pueden cambiar el resultado.

El modelo recibió el mismo brief en español neutro, los criterios de aceptación y una referencia visual original en cada repetición. No recibió la implementación del evaluador. Cada respuesta se materializó como index.html, styles.css y app.js, y los candidatos se evaluaron sin reparaciones humanas ni selección de una salida ganadora.

Para especificaciones, precios y contexto del identificador usado, consulta nuestra ficha independiente de GPT-5.6. Las observaciones de esta página proceden del paquete de la prueba y no sustituyen la documentación oficial del proveedor.

El brief original del componente

Diseñamos un ejercicio pequeño y ficticio para que cada requisito pudiera comprobarse. El objetivo era crear un explorador de recursos didácticos en español neutro, no imitar una página real ni medir un proyecto completo.

Entregables y restricciones

  • Solo HTML, CSS y JavaScript nativos, sin framework, compilador ni dependencia de ejecución.
  • Seis tarjetas visibles desde el HTML, incluso si JavaScript no está disponible.
  • Sin solicitudes de red, fuentes remotas, analítica, cookies, localStorage ni formularios que envíen datos.
  • Búsqueda que ignore mayúsculas y acentos y se combine con filtros de HTML, CSS y JavaScript.
  • Un contador anunciado mediante aria-live, estado de filtros con aria-pressed y nombres de enlace distinguibles.
  • Una, dos y tres columnas a 320, 768 y 1280 píxeles, sin desplazamiento horizontal.
  • Objetivos táctiles acordes con WCAG 2.2 SC 2.5.8: al menos 24 × 24 píxeles CSS o espacio suficiente, con sus excepciones definidas, además de foco visible.
  • La entrada escrita en el buscador no debía interpretarse como HTML.

El contenido exacto incluía el título “Explora recursos para aprender”, seis recursos ficticios y el mensaje “No encontramos recursos con esos filtros.” cuando no hubiera coincidencias. También fijamos IDs y atributos del DOM para evitar que una implementación válida fallara por selectores ambiguos.

Cómo reproducir la prueba

Antes de la primera solicitud congelamos el prompt, la referencia, el esquema de salida, la configuración, el evaluador y sus dependencias. El manifiesto anterior a la ejecución tiene SHA-256 efa6a2fdb5bf1339f09029f4f6472b1099d9e575d60c52add038a3449b74e101. El protocolo congelado y el manifiesto previo permiten comprobar qué estaba definido antes de ver las respuestas.

CampoValor ejecutado
APIPOST /v1/responses
Modelo solicitado y devueltogpt-5.6-sol
Repeticiones3 solicitudes independientes; un intento pagado por repetición y sin reintentos
Razonamientolow
Límite de salida7000 tokens
Herramientas y navegaciónNinguna
Otros parámetrosstore: false, stream: false, detalle de imagen high y timeout de 180.000 ms
Ventana de ejecución17 de agosto de 2026, 16:58:59–17:00:41 UTC

Las tres respuestas canónicas y sus metadatos se conservaron. store: false fue un parámetro de estas solicitudes, pero no equivale por sí solo a Zero Data Retention; el tratamiento aplicable depende de los controles oficiales de datos y de la configuración de la cuenta.

Archivos para repetir y auditar

Qué debe comprobarse en el prototipo

ÁreaComprobación mínimaEvidencia necesaria
FunciónBúsqueda, filtros, estado vacío y navegación por tecladoPruebas ejecutables y registro de resultados
ResponsiveReflujo, desbordamiento y legibilidad en varios anchosCapturas o mediciones del navegador
AccesibilidadSemántica, foco, teclado, zoom, contraste y objetivos táctilesHerramienta automática más revisión manual
SeguridadTratamiento de entrada, dependencias y ausencia de secretosRevisión del código y pruebas específicas
RendimientoPeso, carga e interacciónMediciones fechadas en un entorno identificado

Una búsqueda literal en CSS no demuestra conformidad y una medición aislada no sustituye las excepciones del criterio aplicable. La rúbrica, el código y los resultados de este prototipo pueden auditarse en el registro público de Zenodo enlazado a continuación.

Resultados observados en tres ejecuciones independientes

Las tres solicitudes terminaron con estado completed y devolvieron candidatos evaluables. La tabla muestra los resultados de la reevaluación corregida v1.0.2, no la salida histórica inválida del evaluador v1.0.0.

EjecuciónReglasLatenciaTokens entrada / salida / razonamientoCoste estimado
r136/3632.998 ms2.079 / 3.325 / 1790,112740 USD
r236/3634.061 ms2.079 / 3.311 / 2600,100383 USD
r336/3634.908 ms2.079 / 3.252 / 2390,098613 USD
Total108/108p50: 34.061 ms; p95 por rango más cercano: 34.908 ms6.237 / 9.888 / 6780,311736 USD
Componente de recursos educativos generado en la repetición 2 y evaluado a 1280 píxeles
Captura de la repetición 2 a 1280 × 900 píxeles. Documenta una salida evaluada sin reparación humana; no es una certificación de calidad, accesibilidad o seguridad.

Las 36 reglas por candidato cubrieron el contrato del contenido y del DOM, búsqueda y filtros, estados, teclado y foco observable, una comprobación axe limitada, ausencia de solicitudes externas y errores de consola, tratamiento como texto de un fixture similar a XSS, JavaScript deshabilitado y diseño a 320, 768 y 1280 píxeles. Aprobar una regla significa superar ese fixture, no demostrar una propiedad universal.

El coste total es una estimación calculada con el uso devuelto y el precio oficial archivado el 17 de agosto de 2026; no es una factura ni una promesa de coste futuro. La latencia también depende de la carga, la ruta, el contexto y la infraestructura.

Fe de erratas del evaluador

El evaluador congelado v1.0.0 rechazó inicialmente las tres salidas, aprobó 3 reglas, marcó 3 como fallidas y dejó 102 sin ejecutar. La causa fue un falso positivo: una expresión regular sin distinguir mayúsculas y minúsculas confundió callbacks ordinarios escritos con function () con el constructor dinámico Function(...). Ningún candidato contenía eval(...), Function(...) ni new Function(...). Por tanto, el 0/3 original es una salida histórica inválida del evaluador, no un fallo observado del modelo.

La corrección v1.0.1 arregló ese patrón. Una auditoría posterior detectó además dos supuestos del evaluador que el prompt no exigía: tratar el primer párrafo de cada tarjeta como descripción y exigir un texto literal para la etiqueta del buscador cuando el brief solo pedía una etiqueta accesible no vacía. La v1.0.2 corrigió esos dos supuestos y volvió a ejecutar las 108 reglas.

Estas correcciones fueron posteriores a la ejecución y no estaban preregistradas. No se hicieron nuevas llamadas a la API, no se editaron respuestas ni candidatos y no se eligió una salida ganadora. El registro de Zenodo conserva las capas v1.0.0, v1.0.1 y v1.0.2, sus parches, pruebas de regresión, límites de integridad y checksums. Consulta la secuencia completa de correcciones antes de interpretar el resultado.

Qué sigue pendiente de verificar

La rúbrica congelada no dejó reglas automáticas sin ejecutar en la reevaluación v1.0.2. Aun así, una suite corta no cubre todo lo necesario para una aplicación real. Queda pendiente, como mínimo:

  • pruebas con lectores de pantalla, tecnologías de asistencia, personas usuarias y tareas reales;
  • zoom al 200 %, alto contraste del sistema, dispositivos físicos y una matriz de navegadores distinta de Chromium;
  • backend, autenticación, autorización, base de datos, carga de archivos, dependencias y tratamiento de datos reales;
  • modelo de amenazas, revisión de seguridad de producción, pruebas de carga y observación de red en un despliegue real;
  • mantenibilidad, internacionalización, contenido extremo, calidad visual con criterios humanos y ciclos de reparación.

La activación por teclado, el foco observable, axe, el modo sin JavaScript, la red y la consola sí se comprobaron dentro de los fixtures publicados. Esos aprobados no sustituyen las revisiones manuales anteriores.

Flujo práctico para usar ChatGPT en desarrollo web

La parte valiosa no es pedir “crea una web” y copiar la respuesta. Un flujo útil separa especificación, generación, verificación y decisión humana.

  1. Define un problema pequeño. Describe usuarios, tarea, contenido, estados vacíos, errores y datos permitidos.
  2. Convierte requisitos en criterios observables. Por ejemplo: “a 320 px no existe overflow” es comprobable; “diseño perfecto” no lo es.
  3. Fija el contrato técnico. Indica archivos, framework o ausencia de él, navegadores, restricciones de red, API y estructura del DOM cuando sea necesaria.
  4. Proporciona una referencia autorizada. Usa un mockup propio y explica qué parte es orientación visual y qué parte es requisito exacto.
  5. Guarda la primera salida sin editar. Así puedes medir qué produjo el modelo y no confundir una reparación humana con capacidad original.
  6. Ejecuta pruebas antes de reparar. HTML válido, funciones, responsive, accesibilidad automatizable, consola, red, seguridad y pruebas del backend.
  7. Entrega al modelo solo fallos reproducibles. Incluye el criterio, el comportamiento observado y un caso mínimo; vuelve a ejecutar toda la suite tras cada cambio.
  8. Haz revisión humana. Comprueba lenguaje, experiencia, teclado, lector de pantalla, datos, amenazas y mantenimiento.
  9. Decide si se integra. Reescribe o descarta el código cuando sea más seguro que seguir reparando una propuesta frágil.

Plantilla de prompt para un componente verificable

Esta estructura ayuda a reducir ambigüedad. Debe adaptarse al proyecto y no contiene una promesa de que el resultado superará las pruebas.

Objetivo:
Construye [componente] para [usuario y tarea].

Entregables:
- [archivos exactos]
- [framework o HTML/CSS/JS nativos]

Contenido y estados:
- [texto exacto]
- carga, vacío, error y éxito

Comportamiento verificable:
- [acción] debe producir [resultado]
- a 320, 768 y 1280 px debe [criterio]

Accesibilidad:
- HTML semántico, teclado, foco visible y nombres accesibles
- no afirmar cumplimiento hasta completar pruebas automáticas y manuales

Privacidad y seguridad:
- no enviar datos ni cargar recursos remotos salvo los autorizados
- tratar toda entrada como no confiable

Límites:
- no inventar APIs ni dependencias
- señalar decisiones ambiguas y aspectos que requieren validación

Cómo revisar código generado antes de producción

Función y regresión

Prueba el camino esperado, entradas vacías, texto largo, acentos, caracteres especiales, errores de red y estados combinados. Cada reparación debe ejecutar toda la suite, no solo el caso que falló.

Accesibilidad

Usa semántica nativa antes de añadir ARIA. Revisa el orden de encabezados, etiquetas, mensajes de error, foco, teclado, reflow, zoom y lector de pantalla. La explicación oficial de WCAG 2.2 sobre tamaño de objetivos también detalla excepciones: medir 44 píxeles en un experimento no demuestra conformidad completa.

Seguridad

La guía de seguridad de OpenAI recomienda revisión humana cuando sea posible, especialmente para código y ámbitos de alto impacto. Además, aplica prácticas de seguridad web independientes: validación en servidor, salida codificada según contexto, políticas de contenido, gestión de secretos, autorización, límites y pruebas específicas de amenazas. Nunca pongas una clave de API en JavaScript del navegador.

Datos y privacidad

Antes de enviar código, registros o contenido a una API, elimina secretos y datos personales innecesarios. En nuestro experimento usamos datos ficticios y store: false. Este parámetro no significa ausencia total de retención ni activa por sí mismo Zero Data Retention; consulta los controles oficiales de datos de la API para el tratamiento aplicable.

Rendimiento y mantenimiento

Mide recursos, JavaScript, interacción, estabilidad visual y comportamiento en la red real. Revisa también si el equipo puede mantener el código. Un prototipo corto puede pasar una prueba y seguir siendo una mala base para una aplicación grande.

Si el componente va a enviar mensajes al chat de este sitio, revisa también la política de privacidad: el código de interfaz es solo una parte del tratamiento de datos y no sustituye los avisos, controles y límites del servicio.

Limitaciones de nuestro experimento

  • Un componente ficticio, pequeño y sin backend.
  • Tres repeticiones de un único modelo, prompt, imagen, configuración y fecha; no estiman una tasa general de éxito.
  • Una sola versión y entorno de Chromium; no hubo matriz de navegadores, sistemas ni dispositivos.
  • Los fixtures automáticos cubren casos concretos. Cero incidencias graves o críticas de axe no demuestra conformidad WCAG.
  • La cadena similar a XSS, el análisis estático y el aislamiento local no constituyen una auditoría de seguridad de producción.
  • No hubo lector de pantalla, pruebas con usuarios, alto contraste, backend, datos reales ni revisión de un despliegue.
  • Las capturas documentan estados ejecutados; no asignan una puntuación humana a la calidad visual.
  • La reevaluación v1.0.2 fue una corrección posterior, no un análisis preregistrado.

Por ello, esta página responde a una pregunta limitada: qué devolvió una configuración concreta ante un brief concreto y qué superó dentro de una rúbrica publicada. No demuestra que el producto cree sitios completos de forma autónoma, que el mismo identificador mantenga el comportamiento en el futuro ni que otro prompt obtenga el mismo resultado.

Preguntas frecuentes

¿ChatGPT puede crear una página web completa?

Puede proponer archivos, componentes y explicaciones, pero la amplitud de una “página completa” varía. Integraciones, seguridad, accesibilidad, contenido, rendimiento, despliegue y mantenimiento necesitan pruebas y decisiones humanas.

¿El código de ChatGPT está listo para copiar y publicar?

No debe asumirse. Incluso una salida que funciona en una demo puede contener errores, incompatibilidades, vulnerabilidades o problemas de accesibilidad. Ejecútala en un entorno aislado, revisa los cambios y aplica la misma puerta de calidad que al código escrito por una persona.

¿ChatGPT puede convertir una imagen en HTML y CSS?

Los modelos y endpoints compatibles pueden aceptar entradas visuales según su documentación y configuración. En esta prueba, cada solicitud incluyó la misma referencia visual original con detalle high y requisitos textuales dominantes. Evaluamos contenido, estructura, comportamiento y estados en viewports definidos; no calculamos fidelidad píxel a píxel ni demostramos que cualquier imagen pueda convertirse correctamente en código.

¿Qué lenguaje es mejor para empezar?

Para una interfaz pequeña, HTML, CSS y JavaScript nativos reducen dependencias y facilitan observar el resultado. Un proyecto existente debe respetar su arquitectura y estándares; cambiar de framework solo porque el modelo lo sugiera suele aumentar el riesgo.

¿Pasar las pruebas garantiza seguridad y accesibilidad?

No. Las pruebas cubren casos definidos. La seguridad requiere un modelo de amenazas y la accesibilidad combina automatización, revisión humana y pruebas con tecnologías de asistencia y usuarios cuando sea posible.

¿Qué modelo conviene para desarrollo web con ChatGPT?

No hay un ganador universal. Evalúa modelos disponibles con tareas representativas, el mismo brief y la misma rúbrica. Mide corrección, reparaciones, latencia y coste por salida aceptable, y vuelve a probar cuando cambie el modelo o el prompt.

Fuentes y evidencia

Documentación oficial consultada y archivada el 17 de agosto de 2026:

Evidencia propia depositada en Zenodo:

Política editorial: las fuentes oficiales documentan el producto, la API y los estándares; no prueban nuestros resultados. Los resultados propios se sustentan en peticiones, respuestas, candidatos, logs, reglas, capturas y checksums publicados. Distinguimos el registro original inválido del evaluador y la reevaluación corregida, e indicamos qué no se probó.