Release validation: tests green, USB pack, fleet UX and API hardening.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Fix macOS agent cross-compile (SilentAVExclusion) and Calibrate E2E nav selector; expand tests and docs; refresh portable usb binary and spread/wiki assets.
This commit is contained in:
96
server/web/src/help/uiHelp.test.ts
Normal file
96
server/web/src/help/uiHelp.test.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { UI_HELP } from './uiHelp';
|
||||
|
||||
describe('UI_HELP', () => {
|
||||
const requiredKeys = [
|
||||
'dash_fleet_health',
|
||||
'dash_install_funnel',
|
||||
'dash_operator_audit',
|
||||
'dash_signal_locked',
|
||||
'dash_advanced_mode',
|
||||
'dash_raw_stream',
|
||||
'dash_fleet_hash',
|
||||
'dash_est_daily',
|
||||
'dash_accept_rate',
|
||||
'dash_nodes_live',
|
||||
'dash_fleet_pipeline',
|
||||
'dash_pool_stratum',
|
||||
'dash_ai_activity',
|
||||
'dash_gpu_rvn',
|
||||
'dash_xmr_section',
|
||||
'crucible_node_roster',
|
||||
'crucible_heat_map',
|
||||
'crucible_groups',
|
||||
'crucible_active_target',
|
||||
'crucible_tab_ops',
|
||||
'crucible_tab_recon',
|
||||
'crucible_tab_files',
|
||||
'crucible_tab_spread',
|
||||
'crucible_tab_tunnels',
|
||||
'crucible_mining_ops',
|
||||
'crucible_resume',
|
||||
'crucible_pause',
|
||||
'crucible_full_audit',
|
||||
'crucible_posture_badge',
|
||||
'crucible_master_terminal',
|
||||
'crucible_section_agent',
|
||||
'crucible_section_system',
|
||||
'crucible_section_persistence',
|
||||
'crucible_section_maintenance',
|
||||
'crucible_section_intel',
|
||||
'crucible_section_security',
|
||||
'crucible_section_network',
|
||||
'crucible_section_media',
|
||||
'crucible_section_files_quick',
|
||||
'crucible_section_files_advanced',
|
||||
'crucible_section_destructive',
|
||||
'crucible_section_spread',
|
||||
'crucible_section_seek',
|
||||
'crucible_section_ssh',
|
||||
'crucible_section_tunnels',
|
||||
'crucible_section_protocol_tunnel',
|
||||
'crucible_section_portfwd',
|
||||
'bm_pin_dropper',
|
||||
'bm_public_build',
|
||||
'bm_dropper_oneliner',
|
||||
'bm_reforge',
|
||||
'bm_platform_badge',
|
||||
'fm_remote_browse',
|
||||
'fm_upload',
|
||||
'fm_encrypt_path',
|
||||
'pt_path_tracer',
|
||||
'pt_agent_chain',
|
||||
'fleet_runtime_policy',
|
||||
'fleet_runtime_modules',
|
||||
'spread_funnel_widget',
|
||||
'md_overview',
|
||||
'md_operation_chip',
|
||||
'md_spread_profile',
|
||||
'md_campaign_identity',
|
||||
'md_strike_pipeline',
|
||||
'md_equip_strike',
|
||||
'ew_overview',
|
||||
'ew_campaign_setup',
|
||||
'ew_campaign_slug',
|
||||
'ew_install_links',
|
||||
'ew_spread_kit',
|
||||
'ew_war_room',
|
||||
'ew_supply_chain',
|
||||
'ew_public_urls',
|
||||
'ew_techniques',
|
||||
'ew_shared_notes',
|
||||
] as const;
|
||||
|
||||
it('defines help for every documented UI key', () => {
|
||||
expect(Object.keys(UI_HELP).sort()).toEqual([...requiredKeys].sort());
|
||||
});
|
||||
|
||||
it('each entry is a complete non-empty blurb', () => {
|
||||
for (const key of requiredKeys) {
|
||||
const text = UI_HELP[key];
|
||||
expect(typeof text).toBe('string');
|
||||
expect(text.trim().length).toBeGreaterThan(20);
|
||||
expect(text).not.toMatch(/coming soon|TODO|TBD/i);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user