[ { "name": "consistent", "pages": [ { "url": "https://example.com/en/service/", "status": 200, "canonical": "https://example.com/en/service/", "alternates": { "en": "https://example.com/en/service/", "fr": "https://example.com/fr/service/" } }, { "url": "https://example.com/fr/service/", "status": 200, "canonical": "https://example.com/fr/service/", "alternates": { "en": "https://example.com/en/service/", "fr": "https://example.com/fr/service/" } } ], "expected": [] }, { "name": "cross-language-canonical", "pages": [ { "url": "https://example.com/en/service/", "status": 200, "canonical": "https://example.com/en/service/", "alternates": { "en": "https://example.com/en/service/", "fr": "https://example.com/fr/service/" } }, { "url": "https://example.com/fr/service/", "status": 200, "canonical": "https://example.com/en/service/", "alternates": { "en": "https://example.com/en/service/", "fr": "https://example.com/fr/service/" } } ], "expected": [ "canonical mismatch: https://example.com/fr/service/" ] }, { "name": "missing-return", "pages": [ { "url": "https://example.com/en/service/", "status": 200, "canonical": "https://example.com/en/service/", "alternates": { "en": "https://example.com/en/service/", "fr": "https://example.com/fr/service/" } }, { "url": "https://example.com/fr/service/", "status": 200, "canonical": "https://example.com/fr/service/", "alternates": { "fr": "https://example.com/fr/service/" } } ], "expected": [ "missing alternate en: https://example.com/fr/service/" ] }, { "name": "redirect", "pages": [ { "url": "https://example.com/en/service/", "status": 200, "canonical": "https://example.com/en/service/", "alternates": { "en": "https://example.com/en/service/", "fr": "https://example.com/fr/service/" } }, { "url": "https://example.com/fr/service/", "status": 302, "canonical": "https://example.com/fr/service/", "alternates": { "en": "https://example.com/en/service/", "fr": "https://example.com/fr/service/" } } ], "expected": [ "not directly available: https://example.com/fr/service/" ] } ]