robotframework-events
A Robot Framework listener that writes every suite, test, keyword, control structure and log
message of a run as JSON Lines, while the run happens. Item ids are Robot Framework's own
(s1-t2-k3), so events join with output.xml and link into log.html#<id>.
Requires Robot Framework 7.0 or newer and Python 3.10 or newer. Status: alpha.
pip install robotframework-events
robot --listener robotframework_events.Listener tests/ # writes ${OUTPUT DIR}/events.jsonl
robot --listener "robotframework_events.Listener;file=ev.jsonl;level=DEBUG" tests/
Listener arguments: file (NONE for no file), level (minimum message level, default INFO),
messages, args, structures (each true/false, default true) and max_text (default 4096).
Event format
One JSON object per line. Every event has v (format version), seq (1, 2, 3, ...), t (Unix
time) and type: run.started, suite.started, test.started, step.started,
message.logged, step.ended, test.ended, suite.ended, status.changed,
resultfile.created, run.ended.
{"v":1,"seq":6,"t":1791581563.542,"type":"test.started","id":"s1-t1","parent":"s1","name":"Passing","longname":"Sample.Passing","lineno":6}
{"v":1,"seq":61,"t":1791581563.601,"type":"test.ended","id":"s1-t2","status":"FAIL","message":"1 != 2","elapsed":0.004}
The JSON Schema events-v1.schema.json is the
reference.
Command line
rfevents tail -f results/events.jsonl # follow a run in the terminal, keyword by keyword
rfevents tail --steps 2 --level INFO events.jsonl
rfevents convert output.xml -o events.jsonl # events for a run recorded without the listener
tail prints suites, tests, steps down to --steps levels (default 1), log messages from
--level (default WARN) and a summary. convert reads output.xml or output.json; steps
then have no source or line number, which result files do not store.
Python API
from robotframework_events import RunState, add_callback, convert, read_events
state = RunState.from_events(read_events("events.jsonl")) # also .jsonl.gz
print(state.status, state.counts())
for event in read_events("events.jsonl", follow=True): # while the run writes it
...
events = list(convert("output.xml")) # dicts, as the listener writes them
add_callback(fn) # in-process consumers, e.g. robotcode's debugger
read_events gives typed events (robotframework_events.events). RunState holds the tree of
suites, tests and steps with status, messages and times, and the running test and step.
Development
pip install -e .[dev]
ruff check . && ruff format --check . && mypy
pytest # format, options, schema, reader, CLI and conformance tests
pytest -m bench # listener overhead
pytest -m e2e # through robotcode's debugger (needs ../robotcode)
The conformance tests also run on Robot Framework's acceptance test data, found through
RF_ATEST_DIR or at ../robotframework/atest/testdata, and are skipped when it is missing.
Licence
MIT
Metadata
Release files for robotframework-events 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| robotframework_events-0.1.0.tar.gz | 31.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| robotframework_events-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.7 kB
Release files / robotframework_events-0.1.0.tar.gz
| Download URL | robotframework_events-0.1.0.tar.gz |
|---|---|
| Size | 31.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2653d1e5cf26844536c1e44aa04e6d7a99b1e8da06f5e5574c2095438e64ae58
|
|
BLAKE2b-256 checksum How to use checksums |
d63309be64a5292e84e116ab578cf7985444d80e359958b3428bfdcefce98906
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.2
|
Release files / robotframework_events-0.1.0-py3-none-any.whl
| Download URL | robotframework_events-0.1.0-py3-none-any.whl |
|---|---|
| Size | 24.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8d416d754478605fd142d27ed5c315e154270f9d4219b46401e2cf60f6cd902b
|
|
BLAKE2b-256 checksum How to use checksums |
7fbd24a3cc64b035a0babef1abda166c38037166ee09f2e6cebb85defdc96513
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.2
|
Security for robotframework-events 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.