{
  "schemaVersion": 1,
  "generatedBy": "generation/forms_p7.py",
  "note": "SAMPLE conformance checklist for a form extractor, keyed to the P7 fixtures in this catalog.",
  "cases": [
    {
      "id": "C01",
      "fixture": "required-constraint-matrix.html",
      "assert": "11 fields are found and 8 of them are mandatory"
    },
    {
      "id": "C02",
      "fixture": "pattern-constraint-matrix.html",
      "assert": "every pattern is read verbatim, with no delimiters added or anchors stripped"
    },
    {
      "id": "C03",
      "fixture": "numeric-range-step-matrix.html",
      "assert": "min, max and step survive as numbers on the numeric controls and as strings on the temporal ones"
    },
    {
      "id": "C04",
      "fixture": "input-types-choice.html",
      "assert": "the prompt row is not reported as a choice, and option values are kept where they differ from labels"
    },
    {
      "id": "C05",
      "fixture": "form-buttons-and-controls.html",
      "assert": "exactly 2 fields are reported; the four button-shaped inputs are not fields"
    },
    {
      "id": "C06",
      "fixture": "input-types-specialised.html",
      "assert": "hidden controls carry values but are not offered to a user as fields"
    },
    {
      "id": "C07",
      "fixture": "form-attribute-association.html",
      "assert": "the two controls outside the form element are still associated with it"
    },
    {
      "id": "C08",
      "fixture": "labelling-aria-labelledby.html",
      "assert": "each accessible name comes from the referenced elements, in reference order"
    },
    {
      "id": "C09",
      "fixture": "labelling-placeholder-only.html",
      "assert": "every control is reported as having no accessible name"
    },
    {
      "id": "C10",
      "fixture": "fieldset-nested-groups.html",
      "assert": "the tenure radio group's group name composes all three enclosing legends"
    },
    {
      "id": "C11",
      "fixture": "likert-survey-matrix.html",
      "assert": "25 radio controls collapse to 5 grouped fields"
    },
    {
      "id": "C12",
      "fixture": "nested-object-field-names.html",
      "assert": "bracket names expand to the object graph in nested-form-submission.json"
    },
    {
      "id": "C13",
      "fixture": "repeated-array-field-names.html",
      "assert": "repeated keys are preserved as a list, not collapsed to the last value"
    },
    {
      "id": "C14",
      "fixture": "broken-duplicate-field-names.html",
      "assert": "the three name collisions are reported rather than silently resolved"
    },
    {
      "id": "C15",
      "fixture": "broken-nested-form-elements.html",
      "assert": "the recovery behaviour is stated explicitly, whichever it is"
    },
    {
      "id": "C16",
      "fixture": "acro-radio-group.pdf",
      "assert": "one radio field is reported with four kid widgets, not four fields"
    },
    {
      "id": "C17",
      "fixture": "acro-listbox-multi.pdf",
      "assert": "the list box is distinguished from a combo box"
    },
    {
      "id": "C18",
      "fixture": "acro-checkbox-matrix.fdf",
      "assert": "checkbox values round-trip as Yes and Off, not as true and false"
    }
  ]
}
