Fixtures

Noindex

Doc fixtures

Stable public HTML for docs examples and post-release smoke. Not for search. Hooks use sf- classes and ids.

/fixtures/article · html · Single article: h1, p, a.sf-cta@href

{
  "actions": {
    "title": "h1",
    "body": "p",
    "cta": "a.sf-cta@href"
  }
}

/fixtures/listing · html · Nested many cards (title, link, points)

{
  "actions": {
    "cards": {
      "selector": ".sf-card",
      "many": true,
      "output": {
        "title": "a.sf-title@text",
        "link": "a.sf-title@href",
        "points": ".sf-points"
      }
    }
  }
}

/fixtures/nested · html · Row plus inner tags[] (many inside output)

{
  "actions": {
    "items": {
      "selector": ".sf-row",
      "many": true,
      "output": {
        "name": ".sf-name",
        "tags": {
          "selector": ".sf-tag",
          "many": true,
          "output": "text"
        }
      }
    }
  }
}

/fixtures/table · html · tableJson over a headered table

{
  "actions": {
    "rows": "table.sf-table@tableJson"
  }
}

/fixtures/json · html · script#__NEXT_DATA__@json path drill

{
  "actions": {
    "product": "script#__NEXT_DATA__@json:props.pageProps.product"
  }
}

/fixtures/prose · analyse · Long article markdown for interpretation

{
  "query": "Outline the article sections and state the main claim in one sentence."
}

/fixtures/js-list · browser · Empty in raw HTML; .sf-item nodes appear after JS

{
  "actions": {
    "items": {
      "selector": ".sf-item",
      "many": true,
      "output": "text"
    }
  }
}

/fixtures/form · browser · fill + click, then extract .sf-results

{
  "actions": {
    "type": {
      "fn": "fill",
      "selector": "#sf-q",
      "args": "widget"
    },
    "submit": {
      "fn": "click",
      "selector": "#sf-submit"
    },
    "title": ".sf-result-title",
    "count": ".sf-result-count"
  }
}