@@ -15,20 +15,18 @@ def test_renders_image_avatar_with_src
1515 def test_renders_fallback_when_src_is_nil
1616 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : nil , alt : "OpenProject Admin" ) )
1717
18- # Should render avatar-fallback element wrapping a svg[role=" img"]
18+ # Should render avatar-fallback element wrapping an img with base64 SVG data URI
1919 assert_selector ( "avatar-fallback[data-alt-text='OpenProject Admin']" ) do
20- assert_selector ( "svg .avatar[role='img'][aria-label='OpenProject Admin ']" )
20+ assert_selector ( "img .avatar[src^='data:image/svg+xml;base64, ']" )
2121 end
22- refute_selector ( "img" )
2322 end
2423
2524 def test_renders_fallback_when_src_is_blank
2625 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : "" , alt : "OpenProject Admin" ) )
2726
2827 assert_selector ( "avatar-fallback[data-alt-text='OpenProject Admin']" ) do
29- assert_selector ( "svg .avatar[role='img ']" )
28+ assert_selector ( "img .avatar[src^='data:image/svg+xml;base64, ']" )
3029 end
31- refute_selector ( "img" )
3230 end
3331
3432 def test_defaults_to_size_20
@@ -40,7 +38,7 @@ def test_defaults_to_size_20
4038 def test_fallback_defaults_to_size_20
4139 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : nil , alt : "Test User" ) )
4240
43- assert_selector ( "svg .avatar.avatar-20 " )
41+ assert_selector ( "img .avatar[src^='data:image/svg+xml;base64,'] " )
4442 end
4543
4644 def test_falls_back_when_size_isn_t_valid
@@ -60,7 +58,7 @@ def test_defaults_to_circle_avatar
6058 def test_fallback_defaults_to_circle_avatar
6159 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : nil , alt : "Test User" ) )
6260
63- assert_selector ( "svg .avatar.circle" )
61+ assert_selector ( "img .avatar.circle[src^='data:image/svg+xml;base64,'] " )
6462 end
6563
6664 def test_adds_small_modifier_when_size_is_less_than_threshold
@@ -72,7 +70,7 @@ def test_adds_small_modifier_when_size_is_less_than_threshold
7270 def test_fallback_adds_small_modifier_when_size_is_less_than_threshold
7371 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : nil , alt : "Test User" , size : Primer ::OpenProject ::AvatarWithFallback ::SMALL_THRESHOLD - 4 ) )
7472
75- assert_selector ( "svg .avatar.avatar-small" )
73+ assert_selector ( "img .avatar.avatar-small[src^='data:image/svg+xml;base64,'] " )
7674 end
7775
7876 def test_sets_size_height_and_width
@@ -84,7 +82,8 @@ def test_sets_size_height_and_width
8482 def test_fallback_sets_correct_size_class
8583 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : nil , alt : "Test User" , size : 40 ) )
8684
87- assert_selector ( "svg.avatar.avatar-40" )
85+ # Size is set via attributes, not a dedicated class
86+ assert_selector ( "img.avatar[size='40'][height='40'][width='40'][src^='data:image/svg+xml;base64,']" )
8887 end
8988
9089 def test_squared_avatar
@@ -97,7 +96,7 @@ def test_squared_avatar
9796 def test_fallback_squared_avatar
9897 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : nil , alt : "Test User" , shape : :square ) )
9998
100- assert_selector ( "svg .avatar" )
99+ assert_selector ( "img .avatar[src^='data:image/svg+xml;base64,'] " )
101100 refute_selector ( ".circle" )
102101 end
103102
@@ -114,9 +113,10 @@ def test_renders_link_wrapper
114113 def test_fallback_renders_link_wrapper
115114 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : nil , alt : "Test User" , href : "#test" ) )
116115
116+ # When href is provided, the avatar class is on the <a> tag, not the <img>
117117 assert_selector ( "avatar-fallback" ) do
118- assert_selector ( "a[href='#test']" ) do
119- assert_selector ( "svg.avatar[role='img ']" )
118+ assert_selector ( "a.avatar [href='#test']" ) do
119+ assert_selector ( "img[src^='data:image/svg+xml;base64, ']" )
120120 end
121121 end
122122 end
@@ -126,7 +126,7 @@ def test_fallback_with_unique_id_in_data_attribute
126126
127127 # Should have data attributes for client-side processing
128128 assert_selector ( "avatar-fallback[data-unique-id='123'][data-alt-text='Test User']" ) do
129- assert_selector ( "svg .avatar[role='img ']" )
129+ assert_selector ( "img .avatar[src^='data:image/svg+xml;base64, ']" )
130130 end
131131 end
132132
@@ -135,7 +135,7 @@ def test_fallback_without_unique_id
135135
136136 # Should still render, just without unique_id data attribute
137137 assert_selector ( "avatar-fallback[data-alt-text='Test User']" ) do
138- assert_selector ( "svg .avatar[role='img ']" )
138+ assert_selector ( "img .avatar[src^='data:image/svg+xml;base64, ']" )
139139 end
140140 end
141141
@@ -148,7 +148,7 @@ def test_adds_custom_classes
148148 def test_fallback_adds_custom_classes
149149 render_inline ( Primer ::OpenProject ::AvatarWithFallback . new ( src : nil , alt : "Test User" , classes : "custom-class" ) )
150150
151- assert_selector ( "svg .avatar.custom-class" )
151+ assert_selector ( "img .avatar.custom-class[src^='data:image/svg+xml;base64,'] " )
152152 end
153153
154154 def test_raises_when_both_src_and_alt_are_missing
0 commit comments