fix(blog): preserve newlines in Lexical text nodes as <br> for proper list rendering
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 7s
Build & Deploy / 🧪 QA (push) Successful in 2m28s
Build & Deploy / 🏗️ Build (push) Successful in 6m15s
Build & Deploy / 🚀 Deploy (push) Failing after 7s
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 1s
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 7s
Build & Deploy / 🧪 QA (push) Successful in 2m28s
Build & Deploy / 🏗️ Build (push) Successful in 6m15s
Build & Deploy / 🚀 Deploy (push) Failing after 7s
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 1s
test(og): use real blog slug from sitemap instead of hardcoded hello-world chore(release): bump version to 2.2.10
This commit is contained in:
@@ -76,19 +76,31 @@ describe('OG Image Generation', () => {
|
||||
await verifyImageResponse(response);
|
||||
}, 30000);
|
||||
|
||||
it('should generate dynamic blog post OG image', async ({ skip }) => {
|
||||
it('should generate dynamic blog post OG image with featured photo', async ({ skip }) => {
|
||||
if (!isServerUp) skip();
|
||||
// Assuming 'hello-world' or a newly created post slug.
|
||||
// If it 404s, it still tests the routing, though 200 is expected for an actual post.
|
||||
const url = `${BASE_URL}/de/blog/hello-world/opengraph-image`;
|
||||
const response = await fetch(url);
|
||||
// Even if the post "hello-world" doesn't exist and returns 404 in some environments,
|
||||
// we should at least check it doesn't 500. We'll accept 200 or 404 as valid "working" states
|
||||
// vs a 500 compilation/satori error.
|
||||
expect([200, 404]).toContain(response.status);
|
||||
|
||||
if (response.status === 200) {
|
||||
await verifyImageResponse(response);
|
||||
// Discover a real blog slug from the sitemap
|
||||
const sitemapRes = await fetch(`${BASE_URL}/sitemap.xml`);
|
||||
const sitemapXml = await sitemapRes.text();
|
||||
const blogMatch = sitemapXml.match(/<loc>[^<]*\/de\/blog\/([^<]+)<\/loc>/);
|
||||
const slug = blogMatch ? blogMatch[1] : null;
|
||||
|
||||
if (!slug) {
|
||||
console.log('⚠️ No blog post found in sitemap, skipping dynamic OG test');
|
||||
skip();
|
||||
return;
|
||||
}
|
||||
|
||||
const url = `${BASE_URL}/de/blog/${slug}/opengraph-image`;
|
||||
const response = await fetch(url);
|
||||
await verifyImageResponse(response);
|
||||
|
||||
// Verify the image is substantially large (>50KB) to confirm it actually
|
||||
// contains the featured photo and isn't just a tiny fallback/text-only image
|
||||
const buffer = await response.clone().arrayBuffer();
|
||||
expect(
|
||||
buffer.byteLength,
|
||||
`OG image for "${slug}" is suspiciously small (${buffer.byteLength} bytes) — likely missing featured photo`,
|
||||
).toBeGreaterThan(50000);
|
||||
}, 30000);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user