TestHarness

Struct TestHarness 

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

Test harness that manages browser, context, and page lifecycle.

The harness provides access to browser automation fixtures and handles cleanup automatically via Drop. It supports different scoping levels to balance test isolation against performance.

§Scoping Levels

  • TestHarness::new() - Test-scoped: new browser per test (default)
  • TestHarness::from_browser() - Module-scoped: reuse browser, fresh context/page
  • TestHarness::from_context() - Shared context: reuse context, fresh page only

§Example

use viewpoint_test::TestHarness;

#[tokio::test]
async fn my_test() -> Result<(), Box<dyn std::error::Error>> {
    let harness = TestHarness::new().await?;
    let page = harness.page();

    page.goto("https://example.com").goto().await?;

    Ok(()) // harness drops and cleans up
}

Implementations§

Source§

impl TestHarness

Source

pub async fn new() -> Result<Self, TestError>

Create a new test harness with default configuration.

This creates a new browser, context, and page for the test. All resources are owned and will be cleaned up on drop.

§Errors

Returns an error if browser launch or page creation fails.

Source

pub async fn with_config(config: TestConfig) -> Result<Self, TestError>

Create a new test harness with custom configuration.

§Errors

Returns an error if browser launch or page creation fails.

Source

pub fn builder() -> TestHarnessBuilder

Create a test harness builder for custom configuration.

Source

pub async fn from_browser(browser: &Browser) -> Result<Self, TestError>

Create a test harness using an existing browser.

This creates a new context and page in the provided browser. The browser will NOT be closed when the harness is dropped.

§Errors

Returns an error if context or page creation fails.

Source

pub async fn from_context(context: &BrowserContext) -> Result<Self, TestError>

Create a test harness using an existing context.

This creates a new page in the provided context. Neither the browser nor context will be closed when the harness is dropped.

§Errors

Returns an error if page creation fails.

Source

pub fn page(&self) -> &Page

Get a reference to the page.

Source

pub fn page_mut(&mut self) -> &mut Page

Get a mutable reference to the page.

Source

pub fn context(&self) -> Option<&BrowserContext>

Get a reference to the browser context.

Returns None if this harness was created with from_context().

Source

pub fn browser(&self) -> Option<&Browser>

Get a reference to the browser.

Returns None if this harness was created with from_browser() or from_context().

Source

pub fn config(&self) -> &TestConfig

Get the test configuration.

Source

pub async fn new_page(&self) -> Result<Page, TestError>

Create a new page in the same context.

§Errors

Returns an error if page creation fails or if no context is available.

Source

pub async fn close(self) -> Result<(), TestError>

Explicitly close all owned resources.

This is called automatically on drop, but can be called explicitly to handle cleanup errors.

§Errors

Returns an error if cleanup fails.

Trait Implementations§

Source§

impl Debug for TestHarness

Source§

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

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

impl Drop for TestHarness

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> 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