{
  "product": "Yoast SEO Premium",
  "tested_version": "28.7",
  "started_at_utc": "2026-10-16T10:46:43+00:00",
  "completed_at_utc": "2026-10-16T10:46:43+00:00",
  "fresh_request_verified_at_utc": "2026-10-16T10:49:32+00:00",
  "http_completed_at_utc": "2026-10-16T10:55:49.419430+00:00",
  "redirect_configuration_updated_at_utc": "2026-10-16T10:55:46+00:00",
  "environment": {
    "wordpress": "7.1.3",
    "php": "8.4.26",
    "database_version": "8.4.11",
    "theme": "Twenty Twenty-Five",
    "theme_version": "1.5",
    "memory_limit": "-1",
    "blog_public": "1",
    "external_http_and_mail": "Blocked by private lab",
    "setup_blog_public": "0",
    "lab_privacy": "Outer Basic Auth and noindex/nofollow/noarchive HTTP headers remain enforced on HTML, sitemap and media.",
    "permalink_structure": "/%postname%/"
  },
  "tests": [
    {
      "name": "Saved SEO title, description and custom canonical are presented by Yoast",
      "passed": true,
      "observed": {
        "page_id": 6,
        "expected_title": "Project planning toolkit | Yoast lab",
        "actual_title": "Project planning toolkit | Yoast lab",
        "expected_description": "Synthetic description used to inspect the actual Yoast metadata output.",
        "actual_description": "Synthetic description used to inspect the actual Yoast metadata output.",
        "expected_canonical": "https://example.test/yoast-canonical-destination/",
        "actual_canonical": "https://example.test/yoast-canonical-destination/",
        "stored_canonical": "https://example.test/yoast-canonical-destination/",
        "presented_robots": {
          "index": "index",
          "follow": "follow",
          "max-snippet": "max-snippet:-1",
          "max-image-preview": "max-image-preview:large",
          "max-video-preview": "max-video-preview:-1"
        }
      }
    },
    {
      "name": "Explicit page noindex metadata is stored and presented",
      "passed": true,
      "observed": {
        "page_id": 7,
        "stored_directive": "1",
        "presented_robots": {
          "index": "noindex",
          "follow": "follow",
          "max-snippet": "max-snippet:-1",
          "max-image-preview": "max-image-preview:large",
          "max-video-preview": "max-video-preview:-1"
        },
        "limitation": "The entire private lab also sends noindex headers; this is not a claim about search engine indexing."
      }
    },
    {
      "name": "Page sitemap provider includes the probe and excludes the noindex page",
      "passed": true,
      "observed": {
        "probe_url": "https://example.test/yoast-sitemap-probe/",
        "noindex_url": "https://example.test/yoast-noindex-test/",
        "provider_page_urls": [
          "https://example.test/",
          "https://example.test/sample-page/",
          "https://example.test/yoast-canonical-destination/",
          "https://example.test/yoast-sitemap-probe/"
        ],
        "scope": "Native page provider in fresh WP request"
      }
    },
    {
      "name": "Premium redirect manager stores a permanent redirect",
      "passed": true,
      "observed": {
        "created": true,
        "origin": "yoast-old-resource",
        "target": "yoast-sitemap-probe",
        "status": 301,
        "scope": "Storage confirmed here; actual HTTP301 and Location header require the separate HTTP verifier.",
        "initial_absolute_target_normalization": "An absolute same-site URL was normalized to wp/yoast-sitemap-probe; the admin preview link prefixed the /wp subdirectory again, while the runtime 301 was correct.",
        "configured_target_mode": "Home-relative /yoast-sitemap-probe/ avoids the doubled-subdirectory admin preview.",
        "expected_admin_preview_url": "https://example.test/yoast-sitemap-probe"
      }
    }
  ],
  "http_checks": [
    {
      "name": "Real page head contains the custom SEO title, description and canonical",
      "passed": true,
      "observed": {
        "status": 200,
        "title": "Project planning toolkit | Yoast lab",
        "description": "Synthetic description used to inspect the actual Yoast metadata output.",
        "canonical": "https://example.test/yoast-canonical-destination/"
      }
    },
    {
      "name": "Real noindex fixture response includes a noindex robots meta value",
      "passed": true,
      "observed": {
        "status": 200,
        "robots": "noindex, follow",
        "lab_x_robots_tag": "noindex, nofollow, noarchive",
        "limit": "The whole lab additionally has noindex response headers."
      }
    },
    {
      "name": "Real page sitemap XML includes the probe and excludes the noindex fixture",
      "passed": true,
      "observed": {
        "status": 200,
        "urls": [
          "https://example.test/",
          "https://example.test/sample-page/",
          "https://example.test/yoast-canonical-destination/",
          "https://example.test/yoast-sitemap-probe/"
        ],
        "xml_parse_error": null
      }
    },
    {
      "name": "Premium redirect returns HTTP301 and the selected destination",
      "passed": true,
      "observed": {
        "status": 301,
        "location": "https://example.test/yoast-sitemap-probe/",
        "expected": "https://example.test/yoast-sitemap-probe/",
        "redirect_by": "Yoast SEO Premium"
      }
    }
  ],
  "all_fixture_checks_passed": true,
  "all_http_checks_passed": true,
  "untested": [
    "Ranking or traffic improvements",
    "Google Search Console submission and indexing",
    "AI features and account-backed services",
    "External integrations",
    "All add-on bundle compatibility"
  ],
  "lab_context_change": "Global WordPress search visibility was enabled only for per-page canonical/noindex testing; private HTTP auth/noindex protection stayed in place. A narrow private Nginx alias fallback fix enabled pretty front-controller URLs and preserved query parameters.",
  "url_redaction": "The private lab hostname and subdirectory are replaced with https://example.test in this public record; observed path relationships and response results are retained."
}
