118 lines
6.0 KiB
Markdown
118 lines
6.0 KiB
Markdown
---
|
||
name: agent-browser-browserless-openai-signup-smoke
|
||
description: Connect Agent Browser to Browserless or Browser Use CDP and automate OpenAI web flows. Use when Codex needs to (1) smoke-test ChatGPT signup from `chatgpt.com` through email/password/email-verification, or (2) drive an OpenAI OAuth authorize URL through login, email verification, Codex consent, and capture the final `localhost` callback URL. Includes Browserless troubleshooting notes, a Browser Use fallback workflow, and reusable Python helper scripts.
|
||
---
|
||
|
||
# Agent Browser CDP Flows
|
||
|
||
## Overview
|
||
|
||
Use this skill for two validated Agent Browser workflows:
|
||
|
||
- Browserless stealth CDP for ChatGPT signup smoke tests.
|
||
- Browser Use cloud browser + Agent Browser CDP attachment for OpenAI OAuth callback capture.
|
||
|
||
Prefer the Browser Use workflow for the OAuth callback task. It was more stable than Browserless for the final `localhost` redirect.
|
||
|
||
## Quick Start
|
||
|
||
### Browserless signup smoke
|
||
|
||
- Export `BROWSERLESS_TOKEN`.
|
||
- Run `python3 skills/agent-browser-browserless-openai-signup-smoke/scripts/openai_signup_smoke.py`.
|
||
- Use a non-deliverable but syntactically valid test email such as an `example.com` address.
|
||
- Prefer a fresh email alias on each run; reusing the same fake address can route the flow to `log-in/password` instead of the signup password page.
|
||
- Stop after the email-verification page unless the user explicitly asks for more.
|
||
|
||
Example:
|
||
|
||
```bash
|
||
export BROWSERLESS_TOKEN='...'
|
||
python3 skills/agent-browser-browserless-openai-signup-smoke/scripts/openai_signup_smoke.py \
|
||
--email 'agent-browser-smoke@example.com' \
|
||
--password 'TempPass!20260315' \
|
||
--output /tmp/openai-signup-smoke.json
|
||
```
|
||
|
||
### Browser Use OAuth callback capture
|
||
|
||
- Install `browser-use-sdk` in a local environment.
|
||
- Export `BROWSER_USE_API_KEY`.
|
||
- Run `python3 skills/agent-browser-browserless-openai-signup-smoke/scripts/browseruse_oauth_callback.py` with the OAuth authorize URL, login email, and password.
|
||
- Omit `--code` to stop at the email-verification page.
|
||
- Add `--code ... --approve-consent` to continue through the Codex consent page and capture the final `localhost` callback URL.
|
||
|
||
Example: stop at verification
|
||
|
||
```bash
|
||
export BROWSER_USE_API_KEY='...'
|
||
python3 skills/agent-browser-browserless-openai-signup-smoke/scripts/browseruse_oauth_callback.py \
|
||
--oauth-url 'https://auth.openai.com/oauth/authorize?...' \
|
||
--email 'user@example.com' \
|
||
--password 'secret' \
|
||
--output /tmp/browseruse-oauth.json
|
||
```
|
||
|
||
Example: capture callback after receiving the email code
|
||
|
||
```bash
|
||
export BROWSER_USE_API_KEY='...'
|
||
python3 skills/agent-browser-browserless-openai-signup-smoke/scripts/browseruse_oauth_callback.py \
|
||
--oauth-url 'https://auth.openai.com/oauth/authorize?...' \
|
||
--email 'user@example.com' \
|
||
--password 'secret' \
|
||
--code '123456' \
|
||
--approve-consent \
|
||
--trace-path /tmp/browseruse-oauth-trace.zip \
|
||
--output /tmp/browseruse-oauth.json
|
||
```
|
||
|
||
## Workflow A: Browserless Signup Smoke
|
||
|
||
1. Build the Browserless stealth websocket URL:
|
||
`wss://production-sfo.browserless.io/chrome/stealth?token=...`
|
||
2. Connect Agent Browser to that websocket with a dedicated session name.
|
||
3. Open `https://chatgpt.com` and wait briefly for the homepage to stabilize.
|
||
4. Click `Sign up for free` with a role-based locator instead of brittle element references.
|
||
5. Fill a format-valid test email and submit.
|
||
6. Fill a test password and submit.
|
||
7. Read back the resulting URL, title, and interactive snapshot.
|
||
8. Treat `https://auth.openai.com/email-verification` / `Check your inbox - OpenAI` as a successful smoke-test result.
|
||
|
||
## Workflow B: Browser Use OAuth Callback Capture
|
||
|
||
1. Create a Browser Use cloud browser with the SDK.
|
||
2. Read `cdp_url` from the Browser Use session, then fetch `/json/version` to get `webSocketDebuggerUrl`.
|
||
3. Connect Agent Browser to that websocket URL.
|
||
4. Open the OpenAI OAuth authorize URL.
|
||
5. Log in with the provided email and password.
|
||
6. If no verification code is available yet, stop on `https://auth.openai.com/email-verification`.
|
||
7. When a verification code is available, submit it and wait for `https://auth.openai.com/sign-in-with-chatgpt/codex/consent`.
|
||
8. Before pressing the consent `Continue` button, route `http://localhost:1455/*` so the callback URL survives even if the upstream app is not listening.
|
||
9. Optionally start `agent-browser trace` before the consent click.
|
||
10. Click consent `Continue`, then read the full callback URL from the current page URL.
|
||
|
||
## Expected Observations
|
||
|
||
- Browserless plain CDP can stall on `Just a moment...`; Browserless stealth is better for signup smoke tests.
|
||
- Browser Use’s direct `agent-browser -p browseruse` provider path can fail, while Browser Use SDK session creation plus explicit CDP attachment works.
|
||
- Browser Use-backed Agent Browser runs were more stable than Browserless for the OAuth callback flow.
|
||
- A successful callback capture can still render a proxy or upstream error page; if the current URL begins with `http://localhost:1455/auth/callback?...`, the callback was captured successfully.
|
||
- Reused or stale verification codes show `Incorrect code` on the email-verification page.
|
||
|
||
See `references/observations.md` for the concrete results captured during testing.
|
||
|
||
## Troubleshooting
|
||
|
||
- If the title is `Just a moment...`, reconnect with the Browserless stealth endpoint.
|
||
- If Agent Browser falls back to `chrome://new-tab-page/`, discard that run and start a fresh end-to-end session.
|
||
- Use fresh verification codes quickly; they expire and cannot be replayed reliably.
|
||
- Browser Use browser creation currently accepts `timeout <= 240`.
|
||
- If the final page shows `502 Bad Gateway` or `localhost refused to connect`, inspect the current URL before assuming failure.
|
||
|
||
## Resources
|
||
|
||
- `scripts/openai_signup_smoke.py` runs the Browserless signup smoke flow and emits a machine-readable summary.
|
||
- `scripts/browseruse_oauth_callback.py` creates a Browser Use cloud browser, attaches Agent Browser via CDP, and captures OpenAI OAuth callback URLs.
|
||
- `references/observations.md` records the tested Browserless and Browser Use behavior.
|