@@ -32,10 +32,14 @@ export const Footer = () => {
3232 >
3333 < div className = "container mx-auto px-4 lg:px-8 py-12" >
3434 { /* Main grid */ }
35- < div className = "grid grid-cols-1 md:grid-cols-3 gap-10 md:gap-8 mb-10" >
35+ < div className = "grid grid-cols-1 md:grid-cols-[4fr_3fr_3fr] gap-10 md:gap-8 mb-10" >
3636 { /* Left — Brand */ }
37- < div className = "flex flex-col gap-4 items-center md:items-start" >
37+ < div
38+ data-testid = "footer-brand"
39+ className = "flex flex-col gap-4 items-center md:items-start"
40+ >
3841 < Link
42+ data-testid = "footer-brand-link"
3943 target = "_blank"
4044 href = "https://semianalysis.com/"
4145 className = "inline-block w-35 h-14.5"
@@ -55,17 +59,21 @@ export const Footer = () => {
5559 className = "dark:hidden"
5660 />
5761 </ Link >
58- < p className = "text-sm text-muted-foreground max-w-xs" >
59- Continuous open-source inference benchmarks. Transparent, real-world GPU performance
60- data for the ML community.
62+ < p
63+ data-testid = "footer-brand-description"
64+ className = "text-sm text-muted-foreground max-w-xs"
65+ >
66+ Continuous open-source inference benchmarking. Real-world, reproducible, auditable
67+ performance data you can trust.
6168 </ p >
6269 </ div >
6370
6471 { /* Center — Links */ }
65- < div className = "grid grid-cols-3 gap-6" >
66- < div className = "flex flex-col gap-2.5" >
72+ < div data-testid = "footer-links" className = "grid grid-cols-3 gap-6" >
73+ < div data-testid = "footer-links-semianalysis" className = "flex flex-col gap-2.5" >
6774 < span className = "text-sm font-medium text-foreground" > SemiAnalysis</ span >
6875 < a
76+ data-testid = "footer-link-main-site"
6977 href = "https://semianalysis.com"
7078 target = "_blank"
7179 rel = "noopener noreferrer"
@@ -74,6 +82,7 @@ export const Footer = () => {
7482 Main Site
7583 </ a >
7684 < a
85+ data-testid = "footer-link-newsletter"
7786 href = "https://newsletter.semianalysis.com"
7887 target = "_blank"
7988 rel = "noopener noreferrer"
@@ -82,6 +91,7 @@ export const Footer = () => {
8291 Newsletter
8392 </ a >
8493 < a
94+ data-testid = "footer-link-about"
8595 href = "https://semianalysis.com/about/"
8696 target = "_blank"
8797 rel = "noopener noreferrer"
@@ -90,9 +100,10 @@ export const Footer = () => {
90100 About
91101 </ a >
92102 </ div >
93- < div className = "flex flex-col gap-2.5" >
103+ < div data-testid = "footer-links-legal" className = "flex flex-col gap-2.5" >
94104 < span className = "text-sm font-medium text-foreground" > Legal</ span >
95105 < a
106+ data-testid = "footer-link-privacy"
96107 href = "https://semianalysis.com/privacy-policy/"
97108 target = "_blank"
98109 rel = "noopener noreferrer"
@@ -101,6 +112,7 @@ export const Footer = () => {
101112 Privacy Policy
102113 </ a >
103114 < a
115+ data-testid = "footer-link-cookies"
104116 href = "https://semianalysis.com/cookie-policy/"
105117 target = "_blank"
106118 rel = "noopener noreferrer"
@@ -109,9 +121,10 @@ export const Footer = () => {
109121 Cookie Policy
110122 </ a >
111123 </ div >
112- < div className = "flex flex-col gap-2.5" >
124+ < div data-testid = "footer-links-contribute" className = "flex flex-col gap-2.5" >
113125 < span className = "text-sm font-medium text-foreground" > Contribute</ span >
114126 < a
127+ data-testid = "footer-link-benchmarks"
115128 href = "https://github.com/SemiAnalysisAI/InferenceX"
116129 target = "_blank"
117130 rel = "noopener noreferrer"
@@ -120,6 +133,7 @@ export const Footer = () => {
120133 Benchmarks
121134 </ a >
122135 < a
136+ data-testid = "footer-link-frontend"
123137 href = "https://github.com/SemiAnalysisAI/InferenceX-app"
124138 target = "_blank"
125139 rel = "noopener noreferrer"
@@ -131,8 +145,8 @@ export const Footer = () => {
131145 </ div >
132146
133147 { /* Right — CTA + Social */ }
134- < div className = "flex flex-col gap-4 md:items-end" >
135- < div className = "flex items-center gap-1.5" >
148+ < div data-testid = "footer-cta" className = "flex flex-col gap-4 md:items-end" >
149+ < div data-testid = "footer-social-buttons" className = "flex items-center gap-1.5" >
136150 < div className = "rounded-md bg-background/80 w-fit" >
137151 < StarButton />
138152 </ div >
@@ -144,13 +158,17 @@ export const Footer = () => {
144158 </ div >
145159 </ div >
146160 < p className = "text-sm text-muted-foreground md:text-right max-w-xs" >
147- If this data helps your work, star us or share with your network.
161+ If this data helps your work, consider starring us on GitHub or sharing with your
162+ network.
148163 </ p >
149164 </ div >
150165 </ div >
151166
152167 { /* Bottom bar */ }
153- < div className = "border-t border-border/40 pt-6 flex flex-col md:flex-row items-center justify-between gap-4" >
168+ < div
169+ data-testid = "footer-bottom-bar"
170+ className = "border-t border-border/40 pt-6 flex flex-col md:flex-row items-center justify-between gap-4"
171+ >
154172 < p data-testid = "footer-copyright" className = "text-xs text-muted-foreground" >
155173 © { new Date ( ) . getFullYear ( ) } semianalysis.com. All rights reserved.
156174 </ p >
0 commit comments