Skip to main content
AIDiveForge AIDiveForge
🕷️

Browser Testing Agent Loop

Agents & Workflows · by AIDiveForge · Apr 17, 2026 · Advanced · ✓ 1 verified compat

Exercise a web flow in a real browser and report reproducible failures.

Get observed results and concise bug reports with relevant evidence.

Free · 2 KB · SKILL.md, instructions and example files. Requires a browser automation tool and authorization for the tested environment and actions.

A worked example

A small example to try before using your own data.

Input

Flow: search for invoice 42, open result, refresh. Observed: search finds it; opening shows invoice 42; refresh returns 404 at /invoices/42. Desktop 1365×900.

Expected result

Bug: invoice detail does not survive refresh. Reproduce: search 42 → open invoice → reload /invoices/42. Expected: same invoice. Actual: HTTP 404. Initial client navigation succeeds; direct route handling needs investigation.

What to check: Report the refresh failure separately from the passing search. A mocked click or HTTP 200 alone does not establish rendered success.

Limits: No browser binary, accounts or hosted testing service is bundled. Results apply only to the environment actually exercised.

Worked example included. Model-specific performance and vendor compatibility have not been benchmarked.

Installation options and other formats

Install this skill

An agent skill starts with SKILL.md. The ZIP also includes its examples and any helper scripts. Drop the file into your tool of choice — or pick a different format if you use Cursor, Windsurf, Copilot, or something else.

Download SKILL.md
python3 - <<'ADF_SKILL_INSTALL'
import hashlib, io, os, stat, tempfile, urllib.request, zipfile
from pathlib import Path, PurePosixPath
folder = "browser-testing-agent-loop"
root = Path(os.environ.get('ADF_SKILL_ROOT', str(Path.home() / '.claude' / 'skills'))).expanduser()
destination = root / folder
if destination.exists() or destination.is_symlink():
    raise SystemExit('An installation already exists. Back it up and merge the ZIP deliberately.')
root.mkdir(parents=True, exist_ok=True)
request = urllib.request.Request("https://aidiveforge.com/skill/browser-testing-agent-loop.zip", headers={'User-Agent': 'AIDiveForge-Resource-Installer/1.0 (+https://aidiveforge.com/skills/)'})
with urllib.request.urlopen(request, timeout=30) as response:
    data = response.read(8 * 1024 * 1024 + 1)
if len(data) > 8 * 1024 * 1024 or hashlib.sha256(data).hexdigest() != "7698c7c4fcb67f4239954f2f0a3ba32058f6b9c174241692919d0b430bae8c8b":
    raise SystemExit('The download did not match this reviewed bundle. No files were installed.')
with zipfile.ZipFile(io.BytesIO(data)) as archive, tempfile.TemporaryDirectory(prefix='.adf-skill-', dir=root) as temporary:
    members = archive.infolist()
    if len(members) > 100 or sum(m.file_size for m in members) > 16 * 1024 * 1024:
        raise SystemExit('Unexpected archive size')
    for member in members:
        name = PurePosixPath(member.filename)
        if name.is_absolute() or '..' in name.parts or not name.parts or name.parts[0] != folder or '\\' in member.filename or stat.S_ISLNK(member.external_attr >> 16):
            raise SystemExit('Unsafe archive entry; nothing was installed')
        target = Path(temporary).joinpath(*name.parts)
        if member.is_dir():
            target.mkdir(parents=True, exist_ok=True)
        else:
            target.parent.mkdir(parents=True, exist_ok=True)
            with target.open('xb') as stream:
                stream.write(archive.read(member))
    staged = Path(temporary) / folder
    if not (staged / 'SKILL.md').is_file() or destination.exists() or destination.is_symlink():
        raise SystemExit('The skill could not be installed without replacing existing data')
    os.rename(staged, destination)
print('Installed the complete skill folder:', destination)
ADF_SKILL_INSTALL

Claude Code: ~/.claude/skills/browser-testing-agent-loop/SKILL.md. Codex: ~/.codex/skills/browser-testing-agent-loop/SKILL.md. Keep the complete ZIP folder when helper scripts are included.

🧠 Why it works

Report the refresh failure separately from the passing search. A mocked click or HTTP 200 alone does not establish rendered success.

⚙️ How it works

  1. State the user goal, test account, allowed side effects and starting state. Keep production writes within existing authorization.
  1. Run the flow through rendered controls. Check both the visible outcome and relevant requests or persisted state.
  1. Exercise desktop and phone layouts when layout is relevant, including keyboard focus and loading/error recovery.
  1. Capture only evidence that resolves a concrete issue. Redact tokens and personal data from logs.
  1. For each failure give the exact steps, expected/actual behavior, environment and smallest useful evidence.

Description

Get observed results and concise bug reports with relevant evidence.

Requires a browser automation tool and authorization for the tested environment and actions.

Limits: No browser binary, accounts or hosted testing service is bundled. Results apply only to the environment actually exercised.

Recommended Use

Tools and workflow packs this skill pairs well with. Forge picks are auto-generated from category + capability signals; Community picks are added by people who've used the pairing.