import { describe, expect, it } from 'vitest'; import { serializeError, serializeUnknownError, serializeUnknownForLog } from '../electron/utils/log-helpers'; describe('log helpers', () => { it('serializes Error instances with code and cause', () => { const cause = new Error('inner failure'); const error = new Error('outer failure') as Error & { code?: string; cause?: unknown }; error.code = 'E_TEST'; error.cause = cause; expect(serializeError(error)).toMatchObject({ name: 'Error', message: 'outer failure', code: 'E_TEST', cause: { name: 'Error', message: 'inner failure', }, }); }); it('normalizes string and object rejection values', () => { expect(serializeUnknownError('boom')).toEqual({ message: 'boom' }); expect(serializeUnknownError({ message: 'failed', code: 500 })).toEqual({ message: 'failed', code: 500, }); }); it('recursively serializes nested error values for structured logging', () => { const payload = serializeUnknownForLog({ task: 'bootstrap', errors: [new Error('bad dependency')], }); expect(payload).toEqual({ task: 'bootstrap', errors: [ expect.objectContaining({ name: 'Error', message: 'bad dependency', }), ], }); }); });