feat: en-tete allege, compte utilisateur en sidebar et pellicule d'images defilable (molette + fleches) #112
This commit is contained in:
@@ -240,6 +240,50 @@ function testAIFabModuleExports() {
|
||||
console.log(' ✓ ai-fab.js exports initAIFab');
|
||||
}
|
||||
|
||||
// ── Test header trimming + sidebar account section (#112) ──────────────────
|
||||
const AUTH_PATH = join(JS_DIR, 'auth.js');
|
||||
const STYLE_PATH = join(FRONTEND_DIR, 'style.css');
|
||||
|
||||
function testSidebarUserSection() {
|
||||
const html = readFileSync(INDEX_HTML, 'utf-8');
|
||||
const auth = readFileSync(AUTH_PATH, 'utf-8');
|
||||
const css = readFileSync(STYLE_PATH, 'utf-8');
|
||||
|
||||
// The header no longer carries the user block / version badge…
|
||||
assert.doesNotMatch(html, /id="user-menu"/, 'header #user-menu must be removed');
|
||||
assert.doesNotMatch(html, /id="logout-btn"/, 'header sign-out button must be removed');
|
||||
const headerRight = html.slice(
|
||||
html.indexOf('class="header-right"'),
|
||||
html.indexOf('class="header-menu"'),
|
||||
);
|
||||
assert.doesNotMatch(headerRight, /version-badge/, 'version badge must leave the header-right');
|
||||
assert.doesNotMatch(headerRight, /user-menu/, 'user block must leave the header-right');
|
||||
|
||||
// …the version lives in the options dropdown…
|
||||
assert.match(html, /class="menu-list-row menu-list-version"[\s\S]*?id="version-badge"/);
|
||||
|
||||
// …and the account section sits at the bottom of the sidebar.
|
||||
assert.match(html, /id="sidebar-user"/);
|
||||
assert.match(html, /id="sidebar-user-logout"/);
|
||||
assert.match(html, /id="sidebar-user-name"/);
|
||||
assert.match(html, /id="sidebar-user-avatar"/);
|
||||
|
||||
// auth.js drives it.
|
||||
assert.match(auth, /renderUserSection\(\)/);
|
||||
assert.match(auth, /getElementById\("sidebar-user"\)/);
|
||||
|
||||
// styles + i18n exist in FR and EN.
|
||||
assert.match(css, /\.sidebar-user\s*\{/);
|
||||
assert.match(css, /\.menu-list-version\s*\{/);
|
||||
for (const lang of ['fr', 'en']) {
|
||||
const locale = JSON.parse(readFileSync(join(FRONTEND_DIR, 'locales', `${lang}.json`), 'utf-8'));
|
||||
for (const key of ['header.menu_version', 'sidebar.user_role_admin', 'sidebar.user_role_user']) {
|
||||
assert.ok(locale[key], `${lang}: missing i18n key ${key}`);
|
||||
}
|
||||
}
|
||||
console.log(' ✓ header trimmed + sidebar account section (#112)');
|
||||
}
|
||||
|
||||
// ── Run all tests ──────────────────────────────────────────────────────────
|
||||
async function main() {
|
||||
let passed = 0, failed = 0;
|
||||
@@ -255,6 +299,7 @@ async function main() {
|
||||
['ai-fab module exists', testAIFabModuleExists],
|
||||
['ai-fab module exports', testAIFabModuleExports],
|
||||
['config TOC icons', testConfigTocIcons],
|
||||
['sidebar user section', testSidebarUserSection],
|
||||
];
|
||||
|
||||
for (const [name, fn] of tests) {
|
||||
|
||||
Reference in New Issue
Block a user