Install any skill in seconds. Free to start, no credit card required.
Get Started Free →testdriverai/testdriver:events
Listen to SDK lifecycle events with wildcard support
Passed 19 of 22 test cases with the skill, and 5 of 22 without it.
and 31 more in the full report
15 fixed4 passed either way2 still failing1 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 15 test cases the skill fixed. Same model, same prompt, with and without the skill.
During screen stability detection, TestDriver emits detailed status objects regarding frame stability, network activity, and timeout tracking. Write a subscription using `testdriver.emitter` that reads the detailed `redraw`, `network`, and `timeout` nested properties from the active stability check event.
| Checked | Without skill | With skill |
|---|---|---|
| Uses redraw:status to monitor ongoing stability checks. | Missed | Passed |
| Reads consecutiveFramesStable and diffFromInitial from the nested redraw object. | Missed | Passed |
| Reads rxBytes and txBytes from the nested network object. | Missed | Passed |
The instructions your model reads when the skill loads.
TestDriver uses EventEmitter2 for its event system. Events use a namespace pattern with colons. They permit wildcard listeners.
Use the emitter through testdriver.emitter:
testdriver.emitter.on('command:start', (data) => {
console.log(`Running: ${data.command}`);
});
The internal emitter is created with:
new EventEmitter2({
wildcard: true,
delimiter: ':',
maxListeners: 20,
verboseMemoryLeak: false,
ignoreErrors: false,
});
Use * to match one level. Use ** to match many levels:
// Match all log events
testdriver.emitter.on('log:*', (message) => {
console.log(message);
});
// Match all events in any namespace
testdriver.emitter.on('**', (...args) => {
test cases passed, vs 5 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.