Skip to main content

TestRunner

Struct TestRunner 

Source
pub struct TestRunner { /* private fields */ }
Expand description

Top-level test runner.

Implementations§

Source§

impl TestRunner

Source

pub fn new(config: TestConfig, overrides: CliOverrides) -> Self

Build a runner with no programmatic suite hooks. For runners that need before_all / after_all closures, use TestRunner::with_hooks.

Source

pub fn with_hooks( config: TestConfig, hooks: TestHooks, overrides: CliOverrides, ) -> Self

Build a runner with programmatic suite hooks supplied at construction.

Source

pub fn add_reporter(&mut self, reporter: Box<dyn Reporter>)

Append an additional reporter after construction (e.g., NAPI ResultCollector).

Source

pub async fn run(&mut self, plan: TestPlan) -> i32

Run the full test plan. Returns exit code (0 = all passed).

When config.projects is non-empty, topologically sorts projects by dependencies and runs each with a merged config. Otherwise runs the plan directly (single-project path).

Convenience wrapper: creates an EventBus, subscribes a ReporterDriver, and delegates to execute(). For real-time external observation (TUI, WebSocket), use execute() directly with a custom bus.

Source

pub async fn execute(&self, plan: TestPlan, event_bus: EventBus) -> i32

Core execution engine. Emits events on the provided EventBus.

Takes &self — no reporter ownership, no mutable state. The caller controls who subscribes to the bus (reporters, TUI, external consumers).

The bus is consumed by value and dropped when execution completes, closing all subscriber channels and signaling consumers to finalize.

Source

pub async fn run_watch<F>( &mut self, plan_factory: F, watch_root: PathBuf, ) -> i32
where F: Fn(Option<&[PathBuf]>) -> TestPlan,

Run in watch mode: re-run tests on file changes with interactive keyboard controls.

Launches a browser once and reuses it across all runs. Watches the project directory for file changes and dispatches re-runs based on change type.

§Arguments
  • plan_factory — Closure that generates a TestPlan. Receives an optional slice of changed file paths — when Some, the factory should only re-process those files (e.g., re-parse only changed .feature files). When None, generate the full plan.
  • watch_root — Root directory to watch for file changes.

Auto Trait Implementations§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,