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 ​