Skip to main content

Event

Enum Event 

Source
pub enum Event {
    RunStarted {
        schema: u32,
        run_id: Arc<str>,
    },
    ScenarioStarted {
        scenario: Arc<str>,
        file: Arc<str>,
        timestamp_ms: Option<u64>,
        worker: Option<u64>,
        phase: Option<Arc<str>>,
    },
    BatchStarted {
        scenario: Arc<str>,
        engine: Arc<str>,
        steps: usize,
    },
    EntryRunning {
        scenario: Arc<str>,
        engine: Arc<str>,
        entry: usize,
        retry: u32,
    },
    StepFinished {
        scenario: Arc<str>,
        engine: Arc<str>,
        step: StepRef,
        status: Status,
        attempts: u32,
        duration_ms: u64,
        captures: Vec<String>,
        fragment: Option<String>,
        detail: Option<String>,
        attempt_details: Vec<String>,
    },
    ScenarioFinished {
        scenario: Arc<str>,
        file: Arc<str>,
        status: Status,
        timestamp_ms: Option<u64>,
        worker: Option<u64>,
        phase: Option<Arc<str>>,
    },
    RunFinished {
        passed: usize,
        failed: usize,
        skipped: usize,
        cancelled: bool,
    },
}
Expand description

One event in a run’s stream. Serialized as JSONL, tagged by event.

Variants§

§

RunStarted

The run began. Head of every stream; declares the schema version.

Fields

§schema: u32

Event schema version (EVENT_SCHEMA_VERSION).

§run_id: Arc<str>

Injected run identifier (uuid-v7-derived; core never generates it).

§

ScenarioStarted

A scenario began executing.

Fields

§scenario: Arc<str>

Scenario name as authored.

§file: Arc<str>

Feature file the scenario comes from.

§timestamp_ms: Option<u64>

Milliseconds since the run began — injected at the CLI sink (the sans-IO core leaves it None, like run_id). Absent on records without timing; additive (ADR-0008, ADR-0015).

§worker: Option<u64>

0-based worker index this scenario ran on — injected at the sink.

§phase: Option<Arc<str>>

The [run] lifecycle phase this scenario belongs to ("setup" / "teardown"), absent for an ordinary suite scenario.

Without it a phase scenario is indistinguishable from a suite one except by feature path, so every consumer had to re-derive phase membership from proef.toml — and explain, --rerun and diff each got it wrong in a different way. The record says so itself now. Additive and optional (ADR-0008): records that predate the field read as “no phase”, which is what they were.

§

BatchStarted

A batch of contiguous same-engine steps was dispatched.

Fields

§scenario: Arc<str>

Scenario name as authored.

§engine: Arc<str>

Engine executing the batch.

§steps: usize

Number of steps in the batch.

§

EntryRunning

An artifact entry began an execution attempt — the engine’s live progress signal (ADR-0001’s EventListener, surfaced on the spine). Additive schema variant: absent from pre-existing streams.

Fields

§scenario: Arc<str>

Scenario name as authored.

§engine: Arc<str>

Engine executing the entry.

§entry: usize

0-based entry ordinal within the scenario’s artifact.

§retry: u32

Retry number of this attempt (0 = first attempt).

§

StepFinished

A step finished (in success or failure).

Fields

§scenario: Arc<str>

Scenario name as authored.

§engine: Arc<str>

Engine that executed the step.

§step: StepRef

Anchor to the authored feature line.

§status: Status

Outcome status.

§attempts: u32

Number of attempts made.

§duration_ms: u64

Wall-clock duration in milliseconds.

§captures: Vec<String>

Names (never values) of captures produced by this step.

§fragment: Option<String>

The fragment that supplied this step’s request, as file.hurl#name (ADR-0018). Additive schema field: absent for an inline hurl: block, which is every step in every stream written before fragments existed.

§detail: Option<String>

Failure detail, when the step failed (additive schema field — absent on passing steps, so pre-existing streams are unchanged).

§attempt_details: Vec<String>

Messages from earlier, failed attempts of a step that ultimately passed — the flaky-failure detail (JUnit <flakyFailure>). Additive schema field: empty (and unserialized) for the common single-attempt step, so pre-existing streams are unchanged.

§

ScenarioFinished

A scenario finished.

Fields

§scenario: Arc<str>

Scenario name as authored.

§file: Arc<str>

Feature file path — together with scenario, the run-wide identity (scenario names are unique only within one file). Defaults empty when replaying records that predate the field (schema 1 is additive-only — ADR-0008).

§status: Status

Aggregate scenario status.

§timestamp_ms: Option<u64>

Milliseconds since the run began — injected at the CLI sink (the sans-IO core leaves it None, like run_id). Absent on records without timing; additive (ADR-0008, ADR-0015).

§worker: Option<u64>

0-based worker index this scenario ran on — injected at the sink.

§phase: Option<Arc<str>>

The [run] lifecycle phase this scenario belongs to ("setup" / "teardown"), absent for an ordinary suite scenario.

Without it a phase scenario is indistinguishable from a suite one except by feature path, so every consumer had to re-derive phase membership from proef.toml — and explain, --rerun and diff each got it wrong in a different way. The record says so itself now. Additive and optional (ADR-0008): records that predate the field read as “no phase”, which is what they were.

§

RunFinished

The run finished. Tail of every stream.

Fields

§passed: usize

Scenarios that passed.

§failed: usize

Scenarios that failed.

§skipped: usize

Scenarios that were skipped.

§cancelled: bool

The run was cancelled before completing (additive schema field — absent means false, and false is not serialized, so pre-existing streams and snapshots are unchanged).

Trait Implementations§

Source§

impl Clone for Event

Source§

fn clone(&self) -> Event

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Event

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Event

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Event

Source§

fn eq(&self, other: &Event) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Event

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Event

Auto Trait Implementations§

§

impl Freeze for Event

§

impl RefUnwindSafe for Event

§

impl Send for Event

§

impl Sync for Event

§

impl Unpin for Event

§

impl UnsafeUnpin for Event

§

impl UnwindSafe for Event

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.