]*required/', $content) === 1, 'nom missing required'); assertTrue(preg_match('/id="prenom"[^>]*required/', $content) === 1, 'prenom missing required'); assertTrue(preg_match('/id="email"[^>]*required/', $content) === 1, 'email missing required'); assertTrue(preg_match('/id="categorie"[^>]*required/', $content) === 1, 'categorie missing required'); assertTrue(preg_match('/id="objet"[^>]*required/', $content) === 1, 'objet missing required'); assertTrue(preg_match('/id="message"[^>]*required/', $content) === 1, 'message missing required'); assertTrue(preg_match('/]*id="email"[^>]*type="email"|]*type="email"[^>]*id="email"/', $content) === 1, 'email type not email'); assertTrue(preg_match('/id="nom"[^>]*maxlength="100"/', $content) === 1, 'nom maxlength'); assertTrue(preg_match('/id="prenom"[^>]*maxlength="100"/', $content) === 1, 'prenom maxlength'); assertTrue(preg_match('/id="email"[^>]*maxlength="255"/', $content) === 1, 'email maxlength'); assertTrue(preg_match('/id="entreprise"[^>]*maxlength="200"/', $content) === 1, 'entreprise maxlength'); assertTrue(preg_match('/id="objet"[^>]*maxlength="200"/', $content) === 1, 'objet maxlength'); assertTrue(preg_match('/id="message"[^>]*maxlength="5000"/', $content) === 1, 'message maxlength'); assertTrue(preg_match('/id="nom"[^>]*placeholder="Dupont"/', $content) === 1, 'nom placeholder'); assertTrue(preg_match('/id="prenom"[^>]*placeholder="Marie"/', $content) === 1, 'prenom placeholder'); assertTrue(preg_match('/id="email"[^>]*placeholder="marie\\.dupont@example\\.com"/', $content) === 1, 'email placeholder'); assertTrue(preg_match('/id="entreprise"[^>]*placeholder="Nom de votre entreprise"/', $content) === 1, 'entreprise placeholder'); assertTrue(preg_match('/id="objet"[^>]*placeholder="Résumez votre demande en quelques mots"/', $content) === 1, 'objet placeholder'); assertTrue(preg_match('/id="message"[^>]*placeholder="Décrivez votre projet ou votre demande\\.\\.\\."/', $content) === 1, 'message placeholder'); assertTrue(preg_match('/id="nom"[^>]*autocomplete="family-name"/', $content) === 1, 'nom autocomplete'); assertTrue(preg_match('/id="prenom"[^>]*autocomplete="given-name"/', $content) === 1, 'prenom autocomplete'); assertTrue(preg_match('/id="email"[^>]*autocomplete="email"/', $content) === 1, 'email autocomplete'); assertTrue(preg_match('/id="entreprise"[^>]*autocomplete="organization"/', $content) === 1, 'entreprise autocomplete'); assertTrue(strpos($content, 'text-primary') !== false, 'missing required marker'); assertTrue(strpos($content, '(optionnel)') !== false, 'missing optional marker'); assertTrue(strpos($content, 'Sélectionnez une catégorie...') !== false, 'missing categorie placeholder'); assertTrue(strpos($content, 'Je souhaite parler de mon projet') !== false, 'missing categorie projet'); assertTrue(strpos($content, 'Je souhaite vous proposer un poste') !== false, 'missing categorie poste'); assertTrue(strpos($content, 'Autre') !== false, 'missing categorie autre'); assertTrue(strpos($content, 'grid grid-cols-1 sm:grid-cols-2') !== false, 'missing responsive grid'); assertTrue(strpos($content, 'flex flex-col sm:flex-row') !== false, 'missing responsive buttons'); fwrite(STDOUT, "OK\n");