Skip to content

Instantly share code, notes, and snippets.

@up1
Last active September 28, 2026 16:28
Show Gist options
  • Select an option

  • Save up1/0e5c7f35516bba2a92b11de2dd998967 to your computer and use it in GitHub Desktop.

Select an option

Save up1/0e5c7f35516bba2a92b11de2dd998967 to your computer and use it in GitHub Desktop.
Hello bugpatrol
# ทำการติดตั้ง Playwright และติดตั้ง browser ที่ตัว bugpatrol ต้องการ
$PLAYWRIGHT_SKIP_BROWSER_GC=1 npx -y playwright@1.48.2 install chromium
# Run โดยไม่ใช้งาน LLM
$npx bugpatrol run --no-models
$npx bugpatrol run
note: Decider: none,
because no OPENROUTER_API_KEY, AI_GATEWAY_API_KEY, OPENAI_API_KEY,
ANTHROPIC_API_KEY or BUGPATROL_MODEL_ENDPOINT and BUGPATROL_MODEL_API_KEY is set.
$npx bugpatrol run
Starting the app: node server.js
Capturing / at desktop
Capturing / at mobile
PASS no tier-1 regressions
1/1 screen(s), 2 capture(s), mode changed-only
note: determinism.image is not pinned by digest, so these baselines are only valid on this machine. See docs/determinism-contract.md.
note: Decider: model via anthropic (claude-haiku-4-5).
Report: .../fixture-app/.bugpatrol/runs/gate/run_mulfnjmx/report.html
Exit 0 (clean, or non-blocking findings only)
Decision spend: $0.03671
$npx bugpatrol dashboard
Bugpatrol dashboard on http://127.0.0.1:4311
Watching .bugpatrol/runs/ — runs appear as they finish. Ctrl-C to stop.
$npx bugpatrol explore
Explorer started
Called open.
Opened a link: failed
Called look.
Looked at Fixture · Dashboard
Called save_routine.
save_routine: Saved enter-app (requires none, 0 steps).
Recorded Dashboard
Called record_screen.
Called tap.
Tapped "Save"
Called wait.
Waited 2s
Called tap.
Tapped "Settings"
Recorded Settings
Called record_screen.
Called look.
Looked at Fixture · Settings
Called press.
Pressed Tab
Notification preferences label text is clipped and unreadable
Called report_bug.
report_bug: Reported can_3526e40eb6d2: Notification preferences label text is clipped and unreadable.
Called tap.
Tapped "Toggle"
Toggle button gives no visible feedback
Called report_bug.
report_bug: Reported can_67951edc717f: Toggle button gives no visible feedback.
Called back.
Went back
Called scroll.
Scrolled down
Called tap.
Tapped "Fixture"
Called run_routine.
Replayed the routine enter-app
Called tap.
Tapped "Settings"
Called list_screens.
list_screens: settings: Settings (screen-settings)
Learned (explorer): The Dashboard "updated" timestamp is a live clock that changes on every page load/navigation regardless of clicking Save — this is intentional non-determinism, not a bug.
Called save_lesson.
save_lesson: Saved les_cb850ee46fa9 for the explorer.
Learned (explorer): Settings screen has no header/nav bar at all, so there is no in-UI way back to Dashboard from Settings (only browser/tool back) — this is the app's known "one nav edge," not a bug.
Called save_lesson.
save_lesson: Saved les_fb66d4b02d9d for the explorer.
Called finish.
finish: Covered both screens in the app: Dashboard (/) and Settings (/settings).
[{"type":"system","subtype":"init","cwd":"/Users/somkiatpuisungnoen/data/slide/AI/2026/qa-ai/bugpatrol/examples/fixture-app","session_id":"a40237dd-3352-4295-94ba-e3e0aed1fb28","tools":["Task","Bash","Edit","ExitWorktree","ListAgents","LSP","Read","Skill","TaskOutput","TaskStop","ToolSearch","WebFet
Covered both screens in the app: Dashboard (/) and Settings (/settings).
Dashboard: exercised the "Settings" nav link and the "Save" button (no visible feedback on Save; the "updated" timestamp is a live clock unrelated to Save clicks). The "Fixture" heading is non-interactive text, not a logo link.
Settings: exercised "Toggle" and inspected the notification-preferences field. Reported two bugs:
1. (minor) Notification preferences label text is clipped/truncated in its field with no ellipsis, wrapping, tooltip, or keyboard focusability — full content is unreadable.
2. (minor) "Toggle" button gives no visible state feedback (no switch, no label change, no confirmation).
"Delete account" was correctly skipped as a destructive, unsafe action per the app guide.
Not a bug (confirmed via lessons saved): the dashboard's live-clock timestamp, and Settings' lack of any nav bar back to Dashboard (the app's known "one nav edge").
No further screens, dialogs, or menus were discoverable — this fixture app appears fully mapped with 2 screens and all safe controls used.
2 screen(s) known, 2 candidate(s) raised in 22 steps.
Saved 2 lesson(s) for the next sessions
Tokens: the runtime reported no token usage.
Next: run `bugpatrol judge` to file the real bugs as issues, or open `bugpatrol dashboard`.
# Config for Bugpatrol's own fixture app. Used by scripts/determinism-check.sh.
version: 1
run:
command: node server.js
url: http://localhost:3300/
ready:
selectors: ["[data-testid=app-root]"]
forbidConsoleErrors: true
timeoutMs: 30000
viewports:
- { name: desktop, width: 1024, height: 700 }
- { name: mobile, width: 390, height: 844 }
mask:
# Genuinely unstable: an ISO timestamp written by page script. The clock is
# frozen by the determinism contract, so this is masked to prove masking is
# accounted for rather than because it is needed.
- { selector: "[data-testid=user-avatar]", reason: "not present; asserts masking is tolerant of absent selectors" }
tolerance:
default: exact
# CI runs this app with `run --no-models`, so no decider makes a network call.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment