Leçon 16/17 8 min

Donner des yeux à l'IA

Fermez la boucle de feedback visuel : faites prendre des captures d'écran à l'IA pour qu'elle vérifie et corrige son propre travail d'interface.

FR EN

Le problème : l'IA code à l'aveugle

Vous demandez à l'IA d'aligner trois cartes côte à côte. Elle écrit du CSS impeccable sur le papier : display:flex, gap:16px, tout est là. Vous rechargez la page... et la troisième carte déborde sur la droite, le texte chevauche l'image, et sur mobile tout est empilé n'importe comment.

Le problème n'est pas que l'IA est mauvaise en CSS. Le problème est qu'elle ne voit rien. Elle écrit du code d'interface comme un peintre les yeux bandés : elle connaît la théorie des couleurs, mais elle ne voit jamais la toile. Alors elle devine.

Un développeur humain, lui, regarde le résultat dans le navigateur. Il voit le débordement, il voit le désalignement, il corrige. C'est cette boucle de feedback visuel qui manque à l'IA par défaut. Et c'est exactement ce qu'on va lui rendre.

Le piège du « ça a l'air bon » : l'IA affirme avec aplomb que son interface est « parfaitement alignée et responsive ». Elle n'en sait rien : elle n'a jamais vu le rendu. Sans yeux, sa confiance n'a aucune valeur.

Fermer la boucle de feedback visuel

La solution tient en une idée simple : donner une capture d'écran à l'IA. Les modèles modernes sont multimodaux : ils lisent les images aussi bien que le texte. Dès qu'ils voient le rendu réel, ils repèrent ce qui cloche.

Le workflow gagnant boucle sur lui-même :

  1. Code : l'IA écrit le HTML/CSS de votre composant
  2. Capture : on prend une capture d'écran de la page rendue
  3. Montrer : on colle l'image dans la conversation
  4. Diagnostic : l'IA voit le débordement, le désalignement, la couleur ratée
  5. Correction : elle corrige le code en sachant ce qui n'allait pas
  6. Re-capture : on reboucle jusqu'à ce que le rendu soit propre

C'est la même boucle que pour un humain, sauf qu'on la rend explicite. L'IA passe de « j'écris du code et j'espère » à « je vois mon résultat et je le corrige ».

Automatiser les captures avec Playwright

Coller des captures à la main devient vite pénible. L'astuce des agents de code modernes : leur donner un outil pour prendre les captures eux-mêmes. Playwright pilote un vrai navigateur et capture une page en quelques lignes : y compris à plusieurs largeurs d'écran.

Capturer aux trois points de rupture classiques (mobile, tablette, desktop) révèle d'un coup tous les problèmes responsive :

const { chromium } = require('playwright');

(async () => {
    const browser = await chromium.launch();
    const page = await browser.newPage();

    // Les trois points de rupture à vérifier
    const viewports = [
        { name: 'mobile',  width: 375,  height: 812 },
        { name: 'tablette', width: 768,  height: 1024 },
        { name: 'desktop', width: 1440, height: 900 },
    ];

    for (const vp of viewports) {
        await page.setViewportSize({ width: vp.width, height: vp.height });
        await page.goto('http://localhost:8000');
        await page.screenshot({
            path: `capture-${vp.name}.png`,
            fullPage: true,
        });
        console.log(`Capture ${vp.name} (${vp.width}px) enregistrée`);
    }

    await browser.close();
})();

L'agent lance ce script, récupère les trois images, et les regarde. Si la grille casse à 768px, il le voit. Si un bouton déborde sur mobile, il le voit. Il corrige, relance le script, revérifie : sans intervention de votre part.

Playwright n'est qu'un exemple. Puppeteer, ou même une simple commande de capture du système, font le même travail : produire une image que l'IA peut lire.

Coller un bug visuel à l'IA

