Skip to content

Lupa API Reference / assert/dom / AssertDom

Class: AssertDom ​

Defined in: src/assert/dom.ts:8

DOM-specific assertion methods

Constructors ​

Constructor ​

new AssertDom(assertInstance): AssertDom

Defined in: src/assert/dom.ts:11

Parameters ​

assertInstance ​

Assert

Returns ​

AssertDom

Methods ​

equal() ​

equal(element, expectedHtml, options?, message?): void

Defined in: src/assert/dom.ts:243

Asserts that an element's outer DOM matches the expected HTML string semantically.

See SemanticDomOptions for options on how to control the comparison.

Parameters ​

element ​

Element

The element whose DOM should be compared

expectedHtml ​

string | Element

The expected HTML string or Element

options? ​

SemanticDomOptions

Optional options to control the comparison

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const btn = document.querySelector('button')
assert.dom.equal(btn, '<button class="primary" disabled>Submit</button>')

Use When ​

You need to assert the entire HTML structure (including the wrapper element itself), ensuring order and attributes match without worrying about whitespace formatting.


hasAttribute() ​

hasAttribute(element, name, value?, message?): void

Defined in: src/assert/dom.ts:86

Asserts that an element has a specific attribute. If the value argument is provided, it will also assert that the attribute equals that value.

Parameters ​

element ​

Element

The DOM element to check

name ​

string

The attribute name

value? ​

string

Optional expected value of the attribute

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const input = document.querySelector('input')
assert.dom.hasAttribute(input, 'required')
assert.dom.hasAttribute(input, 'type', 'email')

Use When ​

Validating ARIA roles, input types, custom data attributes, or disabled states.


hasClass() ​

hasClass(element, className, message?): void

Defined in: src/assert/dom.ts:58

Asserts that an element has the specified class name.

Parameters ​

element ​

Element

The DOM element to check

className ​

string

The expected class name

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const alert = document.querySelector('.alert')
assert.dom.hasClass(alert, 'alert-danger')

Use When ​

Verifying state changes applied via CSS classes (e.g., active, disabled, error states).


hasStyle() ​

hasStyle(element, property, value, message?): void

Defined in: src/assert/dom.ts:209

Asserts that an element has the specified computed style property and value.

Parameters ​

element ​

Element

The DOM element to check

property ​

string

The CSS property name (e.g. 'color', 'background-color')

value ​

string

The expected computed style value

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const box = document.querySelector('.box')
assert.dom.hasStyle(box, 'display', 'flex')

Use When ​

Verifying that CSS rules have been successfully applied and computed by the browser, rather than just checking raw class names.


hasTagName() ​

hasTagName(element, tag, message?): void

Defined in: src/assert/dom.ts:181

Asserts that an element has the specified tag name (case-insensitive).

Parameters ​

element ​

Element

The DOM element to check

tag ​

string

The expected tag name (e.g. 'div', 'button')

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const link = document.querySelector('.custom-link')
assert.dom.hasTagName(link, 'a')

Use When ​

Verifying the semantic HTML structure (e.g., ensuring a component renders an <h1> rather than a <div>).


hasText() ​

hasText(element, text, message?): void

Defined in: src/assert/dom.ts:33

Asserts that an element contains the specified text content. Traverses all child nodes to extract text content, trims whitespace, and checks for substring inclusion.

Parameters ​

element ​

Element

The DOM element to check

text ​

string

The text string expected to be contained

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const btn = document.querySelector('button')
assert.dom.hasText(btn, 'Submit')

Use When ​

Validating that expected text appears anywhere inside an element's DOM tree, regardless of inner nested tags.


isFocused() ​

isFocused(element, message?): void

Defined in: src/assert/dom.ts:154

Asserts that an element is currently focused (i.e. document.activeElement).

Parameters ​

element ​

Element

The DOM element to check

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const input = document.querySelector('#username')
input.focus()
assert.dom.isFocused(input)

