gestion_table_tournante_libre/scripts/banc/projet.js

67 lines
2.7 KiB
JavaScript
Raw Normal View History

// © 2026 TechnoLibre (http://www.technolibre.ca)
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
// Le projet banc de Vitest (§ 19.10), décrit sans rien charger de Vitest :
// vitest.banc.config.js l'enveloppe de defineConfig et lui donne son
// fournisseur Playwright, les gardes du banc (banc.test.js) le lisent sous
// node, où une épreuve ne charge pas le lanceur hors de test/lanceur.js
// (§ 14.8).
//
// Chromium reçoit les options des épreuves du navigateur (test/chromium.js),
// plus deux drapeaux qui lui ôtent sa cadence d'images : sans eux, chaque
// intervalle entre images se cale sur 16,7 ms, et un temps par image se lit
// en marches de cette hauteur. Le harnais (harnais.banc.js) vérifie que la
// cadence n'est pas bridée avant de mesurer.
//
// Le cadre d'affichage est celui des captures, 1 366 × 700 au facteur 1
// (§ 19.4, § 19.10) : la page de Playwright a ces dimensions, le cadre de
// l'épreuve aussi, et l'orchestrateur ne le met pas à l'échelle. La page
// lit le cadre par inject('cadreBanc'), qui vient d'ici seul.
//
// Les fichiers se jouent l'un après l'autre : deux mesures en même temps se
// disputeraient les processeurs. Une épreuve du banc dispose d'une
// demi-heure, un balayage de zoom à deux ralentissements y compris.
import { optionsChromium } from '../../test/chromium.js';
const CADRE = Object.freeze({ largeur: 1366, hauteur: 700 });
const DRAPEAUX_CADENCE = Object.freeze(['--disable-frame-rate-limit', '--disable-gpu-vsync']);
const DELAI_MS = 1_800_000;
/**
* Les options du fournisseur Playwright pour le banc : celles de
* optionsChromium(env), les drapeaux de cadence ajoutés à la fin des
* arguments de lancement, et un contexte de navigation au cadre du banc, au
* facteur d'échelle 1. env n'est pas modifié.
*
* @param {Record<string, string|undefined>} env
*/
export function optionsBanc(env) {
const { launchOptions = {}, ...autres } = optionsChromium(env);
return {
...autres,
launchOptions: { ...launchOptions, args: [...(launchOptions.args ?? []), ...DRAPEAUX_CADENCE] },
contextOptions: { viewport: { width: CADRE.largeur, height: CADRE.hauteur }, deviceScaleFactor: 1 },
};
}
/**
* L'objet test du projet banc, hors du fournisseur du navigateur, que
* vitest.banc.config.js ajoute à browser. Un objet neuf à chaque appel.
*/
export function projetBanc() {
return {
name: 'banc',
include: ['scripts/banc/**/*.banc.js'],
fileParallelism: false,
testTimeout: DELAI_MS,
hookTimeout: DELAI_MS,
provide: { cadreBanc: { ...CADRE } },
browser: {
enabled: true,
headless: true,
instances: [{ browser: 'chromium' }],
viewport: { width: CADRE.largeur, height: CADRE.hauteur },
},
};
}