| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- /**
 -  * Debug and Preview Panel Width Persistence Tests
 -  * Tests for GitHub issue #22745: Panel width persistence bug fix
 -  */
 - 
 - import '@testing-library/jest-dom'
 - 
 - type PanelWidthSource = 'user' | 'system'
 - 
 - // Mock localStorage for testing
 - const createMockLocalStorage = () => {
 -   const storage: Record<string, string> = {}
 -   return {
 -     getItem: jest.fn((key: string) => storage[key] || null),
 -     setItem: jest.fn((key: string, value: string) => {
 -       storage[key] = value
 -     }),
 -     removeItem: jest.fn((key: string) => {
 -       delete storage[key]
 -     }),
 -     clear: jest.fn(() => {
 -       Object.keys(storage).forEach(key => delete storage[key])
 -     }),
 -     get storage() { return { ...storage } },
 -   }
 - }
 - 
 - // Preview panel width logic
 - const createPreviewPanelManager = () => {
 -   const storageKey = 'debug-and-preview-panel-width'
 - 
 -   return {
 -     updateWidth: (width: number, source: PanelWidthSource = 'user') => {
 -       const newValue = Math.max(400, Math.min(width, 800))
 -       if (source === 'user')
 -         localStorage.setItem(storageKey, `${newValue}`)
 - 
 -       return newValue
 -     },
 -     getStoredWidth: () => {
 -       const stored = localStorage.getItem(storageKey)
 -       return stored ? Number.parseFloat(stored) : 400
 -     },
 -   }
 - }
 - 
 - describe('Debug and Preview Panel Width Persistence', () => {
 -   let mockLocalStorage: ReturnType<typeof createMockLocalStorage>
 - 
 -   beforeEach(() => {
 -     mockLocalStorage = createMockLocalStorage()
 -     Object.defineProperty(globalThis, 'localStorage', {
 -       value: mockLocalStorage,
 -       writable: true,
 -     })
 -   })
 - 
 -   afterEach(() => {
 -     jest.clearAllMocks()
 -   })
 - 
 -   describe('Preview Panel Width Management', () => {
 -     it('should save user resize to localStorage', () => {
 -       const manager = createPreviewPanelManager()
 - 
 -       const result = manager.updateWidth(450, 'user')
 - 
 -       expect(result).toBe(450)
 -       expect(localStorage.setItem).toHaveBeenCalledWith('debug-and-preview-panel-width', '450')
 -     })
 - 
 -     it('should not save system compression to localStorage', () => {
 -       const manager = createPreviewPanelManager()
 - 
 -       const result = manager.updateWidth(300, 'system')
 - 
 -       expect(result).toBe(400) // Respects minimum width
 -       expect(localStorage.setItem).not.toHaveBeenCalled()
 -     })
 - 
 -     it('should behave identically to Node Panel', () => {
 -       const manager = createPreviewPanelManager()
 - 
 -       // Both user and system operations should behave consistently
 -       manager.updateWidth(500, 'user')
 -       expect(localStorage.setItem).toHaveBeenCalledWith('debug-and-preview-panel-width', '500')
 - 
 -       manager.updateWidth(200, 'system')
 -       expect(localStorage.getItem('debug-and-preview-panel-width')).toBe('500')
 -     })
 -   })
 - 
 -   describe('Dual Panel Scenario', () => {
 -     it('should maintain independence from Node Panel', () => {
 -       localStorage.setItem('workflow-node-panel-width', '600')
 -       localStorage.setItem('debug-and-preview-panel-width', '450')
 - 
 -       const manager = createPreviewPanelManager()
 - 
 -       // System compresses preview panel
 -       manager.updateWidth(200, 'system')
 - 
 -       // Only preview panel storage key should be unaffected
 -       expect(localStorage.getItem('debug-and-preview-panel-width')).toBe('450')
 -       expect(localStorage.getItem('workflow-node-panel-width')).toBe('600')
 -     })
 - 
 -     it('should handle F12 scenario consistently', () => {
 -       const manager = createPreviewPanelManager()
 - 
 -       // User sets preference
 -       manager.updateWidth(500, 'user')
 -       expect(localStorage.getItem('debug-and-preview-panel-width')).toBe('500')
 - 
 -       // F12 opens causing viewport compression
 -       manager.updateWidth(180, 'system')
 - 
 -       // User preference preserved
 -       expect(localStorage.getItem('debug-and-preview-panel-width')).toBe('500')
 -     })
 -   })
 - 
 -   describe('Consistency with Node Panel', () => {
 -     it('should enforce same minimum width rules', () => {
 -       const manager = createPreviewPanelManager()
 - 
 -       // Same 400px minimum as Node Panel
 -       const result = manager.updateWidth(300, 'user')
 -       expect(result).toBe(400)
 -       expect(localStorage.setItem).toHaveBeenCalledWith('debug-and-preview-panel-width', '400')
 -     })
 - 
 -     it('should use same source parameter pattern', () => {
 -       const manager = createPreviewPanelManager()
 - 
 -       // Default to 'user' when source not specified
 -       manager.updateWidth(500)
 -       expect(localStorage.setItem).toHaveBeenCalledWith('debug-and-preview-panel-width', '500')
 - 
 -       // Explicit 'system' source
 -       manager.updateWidth(300, 'system')
 -       expect(localStorage.setItem).toHaveBeenCalledTimes(1) // Only user call
 -     })
 -   })
 - })
 
 
  |