fork download
  1. "set +H; python3 - << 'EVALEOF'\nimport json\nimport os\nimport sys\nimport subprocess\nimport urllib.request\nimport time\ntry:\n import pychrome\nexcept ImportError:\n subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", \"--user\", \"pychrome\"])\n import pychrome\n\ndef fail(msg):\n print(f\"FAIL:{msg}\")\n sys.exit(0)\n\ndef get_value(res):\n if not res: return None\n inner = res.get(\"result\")\n if not inner: return None\n if isinstance(inner, dict) and \"value\" in inner: return inner.get(\"value\")\n nested = inner.get(\"result\") if isinstance(inner, dict) else None\n if isinstance(nested, dict): return nested.get(\"value\")\n return None\n\ntry:\n req = urllib.request.urlopen(\"http://127.0.0.1:9222/json/list\", timeout=5)\n targets = json.loads(req.read())\nexcept Exception as e:\n fail(f\"NO_DEBUG_PORT:{e}\")\n\npage_tab = next((t for t in targets if t.get(\"type\") == \"page\" and \"waymart\" in (t.get(\"url\") or \"\").lower()), None)\nif not page_tab: fail(\"WAYMART_TAB_NOT_FOUND\")\ntarget_id = page_tab[\"id\"]\n\nbrowser = pychrome.Browser(url=\"http://127.0.0.1:9222\")\ntabs = browser.list_tab()\ntab = next((t for t in tabs if getattr(t, \"id\", None) == target_id), None)\nif not tab: fail(\"WAYMART_TAB_NOT_FOUND\")\ntab.start()\n\nexpr_login = \"\"\"\n(() => {\n try {\n const auth = JSON.parse(localStorage.getItem('auth') || '{}');\n if (\\!auth.isAuthenticated || auth.userId !== 'USR-1') return null;\n const users = JSON.parse(localStorage.getItem('users') || '{}');\n const user = (users.users || []).find(u => u.id === 'USR-1');\n return user ? user.email : null;\n } catch { return null; }\n})();\n\"\"\"\nres = tab.call_method(\"Runtime.evaluate\", expression=expr_login, awaitPromise=True)\nemail = get_value(res)\nif email is None: fail(\"NOT_LOGGED_IN_AS_ADMIN\")\nemail = (email if isinstance(email, str) else str(email)).strip().lower()\nif email != \"admin@waymart.com\": fail(\"NOT_LOGGED_IN_AS_ADMIN\")\n\nexpr_order = \"\"\"\n(() => {\n try {\n const raw = localStorage.getItem('purchased_items');\n if (raw) {\n const data = JSON.parse(raw);\n if (data && data.items && data.items.length) return { items: data.items, fromPurchasedItems: true };\n }\n const keys = ['orders', 'order', 'checkout', 'lastOrder'];\n for (const k of keys) {\n const r = localStorage.getItem(k);\n if (\\!r) continue;\n const data = JSON.parse(r);\n const order = data.lastOrder || data.order || data.orders?.[0] || data;\n if (order && (order.shippingAddress || order.deliverySlot || (order.items && order.items.length))) return order;\n }\n return null;\n } catch { return null; }\n})();\n\"\"\"\nres = tab.call_method(\"Runtime.evaluate\", expression=expr_order, awaitPromise=True, returnByValue=True)\norder = get_value(res)\nif not order: fail(\"ORDER_NOT_COMPLETED\")\n\nitems_raw = order.get(\"items\") or order.get(\"lineItems\") or order.get(\"orderItems\") or order.get(\"products\") or []\nif not isinstance(items_raw, list): items_raw = [items_raw] if items_raw else []\nitem = next((i for i in items_raw if \"huggies\" in (i.get(\"productName\") or i.get(\"name\") or i.get(\"title\") or \"\").lower() or str(i.get(\"productId\") or \"\") == \"1012\"), None)\nif not item: fail(\"PRODUCT_NOT_IN_CART\")\nqty = item.get(\"quantity\") or item.get(\"qty\") or item.get(\"quantityOrdered\")\nif qty != 2: fail(\"INCORRECT_QUANTITY\")\nvariant = item.get(\"variant\") or item.get(\"variantAttributes\") or {}\nraw_size = variant.get(\"size\") or variant.get(\"Size\") or item.get(\"size\") or item.get(\"Size\") or \"\"\nsize_ok = raw_size == 5 or str(raw_size).strip() == \"5\" or \"5\" in str(raw_size).strip()\nif not size_ok: fail(\"WRONG_SIZE\")\n\nif not order.get(\"fromPurchasedItems\"):\n shipping = order.get(\"shippingAddress\") or {}\n if shipping.get(\"name\") != \"Michael Chen\": fail(\"WRONG_SHIPPING_ADDRESS\")\n if not order.get(\"deliverySlot\"): fail(\"DELIVERY_SLOT_NOT_SELECTED\")\n\n_saved_stderr = sys.stderr\nsys.stderr = open(os.devnull, \"w\")\ntab.stop()\ntime.sleep(0.2)\nprint(\"PASS\")\nsys.exit(0)\nEVALEOF"
Success #stdin #stdout 0.12s 14072KB
stdin
Standard input is empty
stdout
Standard output is empty