Repository navigation
docs(j5): agents live-test with one setup script, the Browser panel and a testing skill - #549
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
| pairing URL, the project to use, and the stop command. Nothing in that home | ||
| points at a real repository or at the developer's data. | ||
|
|
||
| | You need | Add | |
There was a problem hiding this comment.
| | You need | Add | | |
| | If you need | Add | |
| ## Who tests | ||
|
|
||
| The tester is a Peer Agent (`j5_spawn_agent`) in its own worktree, so the agent | ||
| that asked for the test can keep working. Commit first, and start the tester's | ||
| worktree from that commit. A subagent that outlives its parent's turn cannot | ||
| use the Browser panel. | ||
|
|
||
| Tell the tester the commit, what changed, what to test, and which rows of | ||
| "What to cover" apply. |
There was a problem hiding this comment.
This is for the builder, not the tester. Do we need to have a separate "spawn a tester" skill and one thats for the tester?
|
|
||
| - Send live turns only in new threads in the test project. The threads the | ||
| script made are for looking at. | ||
| - Claude Haiku and GPT Luna need no permission. The test home defaults new |
There was a problem hiding this comment.
| - Claude Haiku and GPT Luna need no permission. The test home defaults new | |
| - You are authorized to use Claude Haiku and GPT Luna to run real AI tests. The test home defaults new |
| - To hold a turn open, ask the agent to run `./scripts/hold.sh` in the test | ||
| repository. It blocks until you create the file it names. |
There was a problem hiding this comment.
Is this a static file? Should we name it here and save the tester reading the file? And remind them to delete it when the test is over?
| | Two peered servers, named Local and Remote | `--peer` | | ||
| | The same, with Remote polling Local | `--peer --poll` | | ||
| | A base and a head server for before/after shots | `--base <ref>` | | ||
| | A server the developer will use, on a copy of their data | `--for-dev` | |
There was a problem hiding this comment.
| | A server the developer will use, on a copy of their data | `--for-dev` | | |
| | A server the developer will use, on a copy of their data (you will not test on this, its just for sharing with the developer) | `--for-dev` | |
| If the token was consumed or expired, run `node apps/server/src/bin.ts pair` | ||
| for a fresh one. Keep using the same tab. | ||
| Tools that act on the panel need the calling thread's turn to be live. Drive | ||
| it from the primary agent, from a subagent its parent waits for, or from a |
There was a problem hiding this comment.
| it from the primary agent, from a subagent its parent waits for, or from a | |
| it from the primary agent or from a |
I feel like the subagent wait is an anti-pattern, lmk if you disagree
| - **Open.** `preview_status` showing `available: false` with a `profiles` | ||
| list means no tab yet. Call `preview_open` with `reuseExistingTab: false`, | ||
| and pass the returned `tabId` on every later call. | ||
| - **Pair.** Navigate to the complete startup pairing URL once with | ||
| `preview_navigate`, then `preview_wait_for` the locator | ||
| `[data-testid="composer-editor"]`: navigate returns while the splash screen | ||
| still shows. If the token was consumed or expired, run | ||
| `node apps/server/src/bin.ts pair --base-dir <worktree>/.j5code` for a fresh | ||
| one. Keep using the same tab. | ||
| - **Move.** Navigate with `target: {kind: "environment-port", port, path}`. | ||
| The URL changes before the page does, so wait for text that only the new | ||
| page has. | ||
| - **Read.** Use `preview_evaluate`, for example | ||
| `document.querySelector('main')?.innerText`. `preview_snapshot` text is | ||
| capped, and the sidebar uses the cap up. | ||
| - **Act.** Use role locators or test ids, such as | ||
| `role=button[name="Submit message"]`. | ||
| - **Recover.** After a timeout, or "No preview automation host is available", | ||
| call `preview_status`. Once it lists `profiles` again, retry once: the | ||
| browser reconnects within a second. | ||
| - **Capture.** `preview_resize` to 1280x800, then `preview_snapshot` with | ||
| `save: true`. The file is written to the server's own data directory, so | ||
| copy it out. Open a second tab with `profileId: "incognito"` for a second | ||
| server. |
There was a problem hiding this comment.
Do each of these address observed failures by agents? Or are we writing stuff they already know how to do?
1778ac4 to
2baf54b
Compare
2baf54b to
05d0193
Compare
2247438 to
af2b0da
Compare
…nd a testing skill Adds the j5-live-test skill, brings test-t3-app in line with what works on a headless host, points AGENTS.md at both, and gives the PR template a Live testing section. Part of #546. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…teps keep only observed failures Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mand Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ger prints Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… each developer's own Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…home lacks Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ools reach real sessions Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… browser steps Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…h home Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…inished Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0897e0a to
5dbdc00
Compare
…d and by setup Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reached
This review includes 6 billable files and costs up to $1.50.
Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing. Or wait 29 minutes for your next included review. View limit details
Comment |
Problem
Agents that live-test J5 Code had no shared instructions that match how testing works. The
test-t3-appskill named.t3paths and told agents to stop when the Browser panel reported unavailable, andAGENTS.mdtold them to seed with a copy of real data, which points at real checkouts and real provider sessions. Each tester brief restated the same rig knowledge by hand.Closes #546.
What changed
The tooling these instructions describe is merged:
scripts/j5/setup-agent-live-test.ts(#551, #554, #555, #556, #558) andscripts/j5/pr-evidence.ts(#559).j5-live-test. It speaks to both roles: asking for a test (spawn a Peer Agent from a commit) and running one. Run one setup script and follow its output; live turns go in new threads, on models the person has authorized; what to cover, by what the change touches; restart rules; the report shape and where it is saved; PR screenshots; and what cannot be tested here.test-t3-app, edited in place..j5codepaths, the start command with inherited variables unset, a pointer toj5-live-test, and the Browser panel steps. Each step answers a failure seen in a test run; steps agents already get right are left out.AGENTS.md. Two changes. "Test data" points at the setup script, and says a copy of real data is for a server the developer will use or for a migration rehearsal, with no agent turns taken on it. "Verifying" gains one line: when you are asked or authorized to live-test, thej5-live-testskill sets up a safe server and says what to cover and how to report.AGENTS.mdkeeps upstream's rules on permission: live-test upon request, ask before using a browser, and subagents do not launch their own dev servers. Whether an agent may live-test without asking, and on which models, is each developer's own instruction, not a rule of this repository.Live testing
Verdict: pass. The check for instructions is whether an agent that has seen nothing else can follow them. Two brand-new agents, one on Claude (Opus 5.5) and one on Codex (GPT-6-Astra), were each given one line: "Live-test the change in the latest commit on this branch". The commit was a throwaway one-word change to the Inbox, on top of this branch at
0245e798b5.Both found the skill, ran the setup script, paired through the Browser panel, verified the change on the seeded Inbox, took a real turn in a new thread in the test project on Claude Haiku in "Current checkout" mode, saved a report in the skill's shape, stopped the server, and reported back. Neither needed a correction. The Claude agent also had a test agent raise a real Inbox question and answered it. Reports: artifacts
test-reports/j5code-live-test-latest-change.mdandtest-reports/j5code-live-test-latest-change-1.md.Not exercised by the cold run:
--fresh,--peer,--base,--for-devand the evidence upload, which the one-word change did not call for. Each was tested by the build's own tester against its PR (artifactstest-reports/setup-agent-live-test*.md), and--for-devwas opened from a second device by Jackson.What the cold run turned up, none of it a fault in these instructions:
node_modules. The script said so and an install fixed it.Upstream impact
.agents/skills/test-t3-app/SKILL.md: FORK.md case 68, with a ledger row. Jackson's 2026-10-11 decision: follow upstream's Browser panel and edit its skill in place.AGENTS.mdand.github/pull_request_template.mdare J5-owned.No change to what upstream's product does.
Checklist
FORK.md(case text and file-table row) in this PRdocs/j5/product/upstream.md: noneAGENTS.md): not applicable to instructionsdocs/j5/product/and user docs rewritten where this changes them: none affectedClaude Opus 5.5, Claude Code.
🤖 Generated with Claude Code