The screenshots must come from the tested walkthrough, not from a separate script that can drift. The browser walkthrough runs on the simulated file system with a driven clock and the direct executor, light theme, 1366 x 700 at scale 1, transitions off, and photographs each step once its condition holds. make captures writes the images and the manifest; the plain test run compares them instead. Eighteen captures are published, the later ones named as postponed. The forged-names scan skips the manifest, which records the demo names shown on screen. Checked: red first; 3620 node, 681 browser and 101 long tests green from the index alone. --- FR --- [ADD] docs : parcours photographié, publication de doc/captures Les captures doivent venir du parcours éprouvé, non d'un script à part qui dérive. Le parcours navigateur joue sur le système de fichiers simulé, l'horloge pilotée et l'exécuteur direct, thème clair, 1366 × 700 au facteur 1, transitions coupées, et photographie chaque étape quand sa condition tient. make captures écrit les images et le manifeste ; la série ordinaire les compare au lieu de les écrire. Dix-huit captures sont publiées, les suivantes nommées reportées. Le balayage des noms forgés saute le manifeste, qui relève les noms de démonstration affichés. Vérifié : rouge d'abord ; 3620 node, 681 navigateur et 101 longues vertes depuis l'index seul. Assisted-by: Claude Opus 5.5
40 lines
1.8 KiB
JavaScript
40 lines
1.8 KiB
JavaScript
// © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
|
|
|
// La feuille de style que le pilotage injecte (§ 19.2, § 19.4) : elle annule
|
|
// toute transition et toute animation, l'icône de chargement de l'accueil
|
|
// comprise. Une capture d'écran prise à mi-transition serait une image
|
|
// différente à chaque exécution, et un écran qui attendrait transitionend
|
|
// ne viendrait jamais : le parcours photographié et l'épreuve transversale
|
|
// posent la même feuille, d'ici seul.
|
|
//
|
|
// La feuille posée porte l'attribut data-feuille-capture : photographier
|
|
// (captures.js) la cherche dans le document et refuse une capture sans elle.
|
|
|
|
/** Le texte de la feuille : transitions et animations annulées sur tout
|
|
* élément et ses pseudo-éléments. */
|
|
export const SANS_MOUVEMENT = '*,*::before,*::after{transition:none!important;animation:none!important}';
|
|
|
|
/** L'attribut qui désigne la feuille posée. */
|
|
export const ATTRIBUT_FEUILLE = 'data-feuille-capture';
|
|
|
|
/**
|
|
* Pose la feuille dans <head> et rend la fonction qui la retire. Deux poses
|
|
* posent deux feuilles, chacune retirée par sa propre fonction.
|
|
*
|
|
* @param {Document} [document]
|
|
* @returns {() => void}
|
|
*/
|
|
export function poserFeuille(document = globalThis.document) {
|
|
const feuille = document.createElement('style');
|
|
feuille.setAttribute(ATTRIBUT_FEUILLE, '');
|
|
feuille.textContent = SANS_MOUVEMENT;
|
|
document.head.append(feuille);
|
|
return () => feuille.remove();
|
|
}
|
|
|
|
/** Vrai quand une feuille posée par poserFeuille est dans le document, au
|
|
* texte de SANS_MOUVEMENT. */
|
|
export function feuillePosee(document = globalThis.document) {
|
|
return [...document.head.querySelectorAll(`style[${ATTRIBUT_FEUILLE}]`)].some((feuille) => feuille.textContent === SANS_MOUVEMENT);
|
|
}
|