gestion_table_tournante_libre/test/projets.test.js
Mathieu Benoit 9fc104d0e9 [ADD] skeleton: Capacitor web app that shows its dated version
The engine to come must be proven against oracles under node in seconds,
so the skeleton sets three test projects: node, watched; node-long; and a
real Chromium that reads computed styles in both themes. The version
lives in version.json alone; a check refuses eight divergences — technical
form, generated module, changelog head, stray version strings — and a
build guard keeps test files and fixture assets out of the bundle.

Checked: on this commit alone, 73 node tests, 7 browser tests and the
version check pass; the guard fails on a fixture joined as an asset.

--- FR ---

[ADD] squelette : application web Capacitor qui affiche sa version datée

Le moteur à venir doit s'éprouver contre des oracles sous node en
quelques secondes : le squelette pose trois projets d'épreuve — node,
sous surveillance ; node-long ; et un vrai Chromium qui lit le style
calculé dans les deux thèmes. La version vit dans version.json seul ; un
contrôle refuse huit divergences — forme technique, module engendré,
tête du changelog, chaînes de version égarées — et une garde de
construction tient fichiers et données d'épreuve hors du paquet.

Vérifié : sur ce commit seul, 73 épreuves node, 7 navigateur et le
contrôle de version passent ; la garde échoue sur une donnée jointe.

Assisted-by: Claude Opus 5.5
2026-10-05 13:13:13 -04:00

33 lines
1.4 KiB
JavaScript

// © 2026 TechnoLibre (http://www.technolibre.ca)
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
// Le projet node n'expose aucun DOM et ne compile aucun composant : un module
// qui toucherait document ou window, ou qui importerait un composant Svelte,
// y échoue au lieu de passer sur un environnement que la série node ne doit
// pas fournir (§ 14.4, § 14.8).
import assert from 'node:assert/strict';
import { existsSync } from 'node:fs';
import { describe, test } from './lanceur.js';
describe('projet node', () => {
test('globalThis.document vaut undefined', () => {
assert.equal(globalThis.document, undefined);
});
test('globalThis.window vaut undefined', () => {
assert.equal(globalThis.window, undefined);
});
test('un composant Svelte ne se charge pas', async () => {
// Le composant existe, et son import échoue sur la lecture du source :
// sans greffon Svelte, l'analyse des imports de Vite rejette la syntaxe
// d'un .svelte, et sous « node --test » Node en refuse l'extension. Un
// refus venu d'ailleurs, comme un module qui lirait window au chargement,
// fait échouer l'épreuve au lieu de la satisfaire.
assert.ok(existsSync(new URL('../src/interface/App.svelte', import.meta.url)));
await assert.rejects(
import('../src/interface/App.svelte'),
/Failed to parse source for import analysis|Unknown file extension/,
);
});
});