@@ -15,6 +15,7 @@ const Logs: React.FC = () => {
1515 < div className = "relative flex flex-col" >
1616 < div className = "flex" >
1717 < Button
18+ data-testid = "purge-logs-btn"
1819 onClick = { purgeLogs }
1920 variant = "destructive"
2021 className = "ml-auto"
@@ -29,39 +30,53 @@ const Logs: React.FC = () => {
2930 < span > Service</ span >
3031 < span > Message</ span >
3132 </ div >
32- < div className = "mt-1 flex flex-col font-mono text-sm" >
33- { logs . map ( ( { msg, time, serviceName } , i ) => {
34- const formattedLine = msg . trim ( )
35- return (
36- < div
37- key = { i }
38- className = { cn (
39- 'mt-0.5 grid cursor-pointer grid-cols-[200px_150px_1fr] items-start gap-x-2 whitespace-pre-wrap rounded-sm px-1 py-[2px] hover:bg-gray-100 dark:hover:bg-gray-700' ,
40- {
41- 'bg-red-100 hover:bg-red-200 dark:bg-red-800/70 dark:hover:bg-red-800/90' :
42- msg . toLowerCase ( ) . includes ( 'error' ) ,
43- 'bg-orange-100 hover:bg-orange-200 dark:bg-orange-500/60 dark:hover:bg-orange-500/70' :
44- msg . toLowerCase ( ) . includes ( 'warning' ) ,
45- } ,
46- ) }
47- >
48- < span className = "w-[200px] truncate" >
49- { format ( new Date ( time ) , 'MMM dd, HH:mm:ss.SS' ) }
50- </ span >
51- < Tooltip >
52- < TooltipTrigger className = "w-[150px] truncate" >
53- < span > { serviceName } </ span >
54- </ TooltipTrigger >
55- < TooltipContent >
56- < p > { serviceName } </ p >
57- </ TooltipContent >
58- </ Tooltip >
59- < span className = "border-l pl-2" >
60- { ansiToReact ( formattedLine ) }
61- </ span >
62- </ div >
63- )
64- } ) }
33+ < div
34+ className = "mt-1 flex flex-col font-mono text-sm"
35+ data-testid = "logs"
36+ >
37+ { logs . length > 0 ? (
38+ logs . map ( ( { msg, time, serviceName } , i ) => {
39+ const formattedLine = msg . trim ( )
40+ return (
41+ < div
42+ key = { i }
43+ className = { cn (
44+ 'mt-0.5 grid cursor-pointer grid-cols-[200px_150px_1fr] items-start gap-x-2 whitespace-pre-wrap rounded-sm px-1 py-[2px] hover:bg-gray-100 dark:hover:bg-gray-700' ,
45+ {
46+ 'bg-red-100 hover:bg-red-200 dark:bg-red-800/70 dark:hover:bg-red-800/90' :
47+ msg . toLowerCase ( ) . includes ( 'error' ) ,
48+ 'bg-orange-100 hover:bg-orange-200 dark:bg-orange-500/60 dark:hover:bg-orange-500/70' :
49+ msg . toLowerCase ( ) . includes ( 'warning' ) ,
50+ } ,
51+ ) }
52+ >
53+ < span className = "w-[200px] truncate" >
54+ { format ( new Date ( time ) , 'MMM dd, HH:mm:ss.SS' ) }
55+ </ span >
56+ < Tooltip >
57+ < TooltipTrigger className = "w-[150px] truncate" >
58+ < span data-testid = { `test-row${ i } -service` } >
59+ { serviceName }
60+ </ span >
61+ </ TooltipTrigger >
62+ < TooltipContent >
63+ < p > { serviceName } </ p >
64+ </ TooltipContent >
65+ </ Tooltip >
66+ < span
67+ className = "border-l pl-2"
68+ data-testid = { `test-row${ i } -msg` }
69+ >
70+ { ansiToReact ( formattedLine ) }
71+ </ span >
72+ </ div >
73+ )
74+ } )
75+ ) : (
76+ < div className = "mt-4 p-1 text-center font-body text-lg font-semibold tracking-wide text-gray-500 dark:text-gray-400" >
77+ No logs available
78+ </ div >
79+ ) }
6580 </ div >
6681 </ div >
6782 </ AppLayout >
0 commit comments