Skip to content

HermesAssert

HermesAssert provides fluent assertions for verifying Hermes window behavior. All assertions throw HermesAssertionException on failure with descriptive messages.

Window Lifecycle

Verify the window went through expected lifecycle states:

csharp
HermesAssert.WasInitialized(backend);  // Backend was initialized
HermesAssert.WasShown(backend);        // Window was shown
HermesAssert.WasClosed(backend);       // Window was closed

Window State

Maximize/Restore Events

csharp
// Check if events occurred during the test
HermesAssert.WasMaximized(recording);  // Maximized event was raised
HermesAssert.WasRestored(recording);   // Restored event was raised

Current State

csharp
// Check current window state
HermesAssert.IsMaximized(backend);     // Window is currently maximized
HermesAssert.IsNotMaximized(backend);  // Window is not maximized

Window Properties

csharp
HermesAssert.HasTitle(backend, "My App");
HermesAssert.HasSize(backend, 1024, 768);
HermesAssert.HasPosition(backend, 100, 100);

Verify URL navigation:

csharp
// Exact URL match
HermesAssert.NavigatedTo(recording, "https://example.com");

// Pattern match (contains)
HermesAssert.NavigatedToPattern(recording, "example");

Web Messages

Messages Sent to JavaScript

csharp
// Exact message match
HermesAssert.SentWebMessage(recording, """{"type":"response"}""");

// Pattern match (contains)
HermesAssert.SentWebMessageMatching(recording, "response");

Messages Received from JavaScript

csharp
// Exact message match
HermesAssert.ReceivedWebMessage(recording, """{"type":"request"}""");

// Pattern match (contains)
HermesAssert.ReceivedWebMessageMatching(recording, "request");

Custom Titlebar Drag Regions

Verify drag region interactions:

csharp
// Generic drag action
HermesAssert.DetectedDragAction(recording, "drag");

// Specific actions
HermesAssert.DetectedDragRegionClick(recording);       // Single click
HermesAssert.DetectedDragRegionDoubleClick(recording); // Double-click
HermesAssert.DetectedNonDragRegionClick(recording);    // Non-drag area

Method Calls

Verify backend methods were called:

csharp
HermesAssert.MethodWasCalled(recording, "NavigateToUrl");
HermesAssert.MethodWasNotCalled(recording, "NavigateToString");

Events

Verify events were raised:

csharp
HermesAssert.EventWasRaised(recording, "Resized");
HermesAssert.EventWasNotRaised(recording, "FocusOut");

Custom Schemes

Verify custom URL schemes were registered:

csharp
HermesAssert.CustomSchemeRegistered(backend, "app");

Complete API Reference

Lifecycle Assertions

MethodParametersDescription
WasInitializedbackendAssert backend was initialized
WasShownbackendAssert window was shown
WasClosedbackendAssert window was closed

State Assertions

MethodParametersDescription
WasMaximizedrecordingAssert Maximized event occurred
WasRestoredrecordingAssert Restored event occurred
IsMaximizedbackendAssert currently maximized
IsNotMaximizedbackendAssert not maximized
HasSizebackend, width, heightAssert size matches
HasPositionbackend, x, yAssert position matches
HasTitlebackend, titleAssert title matches
MethodParametersDescription
NavigatedTorecording, urlAssert exact URL navigation
NavigatedToPatternrecording, patternAssert URL contains pattern

Web Message Assertions

MethodParametersDescription
SentWebMessagerecording, messageAssert exact message sent
SentWebMessageMatchingrecording, patternAssert sent message contains pattern
ReceivedWebMessagerecording, messageAssert exact message received
ReceivedWebMessageMatchingrecording, patternAssert received message contains pattern

Drag Region Assertions

MethodParametersDescription
DetectedDragActionrecording, actionAssert specific drag action
DetectedDragRegionClickrecordingAssert drag region click
DetectedDragRegionDoubleClickrecordingAssert drag region double-click
DetectedNonDragRegionClickrecordingAssert non-drag region click

Call/Event Assertions

MethodParametersDescription
MethodWasCalledrecording, methodNameAssert method was called
MethodWasNotCalledrecording, methodNameAssert method was not called
EventWasRaisedrecording, eventNameAssert event was raised
EventWasNotRaisedrecording, eventNameAssert event was not raised

Scheme Assertions

MethodParametersDescription
CustomSchemeRegisteredbackend, schemeAssert scheme was registered

Error Messages

Failed assertions provide detailed messages:

Expected window title 'My App', but was 'Other App'.

Expected navigation to 'https://example.com', but it never occurred.
Navigations: [https://other.com]

Expected web message containing 'response' to be sent, but none matched.
Sent messages: ["error", "timeout"]

See Also