You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* update docs
* updated docs, added browser plugin
* feat(mcp): per-test plugin overrides + shell session lifecycle
- run_test / run_step_by_step accept a `plugins` object that mirrors
the CLI `-p` flag (e.g. `{ screencast: { saveScreenshots: true },
aiTrace: { on: 'fail' }, pause: true }`). Container is re-initialized
when the plugin set changes between calls.
- start_browser / stop_browser now drive a full shell session like
`codeceptjs shell`: bootstrap, recorder.start, suite.before /
test.before on start; matching after events plus codecept.teardown
on stop.
- run_code / snapshot now require an active session (shell or paused
test) and return a clear error pointing the agent at start_browser
or run_test otherwise. Plugins and listeners that depend on
suite.before / test.before now fire correctly during MCP usage.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(trace): TraceReader API + ariaDiff in run_code
Move artifact-on-disk reading from mcp-server.js into a TraceReader class
in lib/utils/trace.js. Python-style indexing via first / last / nth, kept
generic across kinds (aria / html / screenshot / console / storage). Sort
by filename — aiTrace's zero-padded step prefix means a lexical sort is
chronological.
run_code uses it to diff ARIA between the last aiTrace capture and the
new one produced by the steps inside this call:
const reader = new TraceReader(currentAiTraceDir)
const before = reader.last('aria')
// run code, aiTrace captures per step
const after = reader.last('aria')
if (before !== after) result.ariaDiff = ariaDiff(before, after)
initCodecept now force-enables aiTrace whenever the MCP server initializes
the container — it's the canonical per-step capture, no point in MCP doing
its own grabAriaSnapshot.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(mcp): add Agentic Testing guide; simplify ARIA snapshot pipeline
- docs/agents.md: new top-level page covering the MCP loop (open the
page → read → run a CodeceptJS command → check → commit), how the
agent reads page artifacts, and where MCP fits relative to pause().
- lib/aria.js: trim INTERACTIVE_ROLES to roles that actually take
user input (drop container roles like grid/tablist/menubar);
remove IGNORED_ROLES unwrap, icon-button auto-naming, and
bool/null coercion in attribute values. Names are always
emitted; attribute values are passed through as plain strings.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: DavertMik <davert@testomat.io>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
constSESSION_REQUIRED_ERROR='No active CodeceptJS session. Call `start_browser` to open a shell session, or `run_test` (use `pause()` in the test, or set `pauseAt`) to inspect during a test run.'
constPLUGINS_DESCRIPTION='Enable CodeceptJS plugins for this run, mirroring the CLI `-p` flag. Keys are plugin names (e.g. screencast, aiTrace, pause, pageInfo, heal, retryFailedStep, screenshotOnFail, autoDelay). Value `true` or `{}` enables with defaults; an object merges options, e.g. {"screencast": {"saveScreenshots": true}, "aiTrace": {"on": "fail"}}. Changing the plugin set tears down and re-initializes the container (closes the browser).'
pauseAt: {type: 'number',description: '1-based step index. Test will pause after the Nth step completes. Useful as a programmatic breakpoint without editing the test.'},
0 commit comments