@@ -52,14 +52,19 @@ describe("AppSidebar viewer presence", () => {
5252 gatewayHarness . gateway ,
5353 createSessions ( "main" , [ "agent:main:main" , "agent:main:work" ] ) ,
5454 ) ;
55+ sidebar . connected = true ;
5556 const onNavigate = vi . fn ( ) ;
5657 sidebar . onNavigate = onNavigate ;
5758
5859 gatewayHarness . publishEvent ( "presence" , {
5960 presence : [
6061 {
6162 instanceId : "self-instance" ,
62- user : { id : "00-self" , name : "Self User" } ,
63+ user : {
64+ id : "00-self" ,
65+ name : "Self User" ,
66+ avatarUrl : "/api/users/00-self/avatar?v=1" ,
67+ } ,
6368 watchedSessions : [ "agent:main:work" ] ,
6469 } ,
6570 {
@@ -95,6 +100,14 @@ describe("AppSidebar viewer presence", () => {
95100 ] ,
96101 } ) ;
97102 await sidebar . updateComplete ;
103+ gatewayHarness . publish ( {
104+ selfUser : {
105+ id : "00-self" ,
106+ name : "Self User" ,
107+ avatarUrl : "/api/users/00-self/avatar?v=1" ,
108+ } ,
109+ } ) ;
110+ await sidebar . updateComplete ;
98111
99112 const sessionFacepile = sidebar . querySelector < HTMLElement > (
100113 '[data-session-key="agent:main:work"] openclaw-viewer-facepile' ,
@@ -143,6 +156,24 @@ describe("AppSidebar viewer presence", () => {
143156 expect ( onNavigate ) . toHaveBeenCalledWith ( "profile" , {
144157 hash : "#settings-profile-identity" ,
145158 } ) ;
159+
160+ const avatar = identityChip ?. querySelector < HTMLImageElement > ( "openclaw-viewer-avatar img" ) ;
161+ expect ( avatar ?. getAttribute ( "src" ) ) . toBe ( "/api/users/00-self/avatar?v=1" ) ;
162+ gatewayHarness . gateway . updateSelfUser ?.( {
163+ name : "Augusta Ada" ,
164+ avatarUrl : "/api/users/00-self/avatar?v=4" ,
165+ } ) ;
166+ await sidebar . updateComplete ;
167+
168+ // Profile mutations update gateway state directly; no presence event follows them.
169+ expect ( identityChip ?. querySelector ( ".sidebar-footer-bar__identity-name" ) ?. textContent ) . toBe (
170+ "Augusta Ada" ,
171+ ) ;
172+ expect ( avatar ?. getAttribute ( "src" ) ) . toBe ( "/api/users/00-self/avatar?v=4" ) ;
173+
174+ sidebar . connected = false ;
175+ await sidebar . updateComplete ;
176+ expect ( sidebar . querySelector ( ".sidebar-footer-bar__identity" ) ) . toBeNull ( ) ;
146177 } ) ;
147178
148179 it ( "leaves the footer identity chip absent for an unidentified connection" , async ( ) => {
0 commit comments