La technique marche aussi à l'envers. Vous tombez sur un affichage cassé que vous n'arrivez pas à décrire avec des mots ? Prenez une capture et collez-la directement dans une IA multimodale avec la question : « Qu'est-ce qui ne va pas dans ce rendu ? »

L'IA voit que le menu déborde, que deux blocs se chevauchent, qu'un contraste est illisible. Elle pointe le coupable probable dans le CSS bien plus vite que vous ne l'auriez décrit. Une image vaut mille tickets de bug.

Conseil : donner des yeux à l'IA réduit drastiquement les allers-retours du type « c'est cassé » / « non c'est bon » / « non toujours cassé ». Une IA qui voit son rendu corrige en une passe des bugs d'interface qu'elle ne détecterait jamais à l'aveugle.

The problem: AI codes blind

You ask the AI to align three cards side by side. It writes flawless CSS on paper: display:flex, gap:16px, it is all there. You reload the page... and the third card overflows to the right, text overlaps the image, and on mobile everything is stacked randomly.

The problem is not that the AI is bad at CSS. The problem is that it cannot see anything. It writes UI code like a blindfolded painter: it knows color theory, but it never sees the canvas. So it guesses.

A human developer looks at the result in the browser. They see the overflow, they see the misalignment, they fix it. This visual feedback loop is what the AI lacks by default. And it is exactly what we will give it back.

The "looks good" trap: the AI confidently claims its interface is "perfectly aligned and responsive". It has no idea — it never saw the render. Without eyes, its confidence is worthless.

Closing the visual feedback loop

The solution is one simple idea: give the AI a screenshot. Modern models are multimodal — they read images as well as text. As soon as they see the real render, they spot what is wrong.

The winning workflow loops on itself:

  1. Code — the AI writes the HTML/CSS of your component
  2. Screenshot — you take a screenshot of the rendered page
  3. Show — you paste the image into the conversation
  4. Diagnose — the AI sees the overflow, the misalignment, the wrong color
  5. Fix — it fixes the code knowing what was wrong
  6. Re-screenshot — you loop until the render is clean

It is the same loop a human uses, except we make it explicit. The AI moves from "I write code and hope" to "I see my result and fix it".

Automating screenshots with Playwright

Pasting screenshots by hand quickly gets tedious. The trick used by modern coding agents: give them a tool to take screenshots themselves. Playwright drives a real browser and captures a page in a few lines — including at multiple widths.

Capturing at the three classic breakpoints (mobile, tablet, desktop) reveals all responsive issues at once:

const { chromium } = require('playwright');

(async () => {
    const browser = await chromium.launch();
    const page = await browser.newPage();

    // The three breakpoints to check
    const viewports = [
        { name: 'mobile',  width: 375,  height: 812 },
        { name: 'tablet',  width: 768,  height: 1024 },
        { name: 'desktop', width: 1440, height: 900 },
    ];

    for (const vp of viewports) {
        await page.setViewportSize({ width: vp.width, height: vp.height });
        await page.goto('http://localhost:8000');
        await page.screenshot({
            path: `shot-${vp.name}.png`,
            fullPage: true,
        });
        console.log(`Screenshot ${vp.name} (${vp.width}px) saved`);
    }

    await browser.close();
})();

The agent runs this script, grabs the three images, and looks at them. If the grid breaks at 768px, it sees it. If a button overflows on mobile, it sees it. It fixes, re-runs the script, re-checks — with no input from you.

Playwright is just one example. Puppeteer, or even a simple system screenshot command, do the same job: produce an image the AI can read.

Pasting a visual bug to the AI

The technique also works in reverse. You hit a broken layout you cannot describe in words? Take a screenshot and paste it straight into a multimodal AI with the question: "What is wrong with this render?"

The AI sees the menu overflowing, two blocks overlapping, an unreadable contrast. It points at the likely culprit in the CSS far faster than you could have described it. A picture is worth a thousand bug tickets.

