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 closedWindow 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 raisedCurrent State
csharp
// Check current window state
HermesAssert.IsMaximized(backend); // Window is currently maximized
HermesAssert.IsNotMaximized(backend); // Window is not maximizedWindow Properties
csharp
HermesAssert.HasTitle(backend, "My App");
HermesAssert.HasSize(backend, 1024, 768);
HermesAssert.HasPosition(backend, 100, 100);Navigation
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 areaMethod 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
| Method | Parameters | Description |
|---|---|---|
WasInitialized | backend | Assert backend was initialized |
WasShown | backend | Assert window was shown |
WasClosed | backend | Assert window was closed |
State Assertions
| Method | Parameters | Description |
|---|---|---|
WasMaximized | recording | Assert Maximized event occurred |
WasRestored | recording | Assert Restored event occurred |
IsMaximized | backend | Assert currently maximized |
IsNotMaximized | backend | Assert not maximized |
HasSize | backend, width, height | Assert size matches |
HasPosition | backend, x, y | Assert position matches |
HasTitle | backend, title | Assert title matches |
Navigation Assertions
| Method | Parameters | Description |
|---|---|---|
NavigatedTo | recording, url | Assert exact URL navigation |
NavigatedToPattern | recording, pattern | Assert URL contains pattern |
Web Message Assertions
| Method | Parameters | Description |
|---|---|---|
SentWebMessage | recording, message | Assert exact message sent |
SentWebMessageMatching | recording, pattern | Assert sent message contains pattern |
ReceivedWebMessage | recording, message | Assert exact message received |
ReceivedWebMessageMatching | recording, pattern | Assert received message contains pattern |
Drag Region Assertions
| Method | Parameters | Description |
|---|---|---|
DetectedDragAction | recording, action | Assert specific drag action |
DetectedDragRegionClick | recording | Assert drag region click |
DetectedDragRegionDoubleClick | recording | Assert drag region double-click |
DetectedNonDragRegionClick | recording | Assert non-drag region click |
Call/Event Assertions
| Method | Parameters | Description |
|---|---|---|
MethodWasCalled | recording, methodName | Assert method was called |
MethodWasNotCalled | recording, methodName | Assert method was not called |
EventWasRaised | recording, eventName | Assert event was raised |
EventWasNotRaised | recording, eventName | Assert event was not raised |
Scheme Assertions
| Method | Parameters | Description |
|---|---|---|
CustomSchemeRegistered | backend, scheme | Assert 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
- TestableHermesWindow — Test wrapper
- RecordingWindowBackend — Mock backend
- Testing Examples — Common patterns
