{
  "version": "riddle-proof.profile-result.v1",
  "profile_name": "riddle-site-v521-billing-promo-malformed-success",
  "runner": "riddle",
  "status": "passed",
  "baseline_policy": "invariant_only",
  "route": {
    "requested": "https://riddledc.com/billing/",
    "observed": "/billing/",
    "expected_path": "/billing/",
    "matched": true,
    "http_status": 200
  },
  "artifacts": {
    "screenshots": [
      "riddle-site-v521-billing-promo-malformed-success-desktop",
      "riddle-site-v521-billing-promo-malformed-success-desktop-billing-promo-before-malformed-success-submit",
      "riddle-site-v521-billing-promo-malformed-success-desktop-billing-promo-malformed-success-recovery",
      "riddle-site-v521-billing-promo-malformed-success-phone",
      "riddle-site-v521-billing-promo-malformed-success-phone-billing-promo-before-malformed-success-submit",
      "riddle-site-v521-billing-promo-malformed-success-phone-billing-promo-malformed-success-recovery",
      "riddle-site-v521-billing-promo-malformed-success-ipad-mini",
      "riddle-site-v521-billing-promo-malformed-success-ipad-mini-billing-promo-before-malformed-success-submit",
      "riddle-site-v521-billing-promo-malformed-success-ipad-mini-billing-promo-malformed-success-recovery",
      "riddle-site-v521-billing-promo-malformed-success-ipad",
      "riddle-site-v521-billing-promo-malformed-success-ipad-billing-promo-before-malformed-success-submit",
      "riddle-site-v521-billing-promo-malformed-success-ipad-billing-promo-malformed-success-recovery"
    ],
    "console": "console.json",
    "proof_json": "proof.json",
    "dom_summary": "dom-summary.json"
  },
  "checks": [
    {
      "type": "network_mocks_succeeded",
      "label": "network mocks succeeded",
      "status": "passed",
      "evidence": {
        "mock_count": 4,
        "required_count": 4,
        "hit_count": 25,
        "hits_by_label": {
          "billing-balance-v521": 7,
          "billing-history-v521": 7,
          "billing-auto-recharge-v521": 7,
          "billing-promo-v521-malformed-success": 4
        },
        "required_hits_by_label": {
          "billing-balance-v521": 4,
          "billing-history-v521": 4,
          "billing-auto-recharge-v521": 4,
          "billing-promo-v521-malformed-success": 4
        },
        "max_hits_by_label": {
          "billing-promo-v521-malformed-success": 4
        },
        "response_hits_by_label": {},
        "failed": []
      }
    },
    {
      "type": "setup_actions_succeeded",
      "label": "setup actions succeeded",
      "status": "passed",
      "evidence": {
        "action_count": 22,
        "viewports": [
          {
            "name": "desktop",
            "expected_action_count": 22,
            "ok": true,
            "result_count": 22
          },
          {
            "name": "phone",
            "expected_action_count": 22,
            "ok": true,
            "result_count": 22
          },
          {
            "name": "ipad-mini",
            "expected_action_count": 22,
            "ok": true,
            "result_count": 22
          },
          {
            "name": "ipad",
            "expected_action_count": 22,
            "ok": true,
            "result_count": 22
          }
        ],
        "setup_summary": {
          "viewport_count": 4,
          "action_count": 22,
          "viewports": [
            {
              "name": "desktop",
              "expected_action_count": 22,
              "ok": true,
              "result_count": 22,
              "observed_path": "/billing/",
              "final_url": "https://riddledc.com/billing/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 2,
                "wait_for_text": 4,
                "fill": 1,
                "clear_console": 1,
                "screenshot": 2,
                "click": 1,
                "assert_text_visible": 3,
                "assert_text_absent": 2
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v521-billing-promo-malformed-success-desktop-billing-promo-before-malformed-success-submit",
                "riddle-site-v521-billing-promo-malformed-success-desktop-billing-promo-malformed-success-recovery"
              ],
              "clicked_total": 1,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 14,
                  "selector": ".promo-input-group button",
                  "frame_selector": null,
                  "text": "Redeem"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 8,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Bro... (516 chars)"
                },
                {
                  "ordinal": 9,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Bro... (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 rp521-billing@example.com Sign Out Billing & Credits Bro... (516 chars)"
                },
                {
                  "ordinal": 16,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Bro... (516 chars)"
                },
                {
                  "ordinal": 17,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Bro... (516 chars)"
                },
                {
                  "ordinal": 18,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Bro... (516 chars)"
                }
              ],
              "failed": [],
              "optional_failed": []
            },
            {
              "name": "phone",
              "expected_action_count": 22,
              "ok": true,
              "result_count": 22,
              "observed_path": "/billing/",
              "final_url": "https://riddledc.com/billing/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 2,
                "wait_for_text": 4,
                "fill": 1,
                "clear_console": 1,
                "screenshot": 2,
                "click": 1,
                "assert_text_visible": 3,
                "assert_text_absent": 2
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v521-billing-promo-malformed-success-phone-billing-promo-before-malformed-success-submit",
                "riddle-site-v521-billing-promo-malformed-success-phone-billing-promo-malformed-success-recovery"
              ],
              "clicked_total": 1,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 14,
                  "selector": ".promo-input-group button",
                  "frame_selector": null,
                  "text": "Redeem"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 8,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 9,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 10,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 16,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 17,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 18,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                }
              ],
              "failed": [],
              "optional_failed": []
            },
            {
              "name": "ipad-mini",
              "expected_action_count": 22,
              "ok": true,
              "result_count": 22,
              "observed_path": "/billing/",
              "final_url": "https://riddledc.com/billing/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 2,
                "wait_for_text": 4,
                "fill": 1,
                "clear_console": 1,
                "screenshot": 2,
                "click": 1,
                "assert_text_visible": 3,
                "assert_text_absent": 2
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v521-billing-promo-malformed-success-ipad-mini-billing-promo-before-malformed-success-submit",
                "riddle-site-v521-billing-promo-malformed-success-ipad-mini-billing-promo-malformed-success-recovery"
              ],
              "clicked_total": 1,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 14,
                  "selector": ".promo-input-group button",
                  "frame_selector": null,
                  "text": "Redeem"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 8,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 9,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 10,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 16,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 17,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 18,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                }
              ],
              "failed": [],
              "optional_failed": []
            },
            {
              "name": "ipad",
              "expected_action_count": 22,
              "ok": true,
              "result_count": 22,
              "observed_path": "/billing/",
              "final_url": "https://riddledc.com/billing/",
              "action_counts": {
                "clear_storage": 1,
                "local_storage": 5,
                "wait_for_selector": 2,
                "wait_for_text": 4,
                "fill": 1,
                "clear_console": 1,
                "screenshot": 2,
                "click": 1,
                "assert_text_visible": 3,
                "assert_text_absent": 2
              },
              "frame_action_count": 0,
              "frame_urls": [],
              "setup_screenshots": [
                "riddle-site-v521-billing-promo-malformed-success-ipad-billing-promo-before-malformed-success-submit",
                "riddle-site-v521-billing-promo-malformed-success-ipad-billing-promo-malformed-success-recovery"
              ],
              "clicked_total": 1,
              "clicked_truncated": false,
              "click_count_action_total": 0,
              "click_count_value_total": 0,
              "clicked": [
                {
                  "ordinal": 14,
                  "selector": ".promo-input-group button",
                  "frame_selector": null,
                  "text": "Redeem"
                }
              ],
              "text_samples": [
                {
                  "ordinal": 8,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 9,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 10,
                  "action": "wait_for_text",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 16,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 17,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                },
                {
                  "ordinal": 18,
                  "action": "assert_text_visible",
                  "frame_selector": null,
                  "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spe... (516 chars)"
                }
              ],
              "failed": [],
              "optional_failed": []
            }
          ]
        },
        "failed": []
      }
    },
    {
      "type": "route_loaded",
      "label": "route_loaded",
      "status": "passed",
      "evidence": {
        "expected_path": "/billing/",
        "observed_paths": [
          "/billing/",
          "/billing/",
          "/billing/",
          "/billing/"
        ],
        "http_statuses": [
          200,
          200,
          200,
          200
        ]
      }
    },
    {
      "type": "selector_visible",
      "label": "selector_visible",
      "status": "passed",
      "evidence": {
        "selector": ".billing-container",
        "visible_counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "selector_visible",
      "label": "selector_visible",
      "status": "passed",
      "evidence": {
        "selector": ".promo-code-section",
        "visible_counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "selector_visible",
      "label": "selector_visible",
      "status": "passed",
      "evidence": {
        "selector": ".promo-code-section .error-message",
        "visible_counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Billing & Credits",
        "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": "1h 30m",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "1 active job",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Transaction History",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "v521 preserved transaction row",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Auto-Recharge",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Save a payment method to enable auto-recharge",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Promo Code",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_visible",
      "label": "text_visible",
      "status": "passed",
      "evidence": {
        "text": "Failed to redeem promo code. Please try again.",
        "matches": [
          true,
          true,
          true,
          true
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "Code redeemed successfully!",
        "matches": [
          false,
          false,
          false,
          false
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "Server error (200)",
        "matches": [
          false,
          false,
          false,
          false
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "not valid promo success json",
        "matches": [
          false,
          false,
          false,
          false
        ]
      }
    },
    {
      "type": "text_absent",
      "label": "text_absent",
      "status": "passed",
      "evidence": {
        "text": "SyntaxError",
        "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": ".promo-code-section .error-message",
        "expected_count": 1,
        "counts": [
          1,
          1,
          1,
          1
        ]
      }
    },
    {
      "type": "selector_count_equals",
      "label": "selector_count_equals",
      "status": "passed",
      "evidence": {
        "selector": ".promo-code-section .success-message",
        "expected_count": 0,
        "counts": [
          0,
          0,
          0,
          0
        ]
      }
    },
    {
      "type": "selector_count_equals",
      "label": "selector_count_equals",
      "status": "passed",
      "evidence": {
        "selector": ".transaction-history tbody tr",
        "expected_count": 3,
        "counts": [
          3,
          3,
          3,
          3
        ]
      }
    },
    {
      "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": [
          "merchant-ui-api\\.stripe\\.com/elements/wallet-config",
          "Failed to load resource: the server responded with a status of 4\\d\\d"
        ],
        "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": 2,
        "allowed_console_warning_count": 2,
        "allowed_console_texts": [],
        "allowed_console_patterns": [
          "merchant-ui-api\\.stripe\\.com/elements/wallet-config",
          "Stripe",
          "Automatic fallback to software WebGL.*host=b\\.stripecdn\\.com"
        ],
        "unallowed_console_warning_samples": [],
        "allowed_console_warning_samples": [
          "[GroupMarkerNotSet(crbug.com/242999)!:A0F01E003C1F0000]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content. https://newassets.hcaptcha.com/captcha/v1/6528675343bbcfa331f287bf983949f75bf1e7bb/static/hcaptcha.html#frame=challenge&id=0mdmxmzxq3q&host=b.stripecdn.com&sentry=true&reportapi=https%3A%2F%2Faccounts.hcaptcha.com&recaptchacompat=true&custom=false&hl=en&tplinks=on&andint=off&pstissuer=https%3A%2F%2Fpst-issuer.hcaptcha.com&sitekey=463b917e-e264-403f-ad34-34af0ee10294&size=invisible&theme=light&origin=https%3A%2F%2Fb.stripecdn.com",
          "[GroupMarkerNotSet(crbug.com/242999)!:A0501F003C1F0000]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content. https://newassets.hcaptcha.com/captcha/v1/6528675343bbcfa331f287bf983949f75bf1e7bb/static/hcaptcha.html#frame=challenge&id=0mdmxmzxq3q&host=b.stripecdn.com&sentry=true&reportapi=https%3A%2F%2Faccounts.hcaptcha.com&recaptchacompat=true&custom=false&hl=en&tplinks=on&andint=off&pstissuer=https%3A%2F%2Fpst-issuer.hcaptcha.com&sitekey=463b917e-e264-403f-ad34-34af0ee10294&size=invisible&theme=light&origin=https%3A%2F%2Fb.stripecdn.com"
        ]
      }
    }
  ],
  "summary": "riddle-site-v521-billing-promo-malformed-success passed 28 check(s) across 4 viewport(s) (desktop, phone, ipad-mini, ipad).",
  "captured_at": "2026-05-17T23:29:20.985Z",
  "evidence": {
    "version": "riddle-proof.profile-evidence.v1",
    "profile_name": "riddle-site-v521-billing-promo-malformed-success",
    "target_url": "https://riddledc.com/billing/",
    "baseline_policy": "invariant_only",
    "captured_at": "2026-05-17T23:29:20.985Z",
    "viewports": [
      {
        "name": "desktop",
        "width": 1280,
        "height": 900,
        "url": "https://riddledc.com/billing/",
        "route": {
          "requested": "https://riddledc.com/billing/",
          "observed": "/billing/",
          "expected_path": "/billing/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 2320,
        "body_text_sample": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: Free up to 10MB for 24 hours (excess charged at $0.023/GB) Bandwidth: $0.09/GB (~1 second per 1.5MB) Typical screenshot: 30s minimum (~$0.0042). View full pricing details Credits valid for 12 months. No auto-renewal, no surprises. Add Credits 🔒 Secure Payment by Stripe Your payment information is processed securely by Stripe and never stored on our servers. We never see or store your card details. Amount to Add: $5.00 (10 hours of browser time) $10.00 (20 hours of browser time) $50.00 (100 hours of browser time) $100.00 (200 hours of browser time) $500.00 (1,000 hours of browser time) Card Details: 🔒 Powered by Stripe This secure form is provided directly by Stripe. Your card information is encrypted and never stored on our servers. I agree to the Terms of Service Add $5.00 Auto-Recharge Automatically add credits when your balance falls below a threshold. 💳 Save a payment method to enable auto-recharge Add Payment Method Promo Code Have a promo code? Enter it below to add free browser time to your account. Failed to redeem promo code. Please try again. Redeem Transaction History Show $0 transactions Date Type Amount Description May 2026 5/17/2026 Job Completed -42s v521 preserved transaction row 5/17/2026 Hold Released +42s v521 preserved hold release 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": {
          ".billing-container": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section .error-message": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section .success-message": {
            "count": 0,
            "visible_count": 0
          },
          ".transaction-history tbody tr": {
            "count": 3,
            "visible_count": 3
          }
        },
        "frames": {},
        "text_sequences": {},
        "text_matches": {
          "text:Billing & Credits": true,
          "text:Browser Time Balance": true,
          "text:1h 30m": true,
          "text:1 active job": true,
          "text:Transaction History": true,
          "text:v521 preserved transaction row": true,
          "text:Auto-Recharge": true,
          "text:Save a payment method to enable auto-recharge": true,
          "text:Promo Code": true,
          "text:Failed to redeem promo code. Please try again.": true,
          "text:Code redeemed successfully!": false,
          "text:Server error (200)": false,
          "text:not valid promo success json": false,
          "text:SyntaxError": 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": 25,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@example.com.idToken",
            "value_length": 380,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@example.com.accessToken",
            "value_length": 360,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@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.rp521-billing@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".billing-container",
            "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 rp521-billing@example.com Sign Out Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchest... (2156 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 rp521-billing@example.com Sign Out Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchest... (2273 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 rp521-billing@example.com Sign Out Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchest... (2273 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 rp521-billing@example.com Sign Out Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchest... (2273 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "fill",
            "ordinal": 11,
            "selector": ".promo-input-group input",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "value_length": 23
          },
          {
            "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": "billing-promo-before-malformed-success-submit",
            "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-desktop-billing-promo-before-malformed-success-submit"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 14,
            "selector": ".promo-input-group button",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Redeem"
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 15,
            "selector": ".promo-code-section .error-message",
            "frame_selector": null,
            "optional": false,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 16,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchest... (2320 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 17,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchest... (2320 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 18,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Docs Proof MCP Pricing Blog Playground Dashboard Buy Credits rp521-billing@example.com Sign Out Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchest... (2320 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 19,
            "selector": ".promo-code-section",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 20,
            "selector": ".promo-code-section",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 21,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "billing-promo-malformed-success-recovery",
            "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-desktop-billing-promo-malformed-success-recovery"
          }
        ],
        "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-desktop"
      },
      {
        "name": "phone",
        "width": 390,
        "height": 844,
        "url": "https://riddledc.com/billing/",
        "route": {
          "requested": "https://riddledc.com/billing/",
          "observed": "/billing/",
          "expected_path": "/billing/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 2224,
        "body_text_sample": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: Free up to 10MB for 24 hours (excess charged at $0.023/GB) Bandwidth: $0.09/GB (~1 second per 1.5MB) Typical screenshot: 30s minimum (~$0.0042). View full pricing details Credits valid for 12 months. No auto-renewal, no surprises. Add Credits 🔒 Secure Payment by Stripe Your payment information is processed securely by Stripe and never stored on our servers. We never see or store your card details. Amount to Add: $5.00 (10 hours of browser time) $10.00 (20 hours of browser time) $50.00 (100 hours of browser time) $100.00 (200 hours of browser time) $500.00 (1,000 hours of browser time) Card Details: 🔒 Powered by Stripe This secure form is provided directly by Stripe. Your card information is encrypted and never stored on our servers. I agree to the Terms of Service Add $5.00 Auto-Recharge Automatically add credits when your balance falls below a threshold. 💳 Save a payment method to enable auto-recharge Add Payment Method Promo Code Have a promo code? Enter it below to add free browser time to your account. Failed to redeem promo code. Please try again. Redeem Transaction History Show $0 transactions Date Type Amount Description May 2026 5/17/2026 Job Completed -42s v521 preserved transaction row 5/17/2026 Hold Released +42s v521 preserved hold release 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": {
          ".billing-container": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section .error-message": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section .success-message": {
            "count": 0,
            "visible_count": 0
          },
          ".transaction-history tbody tr": {
            "count": 3,
            "visible_count": 3
          }
        },
        "frames": {},
        "text_sequences": {},
        "text_matches": {
          "text:Billing & Credits": true,
          "text:Browser Time Balance": true,
          "text:1h 30m": true,
          "text:1 active job": true,
          "text:Transaction History": true,
          "text:v521 preserved transaction row": true,
          "text:Auto-Recharge": true,
          "text:Save a payment method to enable auto-recharge": true,
          "text:Promo Code": true,
          "text:Failed to redeem promo code. Please try again.": true,
          "text:Code redeemed successfully!": false,
          "text:Server error (200)": false,
          "text:not valid promo success json": false,
          "text:SyntaxError": 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": 25,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@example.com.idToken",
            "value_length": 380,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@example.com.accessToken",
            "value_length": 360,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@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.rp521-billing@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".billing-container",
            "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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "fill",
            "ordinal": 11,
            "selector": ".promo-input-group input",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "value_length": 23
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 12,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "cleared_console_event_count": 2,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "billing-promo-before-malformed-success-submit",
            "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-phone-billing-promo-before-malformed-success-submit"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 14,
            "selector": ".promo-input-group button",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Redeem"
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 15,
            "selector": ".promo-code-section .error-message",
            "frame_selector": null,
            "optional": false,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 16,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 17,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 18,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 19,
            "selector": ".promo-code-section",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 20,
            "selector": ".promo-code-section",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 21,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "billing-promo-malformed-success-recovery",
            "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-phone-billing-promo-malformed-success-recovery"
          }
        ],
        "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-phone"
      },
      {
        "name": "ipad-mini",
        "width": 768,
        "height": 1024,
        "url": "https://riddledc.com/billing/",
        "route": {
          "requested": "https://riddledc.com/billing/",
          "observed": "/billing/",
          "expected_path": "/billing/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 2224,
        "body_text_sample": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: Free up to 10MB for 24 hours (excess charged at $0.023/GB) Bandwidth: $0.09/GB (~1 second per 1.5MB) Typical screenshot: 30s minimum (~$0.0042). View full pricing details Credits valid for 12 months. No auto-renewal, no surprises. Add Credits 🔒 Secure Payment by Stripe Your payment information is processed securely by Stripe and never stored on our servers. We never see or store your card details. Amount to Add: $5.00 (10 hours of browser time) $10.00 (20 hours of browser time) $50.00 (100 hours of browser time) $100.00 (200 hours of browser time) $500.00 (1,000 hours of browser time) Card Details: 🔒 Powered by Stripe This secure form is provided directly by Stripe. Your card information is encrypted and never stored on our servers. I agree to the Terms of Service Add $5.00 Auto-Recharge Automatically add credits when your balance falls below a threshold. 💳 Save a payment method to enable auto-recharge Add Payment Method Promo Code Have a promo code? Enter it below to add free browser time to your account. Failed to redeem promo code. Please try again. Redeem Transaction History Show $0 transactions Date Type Amount Description May 2026 5/17/2026 Job Completed -42s v521 preserved transaction row 5/17/2026 Hold Released +42s v521 preserved hold release 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": {
          ".billing-container": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section .error-message": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section .success-message": {
            "count": 0,
            "visible_count": 0
          },
          ".transaction-history tbody tr": {
            "count": 3,
            "visible_count": 3
          }
        },
        "frames": {},
        "text_sequences": {},
        "text_matches": {
          "text:Billing & Credits": true,
          "text:Browser Time Balance": true,
          "text:1h 30m": true,
          "text:1 active job": true,
          "text:Transaction History": true,
          "text:v521 preserved transaction row": true,
          "text:Auto-Recharge": true,
          "text:Save a payment method to enable auto-recharge": true,
          "text:Promo Code": true,
          "text:Failed to redeem promo code. Please try again.": true,
          "text:Code redeemed successfully!": false,
          "text:Server error (200)": false,
          "text:not valid promo success json": false,
          "text:SyntaxError": 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": 25,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@example.com.idToken",
            "value_length": 380,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@example.com.accessToken",
            "value_length": 360,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@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.rp521-billing@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".billing-container",
            "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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2060 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "fill",
            "ordinal": 11,
            "selector": ".promo-input-group input",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "value_length": 23
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 12,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "cleared_console_event_count": 2,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "billing-promo-before-malformed-success-submit",
            "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-ipad-mini-billing-promo-before-malformed-success-submit"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 14,
            "selector": ".promo-input-group button",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Redeem"
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 15,
            "selector": ".promo-code-section .error-message",
            "frame_selector": null,
            "optional": false,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 16,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 17,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 18,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 19,
            "selector": ".promo-code-section",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 20,
            "selector": ".promo-code-section",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 21,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "billing-promo-malformed-success-recovery",
            "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-ipad-mini-billing-promo-malformed-success-recovery"
          }
        ],
        "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-ipad-mini"
      },
      {
        "name": "ipad",
        "width": 820,
        "height": 1180,
        "url": "https://riddledc.com/billing/",
        "route": {
          "requested": "https://riddledc.com/billing/",
          "observed": "/billing/",
          "expected_path": "/billing/",
          "matched": true,
          "http_status": 200
        },
        "title": "Riddle Distributed Computing - Hosted Execution for AI Agents",
        "body_text_length": 2224,
        "body_text_sample": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: Free up to 10MB for 24 hours (excess charged at $0.023/GB) Bandwidth: $0.09/GB (~1 second per 1.5MB) Typical screenshot: 30s minimum (~$0.0042). View full pricing details Credits valid for 12 months. No auto-renewal, no surprises. Add Credits 🔒 Secure Payment by Stripe Your payment information is processed securely by Stripe and never stored on our servers. We never see or store your card details. Amount to Add: $5.00 (10 hours of browser time) $10.00 (20 hours of browser time) $50.00 (100 hours of browser time) $100.00 (200 hours of browser time) $500.00 (1,000 hours of browser time) Card Details: 🔒 Powered by Stripe This secure form is provided directly by Stripe. Your card information is encrypted and never stored on our servers. I agree to the Terms of Service Add $5.00 Auto-Recharge Automatically add credits when your balance falls below a threshold. 💳 Save a payment method to enable auto-recharge Add Payment Method Promo Code Have a promo code? Enter it below to add free browser time to your account. Failed to redeem promo code. Please try again. Redeem Transaction History Show $0 transactions Date Type Amount Description May 2026 5/17/2026 Job Completed -42s v521 preserved transaction row 5/17/2026 Hold Released +42s v521 preserved hold release 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": {
          ".billing-container": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section .error-message": {
            "count": 1,
            "visible_count": 1
          },
          ".promo-code-section .success-message": {
            "count": 0,
            "visible_count": 0
          },
          ".transaction-history tbody tr": {
            "count": 3,
            "visible_count": 3
          }
        },
        "frames": {},
        "text_sequences": {},
        "text_matches": {
          "text:Billing & Credits": true,
          "text:Browser Time Balance": true,
          "text:1h 30m": true,
          "text:1 active job": true,
          "text:Transaction History": true,
          "text:v521 preserved transaction row": true,
          "text:Auto-Recharge": true,
          "text:Save a payment method to enable auto-recharge": true,
          "text:Promo Code": true,
          "text:Failed to redeem promo code. Please try again.": true,
          "text:Code redeemed successfully!": false,
          "text:Server error (200)": false,
          "text:not valid promo success json": false,
          "text:SyntaxError": 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": 25,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 2,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@example.com.idToken",
            "value_length": 380,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 3,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@example.com.accessToken",
            "value_length": 360,
            "reload": false
          },
          {
            "ok": true,
            "action": "local_storage",
            "ordinal": 4,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "key": "CognitoIdentityServiceProvider.7u1bt3r20v613j7eaki9dkbhve.rp521-billing@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.rp521-billing@example.com.clockDrift",
            "value_length": 1,
            "reload": true
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 6,
            "selector": ".billing-container",
            "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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 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 Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2177 chars)",
            "target_index": 0,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "fill",
            "ordinal": 11,
            "selector": ".promo-input-group input",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "value_length": 23
          },
          {
            "ok": true,
            "action": "clear_console",
            "ordinal": 12,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "cleared_console_event_count": 1,
            "cleared_page_error_count": 0
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 13,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "billing-promo-before-malformed-success-submit",
            "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-ipad-billing-promo-before-malformed-success-submit"
          },
          {
            "ok": true,
            "action": "click",
            "ordinal": 14,
            "selector": ".promo-input-group button",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "target_index": 0,
            "text": "Redeem"
          },
          {
            "ok": true,
            "action": "wait_for_selector",
            "ordinal": 15,
            "selector": ".promo-code-section .error-message",
            "frame_selector": null,
            "optional": false,
            "timeout_ms": 30000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 16,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 17,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_visible",
            "ordinal": 18,
            "selector": "body",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "text": "Skip to main content Riddle Billing & Credits Browser Time Balance Your balance is measured in browser time - the actual seconds our browsers spend running your jobs. Available Browser Time: 1h 30m ~$0.75 value Reserved (Active Jobs): 2m 0s 1 active job Total: 1h 32m ~$0.77 value Pricing $0.50/hour browser compute (billed per second, 30-second minimum) Includes all infrastructure (EC2, Lambda, orchestration). No hidden compute costs. Storage & bandwidth charged at cost with no markup: Storage: F... (2224 chars)",
            "target_index": 0,
            "timeout_ms": 5000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 19,
            "selector": ".promo-code-section",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "assert_text_absent",
            "ordinal": 20,
            "selector": ".promo-code-section",
            "frame_selector": null,
            "optional": false,
            "count": 1,
            "timeout_ms": 1000
          },
          {
            "ok": true,
            "action": "screenshot",
            "ordinal": 21,
            "selector": null,
            "frame_selector": null,
            "optional": false,
            "label": "billing-promo-malformed-success-recovery",
            "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-ipad-billing-promo-malformed-success-recovery"
          }
        ],
        "screenshot_label": "riddle-site-v521-billing-promo-malformed-success-ipad"
      }
    ],
    "console": {
      "events": [
        {
          "type": "warning",
          "text": "[GroupMarkerNotSet(crbug.com/242999)!:A0F01E003C1F0000]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.",
          "location": {
            "url": "https://newassets.hcaptcha.com/captcha/v1/6528675343bbcfa331f287bf983949f75bf1e7bb/static/hcaptcha.html#frame=challenge&id=0mdmxmzxq3q&host=b.stripecdn.com&sentry=true&reportapi=https%3A%2F%2Faccounts.hcaptcha.com&recaptchacompat=true&custom=false&hl=en&tplinks=on&andint=off&pstissuer=https%3A%2F%2Fpst-issuer.hcaptcha.com&sitekey=463b917e-e264-403f-ad34-34af0ee10294&size=invisible&theme=light&origin=https%3A%2F%2Fb.stripecdn.com",
            "lineNumber": 0,
            "columnNumber": 0
          }
        },
        {
          "type": "warning",
          "text": "[GroupMarkerNotSet(crbug.com/242999)!:A0501F003C1F0000]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.",
          "location": {
            "url": "https://newassets.hcaptcha.com/captcha/v1/6528675343bbcfa331f287bf983949f75bf1e7bb/static/hcaptcha.html#frame=challenge&id=0mdmxmzxq3q&host=b.stripecdn.com&sentry=true&reportapi=https%3A%2F%2Faccounts.hcaptcha.com&recaptchacompat=true&custom=false&hl=en&tplinks=on&andint=off&pstissuer=https%3A%2F%2Fpst-issuer.hcaptcha.com&sitekey=463b917e-e264-403f-ad34-34af0ee10294&size=invisible&theme=light&origin=https%3A%2F%2Fb.stripecdn.com",
            "lineNumber": 0,
            "columnNumber": 0
          }
        }
      ],
      "fatal_count": 0
    },
    "page_errors": [],
    "dialogs": [],
    "network_mocks": [
      {
        "ok": true,
        "label": "billing-balance-v521",
        "response_label": "billing-balance-v521",
        "hit_index": 0,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-history-v521",
        "response_label": "billing-history-v521",
        "hit_index": 0,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/history",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-auto-recharge-v521",
        "response_label": "billing-auto-recharge-v521",
        "hit_index": 0,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/auto-recharge",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-promo-v521-malformed-success",
        "response_label": "billing-promo-v521-malformed-success",
        "hit_index": 0,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/confirm-payment",
        "method": "POST",
        "status": 200,
        "request_body_matches": true,
        "request_body_failures": [],
        "request_body_length": 40,
        "request_body_sample": "{\"promo_code\":\"RP521-MALFORMED-SUCCESS\"}"
      },
      {
        "ok": true,
        "label": "billing-balance-v521",
        "response_label": "billing-balance-v521",
        "hit_index": 1,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-history-v521",
        "response_label": "billing-history-v521",
        "hit_index": 1,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/history",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-auto-recharge-v521",
        "response_label": "billing-auto-recharge-v521",
        "hit_index": 1,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/auto-recharge",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-balance-v521",
        "response_label": "billing-balance-v521",
        "hit_index": 2,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-history-v521",
        "response_label": "billing-history-v521",
        "hit_index": 2,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/history",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-auto-recharge-v521",
        "response_label": "billing-auto-recharge-v521",
        "hit_index": 2,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/auto-recharge",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-promo-v521-malformed-success",
        "response_label": "billing-promo-v521-malformed-success",
        "hit_index": 1,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/confirm-payment",
        "method": "POST",
        "status": 200,
        "request_body_matches": true,
        "request_body_failures": [],
        "request_body_length": 40,
        "request_body_sample": "{\"promo_code\":\"RP521-MALFORMED-SUCCESS\"}"
      },
      {
        "ok": true,
        "label": "billing-balance-v521",
        "response_label": "billing-balance-v521",
        "hit_index": 3,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-history-v521",
        "response_label": "billing-history-v521",
        "hit_index": 3,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/history",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-auto-recharge-v521",
        "response_label": "billing-auto-recharge-v521",
        "hit_index": 3,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/auto-recharge",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-balance-v521",
        "response_label": "billing-balance-v521",
        "hit_index": 4,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-history-v521",
        "response_label": "billing-history-v521",
        "hit_index": 4,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/history",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-auto-recharge-v521",
        "response_label": "billing-auto-recharge-v521",
        "hit_index": 4,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/auto-recharge",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-promo-v521-malformed-success",
        "response_label": "billing-promo-v521-malformed-success",
        "hit_index": 2,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/confirm-payment",
        "method": "POST",
        "status": 200,
        "request_body_matches": true,
        "request_body_failures": [],
        "request_body_length": 40,
        "request_body_sample": "{\"promo_code\":\"RP521-MALFORMED-SUCCESS\"}"
      },
      {
        "ok": true,
        "label": "billing-balance-v521",
        "response_label": "billing-balance-v521",
        "hit_index": 5,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-history-v521",
        "response_label": "billing-history-v521",
        "hit_index": 5,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/history",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-auto-recharge-v521",
        "response_label": "billing-auto-recharge-v521",
        "hit_index": 5,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/auto-recharge",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-balance-v521",
        "response_label": "billing-balance-v521",
        "hit_index": 6,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/balance",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-history-v521",
        "response_label": "billing-history-v521",
        "hit_index": 6,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/history",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-auto-recharge-v521",
        "response_label": "billing-auto-recharge-v521",
        "hit_index": 6,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/auto-recharge",
        "method": "GET",
        "status": 200
      },
      {
        "ok": true,
        "label": "billing-promo-v521-malformed-success",
        "response_label": "billing-promo-v521-malformed-success",
        "hit_index": 3,
        "response_index": null,
        "response_selection": null,
        "sequence_reused": false,
        "sequence_cycle": false,
        "url": "https://riddledc.com/api/billing/confirm-payment",
        "method": "POST",
        "status": 200,
        "request_body_matches": true,
        "request_body_failures": [],
        "request_body_length": 40,
        "request_body_sample": "{\"promo_code\":\"RP521-MALFORMED-SUCCESS\"}"
      }
    ],
    "dom_summary": {
      "expected_viewport_count": 4,
      "viewport_count": 4,
      "partial": false,
      "routes": [
        {
          "requested": "https://riddledc.com/billing/",
          "observed": "/billing/",
          "expected_path": "/billing/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://riddledc.com/billing/",
          "observed": "/billing/",
          "expected_path": "/billing/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://riddledc.com/billing/",
          "observed": "/billing/",
          "expected_path": "/billing/",
          "matched": true,
          "http_status": 200
        },
        {
          "requested": "https://riddledc.com/billing/",
          "observed": "/billing/",
          "expected_path": "/billing/",
          "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": 25,
      "dialog_count": 0,
      "dialog_accept_count": 0,
      "dialog_dismiss_count": 0
    }
  }
}