Use When ​

Testing keyboard navigation, accessibility features, and autofocus behaviors.


isVisible() ​

isVisible(element, message?): void

Defined in: src/assert/dom.ts:129

Asserts that an element is visible in the DOM. Visibility is determined by offsetParent (for layout visibility) or having getBoundingClientRect dimensions. Note: This does not account for opacity: 0 or visibility: hidden.

Parameters ​

element ​

HTMLElement

The DOM element to check

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const modal = document.querySelector('.modal')
assert.dom.isVisible(modal)

Use When ​

You need to verify that an element is actually rendered and taking up space in the layout hierarchy (e.g., checking if a dropdown opened).


lightEqual() ​

lightEqual(element, expectedHtml, options?, message?): void

Defined in: src/assert/dom.ts:304

Asserts that an element's Light DOM (innerHTML) matches the expected HTML string semantically.

Parameters ​

element ​

Element

The element whose DOM should be compared

expectedHtml ​

string | Element

The expected HTML string or Element

options? ​

SemanticDomOptions

Optional options to control the comparison

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const list = document.querySelector('ul')
assert.dom.lightEqual(list, '<li>Item 1</li><li>Item 2</li>')

Use When ​

You only care about the children/contents of an element and want to ignore its wrapper tag.


notEqual() ​

notEqual(element, expectedHtml, options?, message?): void

Defined in: src/assert/dom.ts:271

Asserts that an element's outer DOM does NOT match the expected HTML string semantically.

Parameters ​

element ​

Element

The element whose DOM should be compared

expectedHtml ​

string | Element

The expected HTML string or Element

options? ​

SemanticDomOptions

Optional options to control the comparison

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const btn = document.querySelector('button')
assert.dom.notEqual(btn, '&lt;button disabled&gt;Submit&lt;/button&gt;')

Use When ​

You want to ensure an element has mutated or changed from a baseline state.


notLightEqual() ​

notLightEqual(element, expectedHtml, options?, message?): void

Defined in: src/assert/dom.ts:336

Asserts that an element's Light DOM (innerHTML) does NOT match the expected HTML string semantically.

Parameters ​

element ​

Element

The element whose DOM should be compared

expectedHtml ​

string | Element

The expected HTML string or Element

options? ​

SemanticDomOptions

Optional options to control the comparison

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const list = document.querySelector('ul')
assert.dom.notLightEqual(list, '<li>Loading...</li>')

Use When ​

You are verifying that a component has finished loading and replaced its placeholder children.


notShadowEqual() ​

notShadowEqual(element, expectedHtml, options?, message?): void

Defined in: src/assert/dom.ts:401

Asserts that an element's Shadow DOM does NOT match the expected HTML string semantically.

Parameters ​

element ​

Element

The element whose DOM should be compared

expectedHtml ​

string | Element

The expected HTML string or Element

options? ​

SemanticDomOptions

Optional options to control the comparison

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const customEl = document.querySelector('my-element')
assert.dom.notShadowEqual(customEl, '&lt;slot name="fallback"&gt;&lt;/slot&gt;')

Use When ​

Verifying that a Web Component has updated its internal shadow root after a state change.


shadowEqual() ​

shadowEqual(element, expectedHtml, options?, message?): void

Defined in: src/assert/dom.ts:369

Asserts that an element's Shadow DOM matches the expected HTML string semantically.

Parameters ​

element ​

Element

The element whose DOM should be compared

expectedHtml ​

string | Element

The expected HTML string or Element

options? ​

SemanticDomOptions

Optional options to control the comparison

message? ​

string

Optional message to display when the assertion fails

Returns ​

void

Example ​

ts
const customEl = document.querySelector('my-element')
assert.dom.shadowEqual(customEl, '&lt;style&gt;...&lt;/style&gt;<div class="wrapper">...</div>')

Use When ​

You are testing Web Components and need to verify their encapsulated internal template.