{
  "version": "riddle-proof.profile-result.v1",
  "profile_name": "riddle-site-v327-dashboard-api-key-revoke-failed",
  "runner": "riddle",
  "status": "product_regression",
  "baseline_policy": "invariant_only",
  "route": {
    "requested": "https://riddledc.com/dashboard/",
    "observed": "/dashboard/",
    "expected_path": "/dashboard/",
    "matched": true,
    "http_status": 200
  },
  "artifacts": {
    "screenshots": [
      "riddle-site-v327-dashboard-api-key-revoke-failed-desktop",
      "riddle-site-v327-dashboard-api-key-revoke-failed-desktop-api-keys-loaded-before-revoke",
      "riddle-site-v327-dashboard-api-key-revoke-failed-desktop-api-key-revoke-failed",
      "riddle-site-v327-dashboard-api-key-revoke-failed-phone",
      "riddle-site-v327-dashboard-api-key-revoke-failed-phone-api-keys-loaded-before-revoke",
      "riddle-site-v327-dashboard-api-key-revoke-failed-phone-api-key-revoke-failed",
      "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-mini",
      "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-mini-api-keys-loaded-before-revoke",
      "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-mini-api-key-revoke-failed",
      "riddle-site-v327-dashboard-api-key-revoke-failed-ipad",
      "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-api-keys-loaded-before-revoke",
      "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-api-key-revoke-failed"
    ],
    "console": "console.json",
    "proof_json": "proof.json",
    "dom_summary": "dom-summary.json"
  },
  "checks": [
    {
      "type": "network_mocks_succeeded",
      "label": "network mocks succeeded",
      "status": "failed",
      "evidence": {
        "mock_count": 4,
        "required_count": 4,
        "hit_count": 25,
        "hits_by_label": {
          "dashboard-balance-v327": 7,
          "dashboard-jobs-v327": 7,
          "dashboard-api-keys-v327-load": 7,
          "dashboard-api-key-v327-revoke-error": 4
        },
        "required_hits_by_label": {
          "dashboard-balance-v327": 4,
          "dashboard-jobs-v327": 4,
          "dashboard-api-keys-v327-load": 4,
          "dashboard-api-key-v327-revoke-error": 4
        },
        "max_hits_by_label": {
          "dashboard-api-keys-v327-load": 4,
          "dashboard-api-key-v327-revoke-error": 4
        },
        "response_hits_by_label": {},
        "failed": [
          {
            "label": "dashboard-api-keys-v327-load",
            "url": "**/billing/api-keys",
            "method": "GET",
            "reason": "mock_hit_count_exceeded",
            "max_hit_count": 4,
            "hit_count": 7
          }
        ]
      },
      "message": "Network mocks failed or hit-count contracts failed for 1 mock(s)."
    },
    {
      "type": "setup_actions_succeeded",
      "label": "setup actions succeeded",
      "status": "passed",
      "evidence": {
        "action_count": 14,
        "viewports": [
          {
            "name": "desktop",
            "ok": true,
            "result_count": 14
          },
          {
            "name": "phone",
            "ok": true,
            "result_count": 14
          },
          {
            "name": "ipad-mini",
            "ok": true,
            "result_count": 14
          },
          {
            "name": "ipad",
            "ok": true,
            "result_count": 14
          }
        ],
        "setup_summary": {
          "viewport_count": 4,
          "action_count": 14,
          "viewports": [
            {
              "name": "desktop",
              "ok": true,
              "result_count": 14,
              "observed_path": "/dashboard/",
              "final_url": "https://riddledc.com/dashboard/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 1,
                "wait_for_text": 2,
                "clear_console": 1,
                "screenshot": 2,
                "dialog_response": 1,
                "click": 1
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v327-dashboard-api-key-revoke-failed-desktop-api-keys-loaded-before-revoke",
                "riddle-site-v327-dashboard-api-key-revoke-failed-desktop-api-key-revoke-failed"
              ],
              "clicked_total": 1,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 11,
                  "selector": ".api-keys-list .revoke-btn",
                  "frame_selector": null,
                  "text": "Revoke"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 7,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAv... (517 chars)"
                },
                {
                  "ordinal": 12,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAv... (517 chars)"
                }
              ],
              "failed": []
            },
            {
              "name": "phone",
              "ok": true,
              "result_count": 14,
              "observed_path": "/dashboard/",
              "final_url": "https://riddledc.com/dashboard/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 1,
                "wait_for_text": 2,
                "clear_console": 1,
                "screenshot": 2,
                "dialog_response": 1,
                "click": 1
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v327-dashboard-api-key-revoke-failed-phone-api-keys-loaded-before-revoke",
                "riddle-site-v327-dashboard-api-key-revoke-failed-phone-api-key-revoke-failed"
              ],
              "clicked_total": 1,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 11,
                  "selector": ".api-keys-list .revoke-btn",
                  "frame_selector": null,
                  "text": "Revoke"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 7,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAv... (517 chars)"
                },
                {
                  "ordinal": 12,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAv... (517 chars)"
                }
              ],
              "failed": []
            },
            {
              "name": "ipad-mini",
              "ok": true,
              "result_count": 14,
              "observed_path": "/dashboard/",
              "final_url": "https://riddledc.com/dashboard/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 1,
                "wait_for_text": 2,
                "clear_console": 1,
                "screenshot": 2,
                "dialog_response": 1,
                "click": 1
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-mini-api-keys-loaded-before-revoke",
                "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-mini-api-key-revoke-failed"
              ],
              "clicked_total": 1,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 11,
                  "selector": ".api-keys-list .revoke-btn",
                  "frame_selector": null,
                  "text": "Revoke"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 7,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAv... (517 chars)"
                },
                {
                  "ordinal": 12,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAv... (517 chars)"
                }
              ],
              "failed": []
            },
            {
              "name": "ipad",
              "ok": true,
              "result_count": 14,
              "observed_path": "/dashboard/",
              "final_url": "https://riddledc.com/dashboard/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 1,
                "wait_for_text": 2,
                "clear_console": 1,
                "screenshot": 2,
                "dialog_response": 1,
                "click": 1
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-api-keys-loaded-before-revoke",
                "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-api-key-revoke-failed"
              ],
              "clicked_total": 1,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 11,
                  "selector": ".api-keys-list .revoke-btn",
                  "frame_selector": null,
                  "text": "Revoke"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 7,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAv... (517 chars)"
                },
                {
                  "ordinal": 12,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAv... (517 chars)"
                }
              ],
              "failed": []
            }
          ]
        },
        "failed": []
      }
    },
    {
      "type": "route_loaded",
      "label": "route_loaded",
      "status": "passed",
      "evidence": {
        "expected_path": "/dashboard/",
        "observed_paths": [
          "/dashboard/",
          "/dashboard/",
          "/dashboard/",
          "/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": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "API Keys",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Revoke Failure Key v327",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Synthetic v327 API key revoke rejected",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Active",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Revoke",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "Revoked",
        "matches": [
          false,
          false,
          false,
          false
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "No API keys yet",
        "matches": [
          false,
          false,
          false,
          false
        ]
      }
    },
    {
      "type": "selector_count_equals",
      "label": "selector_count_equals",
      "status": "passed",
      "evidence": {
        "selector": ".api-keys-section .error-message",
        "expected_count": 1,
        "counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "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": ".api-keys-list .revoke-btn",
        "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": "failed",
      "evidence": {
        "console_fatal_count": 1,
        "page_error_count": 0,
        "total_console_fatal_count": 3,
        "total_page_error_count": 0,
        "allowed_console_fatal_count": 2,
        "explicitly_allowed_console_fatal_count": 0,
        "allowed_expected_network_mock_console_count": 2,
        "allowed_expected_network_mock_console_events": [
          {
            "url": "https://api.riddledc.com/billing/api-keys/key-rp327-existing",
            "status": 409,
            "label": "dashboard-api-key-v327-revoke-error",
            "response_label": "dashboard-api-key-v327-revoke-error",
            "text": "Failed to load resource: the server responded with a status of 409 (Conflict)"
          },
          {
            "url": "https://api.riddledc.com/billing/api-keys/key-rp327-existing",
            "status": 409,
            "label": "dashboard-api-key-v327-revoke-error",
            "response_label": "dashboard-api-key-v327-revoke-error",
            "text": "Failed to load resource: the server responded with a status of 409 (Conflict)"
          }
        ],
        "allowed_page_error_count": 0,
        "allowed_console_texts": [],
        "allowed_console_patterns": [],
        "allowed_page_error_texts": [],
        "allowed_page_error_patterns": []
      },
      "message": "1 fatal browser error(s) were captured."
    }
  ],
  "summary": "riddle-site-v327-dashboard-api-key-revoke-failed failed 2 product invariant(s) across 4 viewport(s).",
  "captured_at": "2026-05-15T12:30:49.341Z",
  "evidence": {
    "version": "riddle-proof.profile-evidence.v1",
    "profile_name": "riddle-site-v327-dashboard-api-key-revoke-failed",
    "target_url": "https://riddledc.com/dashboard/",
    "baseline_policy": "invariant_only",
    "captured_at": "2026-05-15T12:30:49.341Z",
    "viewports": [
      {
        "name": "desktop",
        "width": 1280,
        "height": 900,
        "url": "https://riddledc.com/dashboard/",
        "route": {
          "requested": "https://riddledc.com/dashboard/",
          "observed": "/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 1701,
        "body_text_sample": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp327-dashboard@example.com Sign Out Dashboard Browser Time Balance Available: 2h ~$1.00 Total: 2h ~$1.00 ~240 jobs (30s minimum each) Buy Browser Time Account Summary 2h Browser Time $1.00 Value Recent Jobs JOB ID STATUS RUNTIME DATE job_rp327_completed Completed 32s 5/15/2026, 12:30:00 PM API Keys Use API keys to authenticate requests to the Screenshot API Synthetic v327 API key revoke rejected Create API Key Name Key Created Last Used Status Actions Revoke Failure Key v327 rdc_live_•••V327 5/15/2026 Never Active Revoke 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
          },
          ".api-keys-section .error-message": {
            "count": 1,
            "visible_count": 1
          },
          ".api-keys-list tbody tr": {
            "count": 1,
            "visible_count": 1
          },
          ".api-keys-list .revoke-btn": {
            "count": 1,
            "visible_count": 1
          }
        },
        "frames": {},
        "text_sequences": {},
        "text_matches": {
          "text:API Keys": true,
          "text:Revoke Failure Key v327": true,
          "text:Synthetic v327 API key revoke rejected": true,
          "text:Active": true,
          "text:Revoke": true,
          "text:Revoked": false,
          "text:No API keys yet": false
        },
        "setup_action_results": [
          {
            "ok": true,
            "action": "clear_storage",
            "ordinal": 0,
            "selector": null,
            "frame_selector": null,
            "storage": "both",
            "reload": true
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 1,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.LastAuthUser",
            "value_length": 27,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.idToken",
            "value_length": 382,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.accessToken",
            "value_length": 360,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.refreshToken",
            "value_length": 19,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 5,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".dashboard-content",
            "frame_selector": null,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 7,
            "selector": "body",
            "frame_selector": null,
            "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAvailable:2h~$1.00Total:2h~$1.00~240 jobs (30s minimum each)Buy Browser TimeAccount Summary2hBrowser Time$1.00ValueRecent JobsJob IDStatusRuntimeDatejob_rp327_completedCompleted32s5/15/2026, 12:30:00 PMAPI KeysUse API keys to authenticate requests to the Screenshot APICreate API KeyNameKeyCreatedLast UsedStatusActionsRevoke Failure Key v327rdc_live_•••V32... (13864 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 8,
            "selector": null,
            "frame_selector": null,
            "cleared_console_event_count": 0,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 9,
            "selector": null,
            "frame_selector": null,
            "label": "api-keys-loaded-before-revoke",
            "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-desktop-api-keys-loaded-before-revoke"
          },
          {
            "ok": true,
            "action": "dialog_response",
            "ordinal": 10,
            "selector": null,
            "frame_selector": null,
            "response": "accept",
            "message_text": "Are you sure you want to revoke \"Revoke Failure Key v327\"?"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 11,
            "selector": ".api-keys-list .revoke-btn",
            "frame_selector": null,
            "count": 1,
            "target_index": 0,
            "text": "Revoke"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 12,
            "selector": "body",
            "frame_selector": null,
            "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAvailable:2h~$1.00Total:2h~$1.00~240 jobs (30s minimum each)Buy Browser TimeAccount Summary2hBrowser Time$1.00ValueRecent JobsJob IDStatusRuntimeDatejob_rp327_completedCompleted32s5/15/2026, 12:30:00 PMAPI KeysUse API keys to authenticate requests to the Screenshot APISynthetic v327 API key revoke rejectedCreate API KeyNameKeyCreatedLast UsedStatusActions... (13902 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "label": "api-key-revoke-failed",
            "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-desktop-api-key-revoke-failed"
          }
        ],
        "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-desktop"
      },
      {
        "name": "phone",
        "width": 390,
        "height": 844,
        "url": "https://riddledc.com/dashboard/",
        "route": {
          "requested": "https://riddledc.com/dashboard/",
          "observed": "/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 1603,
        "body_text_sample": "Skip to main content Riddle Dashboard Browser Time Balance Available: 2h ~$1.00 Total: 2h ~$1.00 ~240 jobs (30s minimum each) Buy Browser Time Account Summary 2h Browser Time $1.00 Value Recent Jobs JOB ID STATUS RUNTIME DATE job_rp327_completed Completed 32s 5/15/2026, 12:30:00 PM API Keys Use API keys to authenticate requests to the Screenshot API Synthetic v327 API key revoke rejected Create API Key Name Key Created Last Used Status Actions Revoke Failure Key v327 rdc_live_•••V327 5/15/2026 Never Active Revoke 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
          },
          ".api-keys-section .error-message": {
            "count": 1,
            "visible_count": 1
          },
          ".api-keys-list tbody tr": {
            "count": 1,
            "visible_count": 1
          },
          ".api-keys-list .revoke-btn": {
            "count": 1,
            "visible_count": 1
          }
        },
        "frames": {},
        "text_sequences": {},
        "text_matches": {
          "text:API Keys": true,
          "text:Revoke Failure Key v327": true,
          "text:Synthetic v327 API key revoke rejected": true,
          "text:Active": true,
          "text:Revoke": true,
          "text:Revoked": false,
          "text:No API keys yet": false
        },
        "setup_action_results": [
          {
            "ok": true,
            "action": "clear_storage",
            "ordinal": 0,
            "selector": null,
            "frame_selector": null,
            "storage": "both",
            "reload": true
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 1,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.LastAuthUser",
            "value_length": 27,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.idToken",
            "value_length": 382,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.accessToken",
            "value_length": 360,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.refreshToken",
            "value_length": 19,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 5,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".dashboard-content",
            "frame_selector": null,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 7,
            "selector": "body",
            "frame_selector": null,
            "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAvailable:2h~$1.00Total:2h~$1.00~240 jobs (30s minimum each)Buy Browser TimeAccount Summary2hBrowser Time$1.00ValueRecent JobsJob IDStatusRuntimeDatejob_rp327_completedCompleted32s5/15/2026, 12:30:00 PMAPI KeysUse API keys to authenticate requests to the Screenshot APICreate API KeyNameKeyCreatedLast UsedStatusActionsRevoke Failure Key v327rdc_live_•••V32... (13864 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 8,
            "selector": null,
            "frame_selector": null,
            "cleared_console_event_count": 3,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 9,
            "selector": null,
            "frame_selector": null,
            "label": "api-keys-loaded-before-revoke",
            "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-phone-api-keys-loaded-before-revoke"
          },
          {
            "ok": true,
            "action": "dialog_response",
            "ordinal": 10,
            "selector": null,
            "frame_selector": null,
            "response": "accept",
            "message_text": "Are you sure you want to revoke \"Revoke Failure Key v327\"?"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 11,
            "selector": ".api-keys-list .revoke-btn",
            "frame_selector": null,
            "count": 1,
            "target_index": 0,
            "text": "Revoke"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 12,
            "selector": "body",
            "frame_selector": null,
            "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAvailable:2h~$1.00Total:2h~$1.00~240 jobs (30s minimum each)Buy Browser TimeAccount Summary2hBrowser Time$1.00ValueRecent JobsJob IDStatusRuntimeDatejob_rp327_completedCompleted32s5/15/2026, 12:30:00 PMAPI KeysUse API keys to authenticate requests to the Screenshot APISynthetic v327 API key revoke rejectedCreate API KeyNameKeyCreatedLast UsedStatusActions... (13902 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "label": "api-key-revoke-failed",
            "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-phone-api-key-revoke-failed"
          }
        ],
        "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-phone"
      },
      {
        "name": "ipad-mini",
        "width": 768,
        "height": 1024,
        "url": "https://riddledc.com/dashboard/",
        "route": {
          "requested": "https://riddledc.com/dashboard/",
          "observed": "/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 1603,
        "body_text_sample": "Skip to main content Riddle Dashboard Browser Time Balance Available: 2h ~$1.00 Total: 2h ~$1.00 ~240 jobs (30s minimum each) Buy Browser Time Account Summary 2h Browser Time $1.00 Value Recent Jobs JOB ID STATUS RUNTIME DATE job_rp327_completed Completed 32s 5/15/2026, 12:30:00 PM API Keys Use API keys to authenticate requests to the Screenshot API Synthetic v327 API key revoke rejected Create API Key Name Key Created Last Used Status Actions Revoke Failure Key v327 rdc_live_•••V327 5/15/2026 Never Active Revoke 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
          },
          ".api-keys-section .error-message": {
            "count": 1,
            "visible_count": 1
          },
          ".api-keys-list tbody tr": {
            "count": 1,
            "visible_count": 1
          },
          ".api-keys-list .revoke-btn": {
            "count": 1,
            "visible_count": 1
          }
        },
        "frames": {},
        "text_sequences": {},
        "text_matches": {
          "text:API Keys": true,
          "text:Revoke Failure Key v327": true,
          "text:Synthetic v327 API key revoke rejected": true,
          "text:Active": true,
          "text:Revoke": true,
          "text:Revoked": false,
          "text:No API keys yet": false
        },
        "setup_action_results": [
          {
            "ok": true,
            "action": "clear_storage",
            "ordinal": 0,
            "selector": null,
            "frame_selector": null,
            "storage": "both",
            "reload": true
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 1,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.LastAuthUser",
            "value_length": 27,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.idToken",
            "value_length": 382,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.accessToken",
            "value_length": 360,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.refreshToken",
            "value_length": 19,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 5,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".dashboard-content",
            "frame_selector": null,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 7,
            "selector": "body",
            "frame_selector": null,
            "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAvailable:2h~$1.00Total:2h~$1.00~240 jobs (30s minimum each)Buy Browser TimeAccount Summary2hBrowser Time$1.00ValueRecent JobsJob IDStatusRuntimeDatejob_rp327_completedCompleted32s5/15/2026, 12:30:00 PMAPI KeysUse API keys to authenticate requests to the Screenshot APICreate API KeyNameKeyCreatedLast UsedStatusActionsRevoke Failure Key v327rdc_live_•••V32... (13864 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 8,
            "selector": null,
            "frame_selector": null,
            "cleared_console_event_count": 3,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 9,
            "selector": null,
            "frame_selector": null,
            "label": "api-keys-loaded-before-revoke",
            "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-mini-api-keys-loaded-before-revoke"
          },
          {
            "ok": true,
            "action": "dialog_response",
            "ordinal": 10,
            "selector": null,
            "frame_selector": null,
            "response": "accept",
            "message_text": "Are you sure you want to revoke \"Revoke Failure Key v327\"?"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 11,
            "selector": ".api-keys-list .revoke-btn",
            "frame_selector": null,
            "count": 1,
            "target_index": 0,
            "text": "Revoke"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 12,
            "selector": "body",
            "frame_selector": null,
            "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAvailable:2h~$1.00Total:2h~$1.00~240 jobs (30s minimum each)Buy Browser TimeAccount Summary2hBrowser Time$1.00ValueRecent JobsJob IDStatusRuntimeDatejob_rp327_completedCompleted32s5/15/2026, 12:30:00 PMAPI KeysUse API keys to authenticate requests to the Screenshot APISynthetic v327 API key revoke rejectedCreate API KeyNameKeyCreatedLast UsedStatusActions... (13902 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "label": "api-key-revoke-failed",
            "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-mini-api-key-revoke-failed"
          }
        ],
        "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-mini"
      },
      {
        "name": "ipad",
        "width": 820,
        "height": 1180,
        "url": "https://riddledc.com/dashboard/",
        "route": {
          "requested": "https://riddledc.com/dashboard/",
          "observed": "/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 1603,
        "body_text_sample": "Skip to main content Riddle Dashboard Browser Time Balance Available: 2h ~$1.00 Total: 2h ~$1.00 ~240 jobs (30s minimum each) Buy Browser Time Account Summary 2h Browser Time $1.00 Value Recent Jobs JOB ID STATUS RUNTIME DATE job_rp327_completed Completed 32s 5/15/2026, 12:30:00 PM API Keys Use API keys to authenticate requests to the Screenshot API Synthetic v327 API key revoke rejected Create API Key Name Key Created Last Used Status Actions Revoke Failure Key v327 rdc_live_•••V327 5/15/2026 Never Active Revoke 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
          },
          ".api-keys-section .error-message": {
            "count": 1,
            "visible_count": 1
          },
          ".api-keys-list tbody tr": {
            "count": 1,
            "visible_count": 1
          },
          ".api-keys-list .revoke-btn": {
            "count": 1,
            "visible_count": 1
          }
        },
        "frames": {},
        "text_sequences": {},
        "text_matches": {
          "text:API Keys": true,
          "text:Revoke Failure Key v327": true,
          "text:Synthetic v327 API key revoke rejected": true,
          "text:Active": true,
          "text:Revoke": true,
          "text:Revoked": false,
          "text:No API keys yet": false
        },
        "setup_action_results": [
          {
            "ok": true,
            "action": "clear_storage",
            "ordinal": 0,
            "selector": null,
            "frame_selector": null,
            "storage": "both",
            "reload": true
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 1,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.LastAuthUser",
            "value_length": 27,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.idToken",
            "value_length": 382,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.accessToken",
            "value_length": 360,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.refreshToken",
            "value_length": 19,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 5,
            "selector": null,
            "frame_selector": null,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp327-dashboard@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".dashboard-content",
            "frame_selector": null,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 7,
            "selector": "body",
            "frame_selector": null,
            "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAvailable:2h~$1.00Total:2h~$1.00~240 jobs (30s minimum each)Buy Browser TimeAccount Summary2hBrowser Time$1.00ValueRecent JobsJob IDStatusRuntimeDatejob_rp327_completedCompleted32s5/15/2026, 12:30:00 PMAPI KeysUse API keys to authenticate requests to the Screenshot APICreate API KeyNameKeyCreatedLast UsedStatusActionsRevoke Failure Key v327rdc_live_•••V32... (13864 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 8,
            "selector": null,
            "frame_selector": null,
            "cleared_console_event_count": 3,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 9,
            "selector": null,
            "frame_selector": null,
            "label": "api-keys-loaded-before-revoke",
            "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-api-keys-loaded-before-revoke"
          },
          {
            "ok": true,
            "action": "dialog_response",
            "ordinal": 10,
            "selector": null,
            "frame_selector": null,
            "response": "accept",
            "message_text": "Are you sure you want to revoke \"Revoke Failure Key v327\"?"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 11,
            "selector": ".api-keys-list .revoke-btn",
            "frame_selector": null,
            "count": 1,
            "target_index": 0,
            "text": "Revoke"
          },
          {
            "ok": true,
            "action": "wait_for_text",
            "ordinal": 12,
            "selector": "body",
            "frame_selector": null,
            "text": "Skip to main contentRiddleDocsProofMCPPricingBlogPlaygroundDashboardBuy Creditsrp327-dashboard@example.comSign OutDashboardBrowser Time BalanceAvailable:2h~$1.00Total:2h~$1.00~240 jobs (30s minimum each)Buy Browser TimeAccount Summary2hBrowser Time$1.00ValueRecent JobsJob IDStatusRuntimeDatejob_rp327_completedCompleted32s5/15/2026, 12:30:00 PMAPI KeysUse API keys to authenticate requests to the Screenshot APISynthetic v327 API key revoke rejectedCreate API KeyNameKeyCreatedLast UsedStatusActions... (13902 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "label": "api-key-revoke-failed",
            "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-ipad-api-key-revoke-failed"
          }
        ],
        "screenshot_label": "riddle-site-v327-dashboard-api-key-revoke-failed-ipad"
      }
    ],
    "console": {
      "events": [
        {
          "type": "error",
          "text": "Failed to load resource: the server responded with a status of 409 (Conflict)",
          "location": {
            "url": "https://api.riddledc.com/billing/api-keys/key-rp327-existing",
            "lineNumber": 0,
            "columnNumber": 0
          }
        },
        {
          "type": "error",
          "text": "Revoke API key failed: {status: 409, errorData: Object}",
          "location": {
            "url": "https://riddledc.com/_next/static/chunks/app/dashboard/page-f4f42b43f9288665.js",
            "lineNumber": 0,
            "columnNumber": 3860
          }
        },
        {
          "type": "error",
          "text": "Failed to load resource: the server responded with a status of 409 (Conflict)",
          "location": {
            "url": "https://api.riddledc.com/billing/api-keys/key-rp327-existing",
            "lineNumber": 0,
            "columnNumber": 0
          }
        }
      ],
      "fatal_count": 3
    },
    "page_errors": [],
    "dialogs": [
      {
        "type": "confirm",
        "message": "Are you sure you want to revoke \"Revoke Failure Key v327\"? This cannot be undone.",
        "default_value": "",
        "configured": true,
        "response": "accept",
        "message_matches": true,
        "expected_message_text": "Are you sure you want to revoke \"Revoke Failure Key v327\"?",
        "ok": true
      },
      {
        "type": "confirm",
        "message": "Are you sure you want to revoke \"Revoke Failure Key v327\"? This cannot be undone.",
        "default_value": "",
        "configured": true,
        "response": "accept",
        "message_matches": true,
        "expected_message_text": "Are you sure you want to revoke \"Revoke Failure Key v327\"?",
        "ok": true
      },
      {
        "type": "confirm",
        "message": "Are you sure you want to revoke \"Revoke Failure Key v327\"? This cannot be undone.",
        "default_value": "",
        "configured": true,
        "response": "accept",
        "message_matches": true,
        "expected_message_text": "Are you sure you want to revoke \"Revoke Failure Key v327\"?",
        "ok": true
      },
      {
        "type": "confirm",
        "message": "Are you sure you want to revoke \"Revoke Failure Key v327\"? This cannot be undone.",
        "default_value": "",
        "configured": true,
        "response": "accept",
        "message_matches": true,
        "expected_message_text": "Are you sure you want to revoke \"Revoke Failure Key v327\"?",
        "ok": true
      }
    ],
    "network_mocks": [
      {
        "ok": true,
        "label": "dashboard-balance-v327",
        "response_label": "dashboard-balance-v327",
        "hit_index": 0,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v327",
        "response_label": "dashboard-jobs-v327",
        "hit_index": 0,
        "response_index": 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-v327-load",
        "response_label": "dashboard-api-keys-v327-load",
        "hit_index": 0,
        "response_index": 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-v327-revoke-error",
        "response_label": "dashboard-api-key-v327-revoke-error",
        "hit_index": 0,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys/key-rp327-existing",
        "method": "DELETE",
        "status": 409
      },
      {
        "ok": true,
        "label": "dashboard-balance-v327",
        "response_label": "dashboard-balance-v327",
        "hit_index": 1,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v327",
        "response_label": "dashboard-jobs-v327",
        "hit_index": 1,
        "response_index": 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-v327-load",
        "response_label": "dashboard-api-keys-v327-load",
        "hit_index": 1,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v327",
        "response_label": "dashboard-balance-v327",
        "hit_index": 2,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v327",
        "response_label": "dashboard-jobs-v327",
        "hit_index": 2,
        "response_index": 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-v327-load",
        "response_label": "dashboard-api-keys-v327-load",
        "hit_index": 2,
        "response_index": 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-v327-revoke-error",
        "response_label": "dashboard-api-key-v327-revoke-error",
        "hit_index": 1,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys/key-rp327-existing",
        "method": "DELETE",
        "status": 409
      },
      {
        "ok": true,
        "label": "dashboard-balance-v327",
        "response_label": "dashboard-balance-v327",
        "hit_index": 3,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v327",
        "response_label": "dashboard-jobs-v327",
        "hit_index": 3,
        "response_index": 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-v327-load",
        "response_label": "dashboard-api-keys-v327-load",
        "hit_index": 3,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v327",
        "response_label": "dashboard-balance-v327",
        "hit_index": 4,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v327",
        "response_label": "dashboard-jobs-v327",
        "hit_index": 4,
        "response_index": 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-v327-load",
        "response_label": "dashboard-api-keys-v327-load",
        "hit_index": 4,
        "response_index": 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-v327-revoke-error",
        "response_label": "dashboard-api-key-v327-revoke-error",
        "hit_index": 2,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys/key-rp327-existing",
        "method": "DELETE",
        "status": 409
      },
      {
        "ok": true,
        "label": "dashboard-balance-v327",
        "response_label": "dashboard-balance-v327",
        "hit_index": 5,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v327",
        "response_label": "dashboard-jobs-v327",
        "hit_index": 5,
        "response_index": 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-v327-load",
        "response_label": "dashboard-api-keys-v327-load",
        "hit_index": 5,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-balance-v327",
        "response_label": "dashboard-balance-v327",
        "hit_index": 6,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "dashboard-jobs-v327",
        "response_label": "dashboard-jobs-v327",
        "hit_index": 6,
        "response_index": 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-v327-load",
        "response_label": "dashboard-api-keys-v327-load",
        "hit_index": 6,
        "response_index": 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-v327-revoke-error",
        "response_label": "dashboard-api-key-v327-revoke-error",
        "hit_index": 3,
        "response_index": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://api.riddledc.com/billing/api-keys/key-rp327-existing",
        "method": "DELETE",
        "status": 409
      }
    ],
    "dom_summary": {
      "expected_viewport_count": 4,
      "viewport_count": 4,
      "partial": false,
      "routes": [
        {
          "requested": "https://riddledc.com/dashboard/",
          "observed": "/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://riddledc.com/dashboard/",
          "observed": "/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://riddledc.com/dashboard/",
          "observed": "/dashboard/",
          "expected_path": "/dashboard/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://riddledc.com/dashboard/",
          "observed": "/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": []
        }
      ],
      "route_inventory": [],
      "network_mock_count": 4,
      "network_mock_hit_count": 25,
      "dialog_count": 4,
      "dialog_accept_count": 4,
      "dialog_dismiss_count": 0
    }
  }
}