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
33 lines
1.4 KiB
JavaScript
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/,
|
|
);
|
|
});
|
|
});
|