diff --git a/packages/app/cypress/e2e/blog.cy.ts b/packages/app/cypress/e2e/blog.cy.ts index f8f8a523..4c70fecf 100644 --- a/packages/app/cypress/e2e/blog.cy.ts +++ b/packages/app/cypress/e2e/blog.cy.ts @@ -49,4 +49,20 @@ describe('Blog', () => { cy.get('a[href="/blog"]').should('exist'); }); }); + + describe('Inline code styling', () => { + before(() => { + cy.visit('/blog/b200-glm5-nvfp4-vs-h200-fp8-3-6x-perf-per-dollar'); + }); + + it('does not render generated backticks around inline code', () => { + cy.contains('article.prose code', 'zai-org/GLM-5-FP8') + .first() + .should(($code) => { + expect($code.text()).to.equal('zai-org/GLM-5-FP8'); + expect(getComputedStyle($code[0], '::before').content).to.equal('none'); + expect(getComputedStyle($code[0], '::after').content).to.equal('none'); + }); + }); + }); }); diff --git a/packages/app/cypress/e2e/compare-per-dollar-table.cy.ts b/packages/app/cypress/e2e/compare-per-dollar-table.cy.ts index db48142d..e21a0baa 100644 --- a/packages/app/cypress/e2e/compare-per-dollar-table.cy.ts +++ b/packages/app/cypress/e2e/compare-per-dollar-table.cy.ts @@ -58,6 +58,19 @@ describe('Compare-per-dollar slug page — slimmed table + cross-link', () => { it('uses "Performance per Dollar" framing in the page header', () => { cy.contains('Performance per Dollar').should('be.visible'); }); + + it('renders an indexable comparison PNG with descriptive alt text', () => { + cy.get('[data-testid="compare-per-dollar-indexed-image"] img') + .should('be.visible') + .and('have.attr', 'src') + .and( + 'match', + /\/compare-per-dollar\/deepseek-r1-gb200-vs-h100\/performance-per-dollar\.png$/u, + ); + cy.get('[data-testid="compare-per-dollar-indexed-image"] img') + .should('have.attr', 'alt') + .and('contain', 'cost per million tokens at matched interactivity levels'); + }); }); describe('Compare slug page — cross-link to per-dollar view', () => { diff --git a/packages/app/src/app/compare-per-dollar/[slug]/page-client.tsx b/packages/app/src/app/compare-per-dollar/[slug]/page-client.tsx index f3c9a27b..b6ee7550 100644 --- a/packages/app/src/app/compare-per-dollar/[slug]/page-client.tsx +++ b/packages/app/src/app/compare-per-dollar/[slug]/page-client.tsx @@ -48,6 +48,8 @@ interface ComparePerDollarPageClientProps { * header so readers can audit the pricing assumptions. */ aCostPerGpuHr: number; bCostPerGpuHr: number; + /** Crawlable data graphic generated for the canonical default comparison. */ + heroImageSrc: string; } /** Only show Cost + Concurrency in the interpolated table — the rest of the @@ -98,6 +100,7 @@ export default function ComparePerDollarPageClient({ bArch, aCostPerGpuHr, bCostPerGpuHr, + heroImageSrc, }: ComparePerDollarPageClientProps) { useEffect(() => { track('compare_per_dollar_page_view', { gpu_a: a, gpu_b: b, default_model: defaultModel }); @@ -121,7 +124,7 @@ export default function ComparePerDollarPageClient({ initialYAxisMetric={PER_DOLLAR_DEFAULT_Y_AXIS} >
+
Cost per million tokens of {aLabel} ({aVendor} {aArch}) versus{' '} {bLabel} ({bVendor} {bArch}) on {modelLabel}. Owning-hyperscaler TCO normalized by output tokens — performance per dollar across @@ -143,7 +146,7 @@ export default function ComparePerDollarPageClient({
{narrative.length > 0 && (GPU pricing (owning hyperscaler): {aLabel}{' '} @@ -195,6 +198,24 @@ export default function ComparePerDollarPageClient({
+