Tip: giving the AI eyes drastically cuts the "it is broken" / "no it is fine" / "no still broken" round-trips. An AI that sees its render fixes UI bugs in one pass that it would never catch blind.

Avec l'IA

Mettez en place la boucle de feedback visuel avec ce prompt :

Tu viens de coder cette section. Écris un petit script Playwright qui capture la page http://localhost:8000 à trois largeurs : 375px (mobile), 768px (tablette) et 1440px (desktop), en fullPage. Lance-le, regarde les trois captures, et dis-moi pour chaque largeur ce qui est désaligné, déborde ou casse. Corrige ensuite le CSS, relance le script et reboucle jusqu'à ce que le rendu soit propre aux trois largeurs.
Ré-explique sans regarder

Sans relire la leçon : explique avec tes mots pourquoi donner une capture d'écran à l'IA change tout, et ce que le script page.screenshot() apporte à la boucle.

Une bonne explication dit : l'IA code l'interface à l'aveugle, sa confiance ne vaut rien tant qu'elle n'a pas vu le rendu. La capture est multimodale : l'IA lit l'image, repère le débordement ou le désalignement réel, puis corrige en connaissance de cause. page.screenshot() automatise l'étape « voir » à plusieurs largeurs, ce qui ferme la boucle code → capture → diagnostic → correction → re-capture sans intervention humaine.
Accepter ou rejeter le code de l'IA

Tu as demandé un script qui capture la page pour vérifier le responsive. L'IA propose ceci. Tu le relis avant de le lancer : accepter ou rejeter, et pourquoi ?

const { chromium } = require('playwright');

(async () => {
    const browser = await chromium.launch();
    const page = await browser.newPage();
    await page.setViewportSize({ width: 1440, height: 900 });
    await page.goto('http://localhost:8000');
    await page.screenshot({ path: 'capture.png' });
    await browser.close();
})();
Rejeter, ou au moins faire corriger. Le code tourne, mais il rate l'objectif : tu voulais vérifier le responsive, or il ne capture qu'une seule largeur (1440px, desktop). Mobile et tablette, là où la grille casse le plus souvent, ne sont jamais vus. Il manque aussi fullPage: true : sans lui, seule la zone visible est capturée et l'IA ne voit pas le bas de page. Le réflexe : boucler sur les trois points de rupture en fullPage, sinon tu donnes à l'IA un seul œil sur trois.
Exercice : Décrivez la boucle visuelle

Écrivez un prompt qui demande à l'IA de fermer la boucle de feedback visuel. Il doit mentionner : une capture d'écran (screenshot), la vérification responsive à plusieurs largeurs (mobile/desktop), et le fait de reboucler/corriger après avoir vu le rendu.

Rappel libre

Sans remonter dans la leçon : pourquoi l'IA produit-elle des interfaces cassées par défaut, et quelle est la seule chose à lui fournir pour fermer la boucle ?

Par défaut l'IA ne voit pas le rendu : elle écrit du CSS à l'aveugle et devine, puis affirme que « c'est aligné » sans aucun moyen de le vérifier. La seule chose à lui fournir est une capture d'écran de la page rendue (idéalement à plusieurs largeurs, via Playwright). Comme les modèles sont multimodaux, ils lisent l'image, repèrent le débordement ou le désalignement réel, et corrigent en connaissance de cause.
Pourquoi l'IA produit-elle souvent des interfaces cassées ?
À quoi sert de capturer la page à 375px, 768px et 1440px ?
Que faire d'un affichage cassé difficile à décrire avec des mots ?
Prochaine étape

L'IA voit, vérifie, corrige, et en profite souvent pour ajouter de la complexité inutile. La dernière leçon, garder le code simple, vous donne les réflexes pour résister à la surenchère et exiger la solution la plus claire, pas la plus impressionnante.

Leçon 17 : Garder le code simple →
Besoin d'un développeur pour votre projet ?

Réponse sous 24h · Sans engagement