{
  "version": "riddle-proof.profile-result.v1",
  "profile_name": "riddle-site-v499-dashboard-api-key-modal-copy",
  "runner": "riddle",
  "status": "passed",
  "baseline_policy": "invariant_only",
  "route": {
    "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
    "observed": "/s/ps_befb5fd2/dashboard/",
    "expected_path": "/dashboard/",
    "matched": true,
    "http_status": 200
  },
  "artifacts": {
    "screenshots": [
      "riddle-site-v499-dashboard-api-key-modal-copy-desktop",
      "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-before-api-key-create",
      "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-before-copy",
      "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-copied",
      "riddle-site-v499-dashboard-api-key-modal-copy-phone",
      "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-before-api-key-create",
      "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-before-copy",
      "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-copied",
      "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini",
      "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-before-api-key-create",
      "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-before-copy",
      "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-copied",
      "riddle-site-v499-dashboard-api-key-modal-copy-ipad",
      "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-before-api-key-create",
      "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-before-copy",
      "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-copied"
    ],
    "console": "console.json",
    "proof_json": "proof.json",
    "dom_summary": "dom-summary.json",
    "riddle_artifacts": [
      {
        "name": "proof.json",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/proof.json.json",
        "source": "artifacts"
      },
      {
        "name": "console.json",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/console.json.json",
        "source": "artifacts"
      },
      {
        "name": "dom-summary.json",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/dom-summary.json.json",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-before-api-key-create.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-before-api-key-create.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-before-copy.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-before-copy.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-copied.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-copied.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-desktop.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-desktop.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-before-api-key-create.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-before-api-key-create.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-before-copy.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-before-copy.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-copied.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-copied.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-phone.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-phone.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-before-api-key-create.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-before-api-key-create.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-before-copy.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-before-copy.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-copied.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-copied.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-before-api-key-create.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-before-api-key-create.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-before-copy.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-before-copy.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-copied.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-copied.png",
        "source": "artifacts"
      },
      {
        "name": "riddle-site-v499-dashboard-api-key-modal-copy-ipad.png",
        "url": "https://cdn.riddledc.com/scripts/job_8cf778ad/riddle-site-v499-dashboard-api-key-modal-copy-ipad.png",
        "source": "artifacts"
      }
    ]
  },
  "checks": [
    {
      "type": "network_mocks_succeeded",
      "label": "network mocks succeeded",
      "status": "passed",
      "evidence": {
        "mock_count": 4,
        "required_count": 4,
        "hit_count": 29,
        "hits_by_label": {
          "dashboard-balance-v499": 7,
          "dashboard-jobs-v499": 7,
          "dashboard-api-keys-list-v499": 11,
          "dashboard-api-key-create-v499-success": 4
        },
        "required_hits_by_label": {
          "dashboard-balance-v499": 4,
          "dashboard-jobs-v499": 4,
          "dashboard-api-keys-list-v499": 4,
          "dashboard-api-key-create-v499-success": 4
        },
        "max_hits_by_label": {},
        "response_hits_by_label": {},
        "failed": []
      }
    },
    {
      "type": "setup_actions_succeeded",
      "label": "setup actions succeeded",
      "status": "passed",
      "evidence": {
        "action_count": 24,
        "viewports": [
          {
            "name": "desktop",
            "expected_action_count": 24,
            "ok": true,
            "result_count": 24
          },
          {
            "name": "phone",
            "expected_action_count": 24,
            "ok": true,
            "result_count": 24
          },
          {
            "name": "ipad-mini",
            "expected_action_count": 24,
            "ok": true,
            "result_count": 24
          },
          {
            "name": "ipad",
            "expected_action_count": 24,
            "ok": true,
            "result_count": 24
          }
        ],
        "setup_summary": {
          "viewport_count": 4,
          "action_count": 24,
          "viewports": [
            {
              "name": "desktop",
              "expected_action_count": 24,
              "ok": true,
              "result_count": 24,
              "observed_path": "/s/ps_befb5fd2/dashboard/",
              "final_url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 1,
                "wait_for_text": 8,
                "fill": 1,
                "clear_console": 1,
                "screenshot": 3,
                "click": 2,
                "assert_text_absent": 2
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-before-api-key-create",
                "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-before-copy",
                "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-copied"
              ],
              "clicked_total": 2,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 14,
                  "selector": ".create-key-form button",
                  "frame_selector": null,
                  "text": "Create API Key"
                },
                {
                  "ordinal": 20,
                  "selector": ".modal-overlay .copy-btn",
                  "frame_selector": null,
                  "text": "Copy"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 9,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser T... (516 chars)"
                },
                {
                  "ordinal": 10,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser T... (516 chars)"
                },
                {
                  "ordinal": 15,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser T... (516 chars)"
                },
                {
                  "ordinal": 16,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser T... (516 chars)"
                },
                {
                  "ordinal": 17,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser T... (516 chars)"
                },
                {
                  "ordinal": 21,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST... (331 chars)"
                }
              ],
              "failed": [],
              "optional_failed": []
            },
            {
              "name": "phone",
              "expected_action_count": 24,
              "ok": true,
              "result_count": 24,
              "observed_path": "/s/ps_befb5fd2/dashboard/",
              "final_url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 1,
                "wait_for_text": 8,
                "fill": 1,
                "clear_console": 1,
                "screenshot": 3,
                "click": 2,
                "assert_text_absent": 2
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-before-api-key-create",
                "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-before-copy",
                "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-copied"
              ],
              "clicked_total": 2,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 14,
                  "selector": ".create-key-form button",
                  "frame_selector": null,
                  "text": "Create API Key"
                },
                {
                  "ordinal": 20,
                  "selector": ".modal-overlay .copy-btn",
                  "frame_selector": null,
                  "text": "Copy"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 9,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 10,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 15,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 16,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 17,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 21,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST... (331 chars)"
                }
              ],
              "failed": [],
              "optional_failed": []
            },
            {
              "name": "ipad-mini",
              "expected_action_count": 24,
              "ok": true,
              "result_count": 24,
              "observed_path": "/s/ps_befb5fd2/dashboard/",
              "final_url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 1,
                "wait_for_text": 8,
                "fill": 1,
                "clear_console": 1,
                "screenshot": 3,
                "click": 2,
                "assert_text_absent": 2
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-before-api-key-create",
                "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-before-copy",
                "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-copied"
              ],
              "clicked_total": 2,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 14,
                  "selector": ".create-key-form button",
                  "frame_selector": null,
                  "text": "Create API Key"
                },
                {
                  "ordinal": 20,
                  "selector": ".modal-overlay .copy-btn",
                  "frame_selector": null,
                  "text": "Copy"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 9,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 10,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 15,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 16,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 17,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 21,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST... (331 chars)"
                }
              ],
              "failed": [],
              "optional_failed": []
            },
            {
              "name": "ipad",
              "expected_action_count": 24,
              "ok": true,
              "result_count": 24,
              "observed_path": "/s/ps_befb5fd2/dashboard/",
              "final_url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 1,
                "wait_for_text": 8,
                "fill": 1,
                "clear_console": 1,
                "screenshot": 3,
                "click": 2,
                "assert_text_absent": 2
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-before-api-key-create",
                "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-before-copy",
                "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-copied"
              ],
              "clicked_total": 2,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 14,
                  "selector": ".create-key-form button",
                  "frame_selector": null,
                  "text": "Create API Key"
                },
                {
                  "ordinal": 20,
                  "selector": ".modal-overlay .copy-btn",
                  "frame_selector": null,
                  "text": "Copy"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 9,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 10,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 15,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 16,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 17,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s mi... (516 chars)"
                },
                {
                  "ordinal": 21,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST... (331 chars)"
                }
              ],
              "failed": [],
              "optional_failed": []
            }
          ]
        },
        "failed": []
      }
    },
    {
      "type": "route_loaded",
      "label": "route_loaded",
      "status": "passed",
      "evidence": {
        "expected_path": "/dashboard/",
        "observed_paths": [
          "/s/ps_befb5fd2/dashboard/",
          "/s/ps_befb5fd2/dashboard/",
          "/s/ps_befb5fd2/dashboard/",
          "/s/ps_befb5fd2/dashboard/"
        ],
        "http_statuses": [
          200,
          200,
          200,
          200
        ]
      }
    },
    {
      "type": "selector_visible",
      "label": "selector_visible",
      "status": "passed",
      "evidence": {
        "selector": ".dashboard-content",
        "visible_counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "selector_visible",
      "label": "selector_visible",
      "status": "passed",
      "evidence": {
        "selector": ".modal-overlay",
        "visible_counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Dashboard",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Browser Time Balance",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "5h 0m",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "2 active",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "job_v499_completed",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Completed",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Running",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Riddle Proof v499 existing key",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "API Key Created!",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "rdc_live_v499_CLIPBOARD_SECRET",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "curl -X POST https://api.riddledc.com/v1/run",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "selector_text_visible",
      "label": "selector_text_visible",
      "status": "passed",
      "evidence": {
        "selector": ".modal-content",
        "text": "Copied",
        "pattern": null,
        "viewports": [
          {
            "viewport": "desktop",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ]
          },
          {
            "viewport": "phone",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ]
          },
          {
            "viewport": "ipad-mini",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ]
          },
          {
            "viewport": "ipad",
            "selector_count": 1,
            "visible_count": 1,
            "matched_count": 1,
            "matched": true,
            "samples": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ]
          }
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "Could not copy API key",
        "matches": [
          false,
          false,
          false,
          false
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "[object Object]",
        "matches": [
          false,
          false,
          false,
          false
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "Application error",
        "matches": [
          false,
          false,
          false,
          false
        ]
      }
    },
    {
      "type": "selector_count_equals",
      "label": "selector_count_equals",
      "status": "passed",
      "evidence": {
        "selector": ".jobs-list tbody tr",
        "expected_count": 2,
        "counts": [
          2,
          2,
          2,
          2
        ]
      }
    },
    {
      "type": "selector_count_equals",
      "label": "selector_count_equals",
      "status": "passed",
      "evidence": {
        "selector": ".api-keys-list tbody tr",
        "expected_count": 1,
        "counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "selector_count_equals",
      "label": "selector_count_equals",
      "status": "passed",
      "evidence": {
        "selector": ".modal-overlay",
        "expected_count": 1,
        "counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "no_horizontal_overflow",
      "label": "no_horizontal_overflow",
      "status": "passed",
      "evidence": {
        "max_overflow_px": 1,
        "overflow_px": [
          0,
          0,
          0,
          0
        ],
        "bounds_overflow_px": [
          0,
          0,
          0,
          0
        ],
        "overflow_offender_counts": [
          0,
          0,
          0,
          0
        ],
        "viewports": [
          "desktop",
          "phone",
          "ipad-mini",
          "ipad"
        ]
      }
    },
    {
      "type": "no_fatal_console_errors",
      "label": "no_fatal_console_errors",
      "status": "passed",
      "evidence": {
        "console_fatal_count": 0,
        "page_error_count": 0,
        "total_console_fatal_count": 0,
        "total_page_error_count": 0,
        "allowed_console_fatal_count": 0,
        "explicitly_allowed_console_fatal_count": 0,
        "allowed_expected_network_mock_console_count": 0,
        "allowed_expected_network_mock_console_events": [],
        "allowed_page_error_count": 0,
        "allowed_console_texts": [],
        "allowed_console_patterns": [],
        "allowed_page_error_texts": [],
        "allowed_page_error_patterns": []
      }
    },
    {
      "type": "no_console_warnings",
      "label": "no_console_warnings",
      "status": "passed",
      "evidence": {
        "console_warning_count": 0,
        "total_console_warning_count": 0,
        "allowed_console_warning_count": 0,
        "allowed_console_texts": [],
        "allowed_console_patterns": [],
        "unallowed_console_warning_samples": [],
        "allowed_console_warning_samples": []
      }
    }
  ],
  "summary": "riddle-site-v499-dashboard-api-key-modal-copy passed 26 check(s) across 4 viewport(s) (desktop, phone, ipad-mini, ipad).",
  "captured_at": "2026-05-17T14:30:26.478Z",
  "evidence": {
    "version": "riddle-proof.profile-evidence.v1",
    "profile_name": "riddle-site-v499-dashboard-api-key-modal-copy",
    "target_url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
    "baseline_policy": "invariant_only",
    "captured_at": "2026-05-17T14:30:26.478Z",
    "viewports": [
      {
        "name": "desktop",
        "width": 1280,
        "height": 900,
        "url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
        "route": {
          "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
          "observed": "/s/ps_befb5fd2/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 2106,
        "body_text_sample": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Status Actions Riddle Proof v499 existing key rdc_live_•••0499 5/17/2026 5/17/2026 Active Revoke API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key MCP Login Token MCP setup Use this short-lived login token for hosted MCP. It expires in about 1 hour. •••••••••••••••••••••••••••••••••••••••• Reveal Copy token Never share this token. Anyone with it can run jobs on your account. Quick Actions Test Playground Try the APIs and generate code API Documentation Integration guides and reference Buy Credits Add browser time to your account Optimize Costs Batch to get <$0.001 per screenshot Use Case Guides AI Agents Vision for LLMs, cookie injection Serverless Lambda, Vercel, Cloudflare Workers Authenticated Pages Screenshots behind login Pricing Details Cost breakdown and examples Riddle Distributed Computing Product Riddle Proof Good Catch Diary Pricing Maximize Value Documentation MCP Recipes Playground Use Cases AI Agents Agent Guide Serverless Authenticated Pages vs Self-Hosted Blog Evidence Over Summaries Frontend Dev Without a Browser E2E Testing Tips Chatty Agents (Part I) Batching Heuristics (Part II) Vision Agents Teaching AI to Ski Support FAQ Status Contact Legal Terms Privacy © 2026 Riddle. All rights reserved.",
        "scroll_width": 1280,
        "client_width": 1280,
        "overflow_px": 0,
        "bounds_overflow_px": 0,
        "overflow_offenders": [],
        "selectors": {
          ".dashboard-content": {
            "count": 1,
            "visible_count": 1
          },
          ".modal-overlay": {
            "count": 1,
            "visible_count": 1
          },
          ".modal-content": {
            "count": 1,
            "visible_count": 1
          },
          ".jobs-list tbody tr": {
            "count": 2,
            "visible_count": 2
          },
          ".api-keys-list tbody tr": {
            "count": 1,
            "visible_count": 1
          }
        },
        "frames": {},
        "text_sequences": {
          ".modal-content": {
            "count": 1,
            "visible_count": 1,
            "texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ],
            "visible_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ],
            "match_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key"
            ],
            "visible_match_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key"
            ]
          }
        },
        "text_matches": {
          "text:Dashboard": true,
          "text:Browser Time Balance": true,
          "text:5h 0m": true,
          "text:2 active": true,
          "text:job_v499_completed": true,
          "text:Completed": true,
          "text:Running": true,
          "text:Riddle Proof v499 existing key": true,
          "text:API Key Created!": true,
          "text:rdc_live_v499_CLIPBOARD_SECRET": true,
          "text:curl -X POST https://api.riddledc.com/v1/run": true,
          "text:Could not copy API key": false,
          "text:[object Object]": false,
          "text:Application error": false
        },
        "http_statuses": {},
        "link_statuses": {},
        "setup_action_results": [
          {
            "ok": true,
            "action": "clear_storage",
            "ordinal": 0,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "storage": "both",
            "reload": true
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 1,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.LastAuthUser",
            "value_length": 27,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.idToken",
            "value_length": 385,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.accessToken",
            "value_length": 363,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.refreshToken",
            "value_length": 19,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 5,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".dashboard-content",
            "frame_selector": null,
            "optional": false,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 7,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys ... (1774 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 8,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys ... (1774 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 9,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys ... (1774 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 10,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys ... (1774 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "fill",
            "ordinal": 11,
            "selector": ".create-key-form input",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "value_length": 32
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 12,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "cleared_console_event_count": 0,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-before-api-key-create",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-before-api-key-create"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 14,
            "selector": ".create-key-form button",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Create API Key"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 15,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys ... (2101 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 16,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys ... (2104 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 17,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp497-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys ... (2104 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 18,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 19,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-api-key-created-modal-before-copy",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-before-copy"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 20,
            "selector": ".modal-overlay .copy-btn",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Copy"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 21,
            "selector": ".modal-content",
            "frame_selector": null,
            "optional": false,
            "text": "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key",
            "target_index": 0,
            "timeout_ms": 10000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 22,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 23,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-api-key-created-modal-copied",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-desktop-dashboard-api-key-created-modal-copied"
          }
        ],
        "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-desktop"
      },
      {
        "name": "phone",
        "width": 390,
        "height": 844,
        "url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
        "route": {
          "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
          "observed": "/s/ps_befb5fd2/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 2008,
        "body_text_sample": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Status Actions Riddle Proof v499 existing key rdc_live_•••0499 5/17/2026 5/17/2026 Active Revoke API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key MCP Login Token MCP setup Use this short-lived login token for hosted MCP. It expires in about 1 hour. •••••••••••••••••••••••••••••••••••••••• Reveal Copy token Never share this token. Anyone with it can run jobs on your account. Quick Actions Test Playground Try the APIs and generate code API Documentation Integration guides and reference Buy Credits Add browser time to your account Optimize Costs Batch to get <$0.001 per screenshot Use Case Guides AI Agents Vision for LLMs, cookie injection Serverless Lambda, Vercel, Cloudflare Workers Authenticated Pages Screenshots behind login Pricing Details Cost breakdown and examples Riddle Distributed Computing Product Riddle Proof Good Catch Diary Pricing Maximize Value Documentation MCP Recipes Playground Use Cases AI Agents Agent Guide Serverless Authenticated Pages vs Self-Hosted Blog Evidence Over Summaries Frontend Dev Without a Browser E2E Testing Tips Chatty Agents (Part I) Batching Heuristics (Part II) Vision Agents Teaching AI to Ski Support FAQ Status Contact Legal Terms Privacy © 2026 Riddle. All rights reserved.",
        "scroll_width": 390,
        "client_width": 390,
        "overflow_px": 0,
        "bounds_overflow_px": 0,
        "overflow_offenders": [],
        "selectors": {
          ".dashboard-content": {
            "count": 1,
            "visible_count": 1
          },
          ".modal-overlay": {
            "count": 1,
            "visible_count": 1
          },
          ".modal-content": {
            "count": 1,
            "visible_count": 1
          },
          ".jobs-list tbody tr": {
            "count": 2,
            "visible_count": 2
          },
          ".api-keys-list tbody tr": {
            "count": 1,
            "visible_count": 1
          }
        },
        "frames": {},
        "text_sequences": {
          ".modal-content": {
            "count": 1,
            "visible_count": 1,
            "texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ],
            "visible_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ],
            "match_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key"
            ],
            "visible_match_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key"
            ]
          }
        },
        "text_matches": {
          "text:Dashboard": true,
          "text:Browser Time Balance": true,
          "text:5h 0m": true,
          "text:2 active": true,
          "text:job_v499_completed": true,
          "text:Completed": true,
          "text:Running": true,
          "text:Riddle Proof v499 existing key": true,
          "text:API Key Created!": true,
          "text:rdc_live_v499_CLIPBOARD_SECRET": true,
          "text:curl -X POST https://api.riddledc.com/v1/run": true,
          "text:Could not copy API key": false,
          "text:[object Object]": false,
          "text:Application error": false
        },
        "http_statuses": {},
        "link_statuses": {},
        "setup_action_results": [
          {
            "ok": true,
            "action": "clear_storage",
            "ordinal": 0,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "storage": "both",
            "reload": true
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 1,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.LastAuthUser",
            "value_length": 27,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.idToken",
            "value_length": 385,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.accessToken",
            "value_length": 363,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.refreshToken",
            "value_length": 19,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 5,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".dashboard-content",
            "frame_selector": null,
            "optional": false,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 7,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 8,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 9,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 10,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "fill",
            "ordinal": 11,
            "selector": ".create-key-form input",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "value_length": 32
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 12,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "cleared_console_event_count": 0,
            "cleared_page_error_count": 1
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-before-api-key-create",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-before-api-key-create"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 14,
            "selector": ".create-key-form button",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Create API Key"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 15,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 16,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 17,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 18,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 19,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-api-key-created-modal-before-copy",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-before-copy"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 20,
            "selector": ".modal-overlay .copy-btn",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Copy"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 21,
            "selector": ".modal-content",
            "frame_selector": null,
            "optional": false,
            "text": "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key",
            "target_index": 0,
            "timeout_ms": 10000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 22,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 23,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-api-key-created-modal-copied",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-phone-dashboard-api-key-created-modal-copied"
          }
        ],
        "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-phone"
      },
      {
        "name": "ipad-mini",
        "width": 768,
        "height": 1024,
        "url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
        "route": {
          "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
          "observed": "/s/ps_befb5fd2/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 2008,
        "body_text_sample": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Status Actions Riddle Proof v499 existing key rdc_live_•••0499 5/17/2026 5/17/2026 Active Revoke API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key MCP Login Token MCP setup Use this short-lived login token for hosted MCP. It expires in about 1 hour. •••••••••••••••••••••••••••••••••••••••• Reveal Copy token Never share this token. Anyone with it can run jobs on your account. Quick Actions Test Playground Try the APIs and generate code API Documentation Integration guides and reference Buy Credits Add browser time to your account Optimize Costs Batch to get <$0.001 per screenshot Use Case Guides AI Agents Vision for LLMs, cookie injection Serverless Lambda, Vercel, Cloudflare Workers Authenticated Pages Screenshots behind login Pricing Details Cost breakdown and examples Riddle Distributed Computing Product Riddle Proof Good Catch Diary Pricing Maximize Value Documentation MCP Recipes Playground Use Cases AI Agents Agent Guide Serverless Authenticated Pages vs Self-Hosted Blog Evidence Over Summaries Frontend Dev Without a Browser E2E Testing Tips Chatty Agents (Part I) Batching Heuristics (Part II) Vision Agents Teaching AI to Ski Support FAQ Status Contact Legal Terms Privacy © 2026 Riddle. All rights reserved.",
        "scroll_width": 768,
        "client_width": 768,
        "overflow_px": 0,
        "bounds_overflow_px": 0,
        "overflow_offenders": [],
        "selectors": {
          ".dashboard-content": {
            "count": 1,
            "visible_count": 1
          },
          ".modal-overlay": {
            "count": 1,
            "visible_count": 1
          },
          ".modal-content": {
            "count": 1,
            "visible_count": 1
          },
          ".jobs-list tbody tr": {
            "count": 2,
            "visible_count": 2
          },
          ".api-keys-list tbody tr": {
            "count": 1,
            "visible_count": 1
          }
        },
        "frames": {},
        "text_sequences": {
          ".modal-content": {
            "count": 1,
            "visible_count": 1,
            "texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ],
            "visible_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ],
            "match_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key"
            ],
            "visible_match_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key"
            ]
          }
        },
        "text_matches": {
          "text:Dashboard": true,
          "text:Browser Time Balance": true,
          "text:5h 0m": true,
          "text:2 active": true,
          "text:job_v499_completed": true,
          "text:Completed": true,
          "text:Running": true,
          "text:Riddle Proof v499 existing key": true,
          "text:API Key Created!": true,
          "text:rdc_live_v499_CLIPBOARD_SECRET": true,
          "text:curl -X POST https://api.riddledc.com/v1/run": true,
          "text:Could not copy API key": false,
          "text:[object Object]": false,
          "text:Application error": false
        },
        "http_statuses": {},
        "link_statuses": {},
        "setup_action_results": [
          {
            "ok": true,
            "action": "clear_storage",
            "ordinal": 0,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "storage": "both",
            "reload": true
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 1,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.LastAuthUser",
            "value_length": 27,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.idToken",
            "value_length": 385,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.accessToken",
            "value_length": 363,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.refreshToken",
            "value_length": 19,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 5,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".dashboard-content",
            "frame_selector": null,
            "optional": false,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 7,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 8,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 9,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 10,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "fill",
            "ordinal": 11,
            "selector": ".create-key-form input",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "value_length": 32
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 12,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "cleared_console_event_count": 0,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-before-api-key-create",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-before-api-key-create"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 14,
            "selector": ".create-key-form button",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Create API Key"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 15,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 16,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 17,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 18,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 19,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-api-key-created-modal-before-copy",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-before-copy"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 20,
            "selector": ".modal-overlay .copy-btn",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Copy"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 21,
            "selector": ".modal-content",
            "frame_selector": null,
            "optional": false,
            "text": "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key",
            "target_index": 0,
            "timeout_ms": 10000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 22,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 23,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-api-key-created-modal-copied",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini-dashboard-api-key-created-modal-copied"
          }
        ],
        "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-mini"
      },
      {
        "name": "ipad",
        "width": 820,
        "height": 1180,
        "url": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
        "route": {
          "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
          "observed": "/s/ps_befb5fd2/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 2008,
        "body_text_sample": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Status Actions Riddle Proof v499 existing key rdc_live_•••0499 5/17/2026 5/17/2026 Active Revoke API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key MCP Login Token MCP setup Use this short-lived login token for hosted MCP. It expires in about 1 hour. •••••••••••••••••••••••••••••••••••••••• Reveal Copy token Never share this token. Anyone with it can run jobs on your account. Quick Actions Test Playground Try the APIs and generate code API Documentation Integration guides and reference Buy Credits Add browser time to your account Optimize Costs Batch to get <$0.001 per screenshot Use Case Guides AI Agents Vision for LLMs, cookie injection Serverless Lambda, Vercel, Cloudflare Workers Authenticated Pages Screenshots behind login Pricing Details Cost breakdown and examples Riddle Distributed Computing Product Riddle Proof Good Catch Diary Pricing Maximize Value Documentation MCP Recipes Playground Use Cases AI Agents Agent Guide Serverless Authenticated Pages vs Self-Hosted Blog Evidence Over Summaries Frontend Dev Without a Browser E2E Testing Tips Chatty Agents (Part I) Batching Heuristics (Part II) Vision Agents Teaching AI to Ski Support FAQ Status Contact Legal Terms Privacy © 2026 Riddle. All rights reserved.",
        "scroll_width": 820,
        "client_width": 820,
        "overflow_px": 0,
        "bounds_overflow_px": 0,
        "overflow_offenders": [],
        "selectors": {
          ".dashboard-content": {
            "count": 1,
            "visible_count": 1
          },
          ".modal-overlay": {
            "count": 1,
            "visible_count": 1
          },
          ".modal-content": {
            "count": 1,
            "visible_count": 1
          },
          ".jobs-list tbody tr": {
            "count": 2,
            "visible_count": 2
          },
          ".api-keys-list tbody tr": {
            "count": 1,
            "visible_count": 1
          }
        },
        "frames": {},
        "text_sequences": {
          ".modal-content": {
            "count": 1,
            "visible_count": 1,
            "texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ],
            "visible_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ "
            ],
            "match_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key"
            ],
            "visible_match_texts": [
              "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key"
            ]
          }
        },
        "text_matches": {
          "text:Dashboard": true,
          "text:Browser Time Balance": true,
          "text:5h 0m": true,
          "text:2 active": true,
          "text:job_v499_completed": true,
          "text:Completed": true,
          "text:Running": true,
          "text:Riddle Proof v499 existing key": true,
          "text:API Key Created!": true,
          "text:rdc_live_v499_CLIPBOARD_SECRET": true,
          "text:curl -X POST https://api.riddledc.com/v1/run": true,
          "text:Could not copy API key": false,
          "text:[object Object]": false,
          "text:Application error": false
        },
        "http_statuses": {},
        "link_statuses": {},
        "setup_action_results": [
          {
            "ok": true,
            "action": "clear_storage",
            "ordinal": 0,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "storage": "both",
            "reload": true
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 1,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.LastAuthUser",
            "value_length": 27,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.idToken",
            "value_length": 385,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.accessToken",
            "value_length": 363,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.refreshToken",
            "value_length": 19,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 5,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp499-dashboard@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".dashboard-content",
            "frame_selector": null,
            "optional": false,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 7,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 8,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 9,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 10,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (1676 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "fill",
            "ordinal": 11,
            "selector": ".create-key-form input",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "value_length": 32
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 12,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "cleared_console_event_count": 0,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-before-api-key-create",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-before-api-key-create"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 14,
            "selector": ".create-key-form button",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Create API Key"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 15,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 16,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 17,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "text": "Skip to main content Riddle Dashboard Browser Time Balance Available: 5h 0m ~$2.50 Reserved: 2m 0s 2 active Total: 5h 2m ~$2.52 ~600 jobs (30s minimum each) Buy Browser Time Account Summary 5h 0m Browser Time $2.50 Value 2 Active Jobs Recent Jobs JOB ID STATUS RUNTIME DATE job_v499_completed Completed 53s 5/17/2026, 2:35:00 PM job_v499_running Running 18s 5/17/2026, 2:34:00 PM API Keys Use API keys to authenticate requests to the Riddle Browser API Create API Key Name Key Created Last Used Statu... (2006 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 18,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 19,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-api-key-created-modal-before-copy",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-before-copy"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 20,
            "selector": ".modal-overlay .copy-btn",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Copy"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 21,
            "selector": ".modal-content",
            "frame_selector": null,
            "optional": false,
            "text": "API Key Created! ⚠️ Save this key now! You won't be able to see it again. Your API Key: rdc_live_v499_CLIPBOARD_SECRET Copied Usage: curl -X POST https://api.riddledc.com/v1/run \\ -H \"Authorization: Bearer rdc_live_v499_CLIPBOARD_SECRET\" \\ -H \"Content-Type: application/json\" \\ -d '{\"url\": \"https://example.com\"}' I've saved my key",
            "target_index": 0,
            "timeout_ms": 10000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 22,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 23,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "dashboard-api-key-created-modal-copied",
            "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-ipad-dashboard-api-key-created-modal-copied"
          }
        ],
        "screenshot_label": "riddle-site-v499-dashboard-api-key-modal-copy-ipad"
      }
    ],
    "console": {
      "events": [],
      "fatal_count": 0
    },
    "page_errors": [],
    "dialogs": [],
    "network_mocks": [
      {
        "ok": true,
        "label": "dashboard-balance-v499",
        "response_label": "dashboard-balance-v499",
        "hit_index": 0,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v499",
        "response_label": "dashboard-jobs-v499",
        "hit_index": 0,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/v1/jobs?limit=10",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 0,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-key-create-v499-success",
        "response_label": "dashboard-api-key-create-v499-success",
        "hit_index": 0,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "POST",
        "status": 200,
        "request_body_matches": true,
        "request_body_failures": [],
        "request_body_length": 43,
        "request_body_sample": "{\"name\":\"Riddle Proof v499 modal copy key\"}"
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 1,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v499",
        "response_label": "dashboard-balance-v499",
        "hit_index": 1,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v499",
        "response_label": "dashboard-jobs-v499",
        "hit_index": 1,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/v1/jobs?limit=10",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 2,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v499",
        "response_label": "dashboard-balance-v499",
        "hit_index": 2,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v499",
        "response_label": "dashboard-jobs-v499",
        "hit_index": 2,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/v1/jobs?limit=10",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 3,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-key-create-v499-success",
        "response_label": "dashboard-api-key-create-v499-success",
        "hit_index": 1,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "POST",
        "status": 200,
        "request_body_matches": true,
        "request_body_failures": [],
        "request_body_length": 43,
        "request_body_sample": "{\"name\":\"Riddle Proof v499 modal copy key\"}"
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 4,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v499",
        "response_label": "dashboard-balance-v499",
        "hit_index": 3,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v499",
        "response_label": "dashboard-jobs-v499",
        "hit_index": 3,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/v1/jobs?limit=10",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 5,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v499",
        "response_label": "dashboard-balance-v499",
        "hit_index": 4,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v499",
        "response_label": "dashboard-jobs-v499",
        "hit_index": 4,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/v1/jobs?limit=10",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 6,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-key-create-v499-success",
        "response_label": "dashboard-api-key-create-v499-success",
        "hit_index": 2,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "POST",
        "status": 200,
        "request_body_matches": true,
        "request_body_failures": [],
        "request_body_length": 43,
        "request_body_sample": "{\"name\":\"Riddle Proof v499 modal copy key\"}"
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 7,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v499",
        "response_label": "dashboard-balance-v499",
        "hit_index": 5,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v499",
        "response_label": "dashboard-jobs-v499",
        "hit_index": 5,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/v1/jobs?limit=10",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 8,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v499",
        "response_label": "dashboard-balance-v499",
        "hit_index": 6,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v499",
        "response_label": "dashboard-jobs-v499",
        "hit_index": 6,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/v1/jobs?limit=10",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 9,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-api-key-create-v499-success",
        "response_label": "dashboard-api-key-create-v499-success",
        "hit_index": 3,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "POST",
        "status": 200,
        "request_body_matches": true,
        "request_body_failures": [],
        "request_body_length": 43,
        "request_body_sample": "{\"name\":\"Riddle Proof v499 modal copy key\"}"
      },
      {
        "ok": true,
        "label": "dashboard-api-keys-list-v499",
        "response_label": "dashboard-api-keys-list-v499",
        "hit_index": 10,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      }
    ],
    "dom_summary": {
      "expected_viewport_count": 4,
      "viewport_count": 4,
      "partial": false,
      "routes": [
        {
          "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
          "observed": "/s/ps_befb5fd2/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
          "observed": "/s/ps_befb5fd2/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
          "observed": "/s/ps_befb5fd2/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://preview.riddledc.com/s/ps_befb5fd2/dashboard/",
          "observed": "/s/ps_befb5fd2/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        }
      ],
      "titles": [
        "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "Riddle Distributed Computing - Hosted Execution for AI Agents"
      ],
      "overflow_px": [
        0,
        0,
        0,
        0
      ],
      "bounds_overflow_px": [
        0,
        0,
        0,
        0
      ],
      "overflow_offender_counts": [
        0,
        0,
        0,
        0
      ],
      "frames": [
        {
          "viewport": "desktop",
          "selectors": []
        },
        {
          "viewport": "phone",
          "selectors": []
        },
        {
          "viewport": "ipad-mini",
          "selectors": []
        },
        {
          "viewport": "ipad",
          "selectors": []
        }
      ],
      "http_status": [],
      "link_status": [],
      "route_inventory": [],
      "network_mock_count": 4,
      "network_mock_hit_count": 29,
      "dialog_count": 0,
      "dialog_accept_count": 0,
      "dialog_dismiss_count": 0
    }
  },
  "riddle": {
    "job_id": "job_8cf778ad",
    "status": "completed",
    "terminal": true
  }
}
