Each page targets one Factor::MESSAGES ID or one extraction edge case.
Crawl this directory and verify the corresponding row appears in
crawl_schema_blocks and crawl_messages.
| Page | Target ID | What it tests |
|---|---|---|
| schema-500-jsonld-parseerror.html | 500 | JSON-LD parse error (malformed body) |
| schema-501-microdata-bad-itemtype.html | 501 | Microdata itemtype is not a URI |
| schema-502-rdfa-bad-typeof.html | 502 | RDFa typeof attribute is empty |
| schema-503-unknown-type.html | 503 | @type not in Schema.org vocabulary (typo Prodcut) |
| schema-504-unknown-property.html | 504 | Property name not in Schema.org vocabulary (typo nam) |
| schema-505-property-wrong-type.html | 505 | Schema.org property used on wrong type (birthDate on Product) |
| schema-507-wrong-value-type.html | 507 | Wrong @type on a nested property (Article.author=Place) |
| schema-508-enum-invalid.html | 508 | MerchantReturnPolicy returnPolicyCategory not in allowed enum |
| schema-509-string-too-short.html | 509 | Dataset.description below minLength=50 |
| schema-510-string-too-long.html | 510 | Course.description above maxLength=60 |
| schema-511-pattern-mismatch.html | 511 | MerchantReturnPolicy applicableCountry contains lowercase code (violates ^[A-Z]{2}$) |
| schema-512-numeric-out-of-range.html | 512 | ListItem.position below minimum=1 |
| schema-514-cardinality-too-many.html | 514 | returnPolicyCountry above maxItems=50 (51 entries) |
| schema-516-conditional-failed.html | 516 | Event if/then violation (previousStartDate set without eventStatus=EventRescheduled) |
| schema-518-none-found.html | 518 | Plain HTML page with no structured-data markup |
| schema-519-orphan.html | 519 | JSON-LD object missing @type entirely |
| schema-format-violation.html | 511 (format) | Article with malformed datePublished — guards the format-keyword fix |
| schema-microdata-clean.html | — | Clean Microdata Person control (Layer A on this domain) |
| schema-rdfa-clean.html | — | Clean RDFa Person with body vocab control (Layer A on this domain) |
| schema-product-ok-fixed.html | — | Valid Product with numeric price (should produce zero schema_* issues) |
| schema-microdata-itemref.html | — | Microdata itemref pulling properties from elsewhere in DOM |
| schema-rdfa-prefix.html | — | RDFa with prefix attribute defining a CURIE mapping |
| schema-jsonld-graph-multi.html | — | JSON-LD @graph with 4 entities → 4 rows in crawl_schema_blocks |
| schema-jsonld-multi-script.html | — | 3 separate <script> tags → 3 rows in crawl_schema_blocks |
| schema-article-mixed-validity.html | — | Same feature, valid + invalid blocks → DAPI eligibility merge=false |
| schema-multi-format-product.html | — | Same Product expressed in JSON-LD + Microdata + RDFa → FE format filter activates |
| schema-513-cardinality-too-few.html | 513 | Empty itemListElement array (minItems=1) |
| schema-515-oneof-missing.html | 515 | Product missing all three of: offers / review / aggregateRating |
| schema-multi-feature-page.html | — | Product + Article + LocalBusiness + Organization → multi-feature eligibility cards |
| schema-fully-eligible-product.html | — | Product with all required + recommended → eligible=true (green) |
| schema-empty-jsonld.html | 519 | Empty / whitespace / contextless JSON-LD blocks → degenerate-input guard |