Compare commits

..

2 Commits

Author SHA1 Message Date
d75a83ccf2 2.2.14
All checks were successful
Build & Deploy / 🔍 Prepare (push) Successful in 6s
Build & Deploy / 🧪 QA (push) Successful in 2m7s
Build & Deploy / 🏗️ Build (push) Successful in 5m15s
Build & Deploy / 🚀 Deploy (push) Successful in 24s
Build & Deploy / 🧪 Post-Deploy Verification (push) Successful in 5m12s
Build & Deploy / 🔔 Notify (push) Successful in 3s
2026-03-17 10:21:32 +01:00
5991bd8392 test(e2e): support dynamic slug resolution for blog posts in locale smoke test 2026-03-17 10:21:30 +01:00
2 changed files with 15 additions and 5 deletions

View File

@@ -139,7 +139,7 @@
"prepare": "husky", "prepare": "husky",
"preinstall": "npx only-allow pnpm" "preinstall": "npx only-allow pnpm"
}, },
"version": "2.2.13", "version": "2.2.14",
"pnpm": { "pnpm": {
"onlyBuiltDependencies": [ "onlyBuiltDependencies": [
"@parcel/watcher", "@parcel/watcher",

View File

@@ -38,11 +38,21 @@ function getExpectedTranslation(
sourcePath: string, sourcePath: string,
sourceLocale: string, sourceLocale: string,
targetLocale: string, targetLocale: string,
): string { alternates: { hreflang: string; href: string }[],
): string | null {
const segments = sourcePath.split('/').filter(Boolean); const segments = sourcePath.split('/').filter(Boolean);
// First segment is locale
segments[0] = targetLocale; segments[0] = targetLocale;
// Blog posts have dynamic slugs. If it's a blog post, trust the alternate tag
// if the href is present in the sitemap.
// The Smoke Test's primary job is ensuring the alternate links point to valid pages.
if (segments[1] === (targetLocale === 'de' ? 'blog' : 'blog') && segments.length > 2) {
const altLink = alternates.find((a) => a.hreflang === targetLocale);
if (altLink) {
return new URL(altLink.href).pathname;
}
}
const map = sourceLocale === 'de' ? SLUG_MAP : REVERSE_SLUG_MAP; const map = sourceLocale === 'de' ? SLUG_MAP : REVERSE_SLUG_MAP;
return ( return (
@@ -50,7 +60,7 @@ function getExpectedTranslation(
segments segments
.map((seg, i) => { .map((seg, i) => {
if (i === 0) return seg; // locale if (i === 0) return seg; // locale
return map[seg] || seg; // translate or keep (product names like n2x2y stay the same) return map[seg] || seg; // translate or keep
}) })
.join('/') .join('/')
); );
@@ -118,7 +128,7 @@ async function main() {
if (alt.hreflang === locale) continue; // Same locale, skip if (alt.hreflang === locale) continue; // Same locale, skip
// 1. Check slug translation is correct // 1. Check slug translation is correct
const expectedPath = getExpectedTranslation(path, locale, alt.hreflang); const expectedPath = getExpectedTranslation(path, locale, alt.hreflang, alternates);
const actualPath = new URL(alt.href).pathname; const actualPath = new URL(alt.href).pathname;
if (actualPath !== expectedPath) { if (actualPath !== expectedPath) {