corrige /ide, sert Mulish depuis le portail et complète les mentions légales
/ide avait une erreur de syntaxe depuis la maquette et un aperçu hors de son bac à sable. Mulish était encore importée depuis Google par la feuille de thème. Nouveaux tests : syntaxe des scripts de chaque page, feuilles de style sans import externe. public/vendor exclu du rsync. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e4a6aaebb1
commit
1ac8d4773a
10 changed files with 77 additions and 15 deletions
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
test('les pages légales sont en ligne et la page de statut redirige vers le site de statut', function () {
|
||||
$this->get(route('legal'))->assertOk()->assertSee('Esquisse Formation')->assertSee('RCS Paris 433 115 904');
|
||||
$this->get(route('legal'))->assertOk()->assertSee('Esquisse Formation')->assertSee('entrepreneur individuel (EI)')->assertSee('SIREN 838 093 268')->assertSee('RCS Paris 433 115 904');
|
||||
$this->get(route('confidentialite'))->assertOk()
|
||||
->assertSee('90 jours après l’archivage', false)
|
||||
->assertSee('aucune adresse e-mail', false)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Process;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
// Toutes les pages publiques sans paramètre doivent s'afficher : la page
|
||||
|
|
@ -35,3 +36,39 @@ test('aucune page publique ne charge de police depuis un service externe', funct
|
|||
expect($html)->not->toMatch('#fonts\.(googleapis|gstatic|bunny)\.(com|net)#', "page /{$route->uri()}");
|
||||
}
|
||||
});
|
||||
|
||||
test('aucune feuille de style publique n’importe de ressource externe', function () {
|
||||
foreach (glob(public_path('css/*.css')) as $fichier) {
|
||||
expect(file_get_contents($fichier))->not->toMatch('#@import\s+url\(\s*["\']?https?://#', basename($fichier));
|
||||
}
|
||||
});
|
||||
|
||||
// /ide a eu une erreur de syntaxe JavaScript de l'étape 8 à l'étape 14 (des
|
||||
// « !! » devenus « . » dans la maquette) : chaque script en ligne de chaque
|
||||
// page publique est maintenant analysé par Node.
|
||||
test('les scripts en ligne des pages publiques sont du JavaScript valide', function () {
|
||||
if (Process::run('node --version')->failed()) {
|
||||
$this->markTestSkipped('Node absent');
|
||||
}
|
||||
|
||||
$pages = collect(Route::getRoutes())
|
||||
->filter(fn ($r) => in_array('GET', $r->methods(), true) && $r->getName() !== null && ! str_contains($r->uri(), '{'))
|
||||
->reject(fn ($r) => collect($r->gatherMiddleware())->contains(fn ($m) => is_string($m) && str_starts_with($m, 'auth')))
|
||||
->reject(fn ($r) => $r->getActionName() === '\Illuminate\Routing\RedirectController');
|
||||
|
||||
$erreurs = [];
|
||||
foreach ($pages as $route) {
|
||||
preg_match_all('#<script(?![^>]*\bsrc=)[^>]*>(.*?)</script>#s', $this->get('/'.ltrim($route->uri(), '/'))->getContent(), $scripts);
|
||||
foreach ($scripts[1] as $i => $code) {
|
||||
$fichier = tempnam(sys_get_temp_dir(), 'js').'.js';
|
||||
file_put_contents($fichier, $code);
|
||||
$resultat = Process::run(['node', '--check', $fichier]);
|
||||
unlink($fichier);
|
||||
if ($resultat->failed()) {
|
||||
$erreurs[] = "/{$route->uri()} script {$i} : ".strtok($resultat->errorOutput(), "\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expect($erreurs)->toBe([]);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue