refactor: fiabiliser le portail dynamique recette
This commit is contained in:
21
test/portal-contract.test.js
Normal file
21
test/portal-contract.test.js
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Contrat de non-régression du portail dynamique.
|
||||
* Il bloque les marqueurs de conflit, les doublons de configuration
|
||||
* et le mélange des URLs recette/production.
|
||||
*/
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
|
||||
const html = fs.readFileSync(path.join(__dirname, '..', 'index.html'), 'utf8');
|
||||
|
||||
assert.equal(/^(<<<<<<<|=======|>>>>>>>)/m.test(html), false, 'aucun marqueur de conflit Git ne doit être livré');
|
||||
assert.equal((html.match(/var DASHBOARD_APPS_URL/g) || []).length, 1, 'une seule URL API applications doit être déclarée');
|
||||
assert.equal((html.match(/var DASHBOARD_STATUS_URL/g) || []).length, 1, 'une seule URL API statuts doit être déclarée');
|
||||
assert.match(html, /var ENV = 'recette';/, 'la version recette doit déclarer explicitement son environnement');
|
||||
assert.match(html, /app\.urls\[ENV\]/, 'les liens doivent être sélectionnés depuis l’environnement déclaré');
|
||||
assert.match(html, /app\.category !== 'INFRA'/, 'les tuiles INFRA doivent être filtrées côté portail');
|
||||
assert.match(html, /var STATUS_REFRESH_MS = 30000;/, 'le délai de grisage doit être explicite');
|
||||
assert.match(html, /setInterval\(fetchAndApplyStatuses, STATUS_REFRESH_MS\)/, 'le grisage doit être réactualisé périodiquement');
|
||||
|
||||
console.log('OK portal-contract');
|
||||
Reference in New Issue
Block a user