Skip to content

Latest commit

 

History

History
365 lines (285 loc) · 7.95 KB

assertions.md

File metadata and controls

365 lines (285 loc) · 7.95 KB
id title
assertions
Assertions

Playwright provides convenience APIs for common tasks, like reading the text content of an element. These APIs can be used in your test assertions.

Text content

const content = await page.textContent('nav:first-child');
expect(content).toBe('home');
String content = page.textContent("nav:first-child");
assertEquals("home", content);
content = await page.text_content("nav:first-child")
assert content == "home"
content = page.text_content("nav:first-child")
assert content == "home"
var content = await page.TextContentAsync("nav:first-child");
Assert.Equals("home", content);

API reference

  • [method: Page.textContent]
  • [method: ElementHandle.textContent]

Inner text

const text = await page.innerText('.selected');
expect(text).toBe('value');
String text = page.innerText(".selected");
assertEquals("value", text);
text = await page.inner_text(".selected")
assert text == "value"
text = page.inner_text(".selected")
assert text == "value"
var content = await page.InnerTextAsync(".selected");
Assert.Equals("value", content);

API reference

  • [method: Page.innerText]
  • [method: ElementHandle.innerText]

Attribute value

const alt = await page.getAttribute('input', 'alt');
expect(alt).toBe('Text');
String alt = page.getAttribute("input", "alt");
assertEquals("Text", alt);
alt = await page.get_attribute("input", "alt")
assert alt == "Text"
alt = page.get_attribute("input", "alt")
assert alt == "Text"
var value = await page.GetAttributeAsync("input", "alt");
Assert.Equals("Text", value);

Checkbox state

const checked = await page.isChecked('input');
expect(checked).toBeTruthy();
boolean checked = page.isChecked("input");
assertTrue(checked);
checked = await page.is_checked("input")
assert checked
checked = page.is_checked("input")
assert checked
var checked = await page.IsCheckedAsync("input");
Assert.True(checked);

API reference

  • [method: Page.isChecked]
  • [method: ElementHandle.isChecked]

JS expression

const content = await page.$eval('nav:first-child', e => e.textContent);
expect(content).toBe('home');
Object content = page.evalOnSelector("nav:first-child", "e => e.textContent");
assertEquals("home", content);
content = await page.eval_on_selector("nav:first-child", "e => e.textContent")
assert content == "home"
content = page.eval_on_selector("nav:first-child", "e => e.textContent")
assert content == "home"
var content = await page.EvalOnSelectorAsync("nav:first-child", "e => e.textContent");
Assert.Equals("home", content);

API reference

  • [method: Page.evalOnSelector]
  • [method: JSHandle.evaluate]

Inner HTML

const html = await page.innerHTML('div.result');
expect(html).toBe('<p>Result</p>');
String html = page.innerHTML("div.result");
assertEquals("<p>Result</p>", html);
html = await page.inner_html("div.result")
assert html == "<p>Result</p>"
html = page.inner_html("div.result")
assert html == "<p>Result</p>"
var html = await page.InnerHTMLAsync("div.result");
Assert.Equals(html, "<p>Result</p>");

API reference

  • [method: Page.innerHTML]
  • [method: ElementHandle.innerHTML]

Visibility

const visible = await page.isVisible('input');
expect(visible).toBeTruthy();
boolean visible = page.isVisible("input");
assertTrue(visible);
visible = await page.is_visible("input")
assert visible
visible = page.is_visible("input")
assert visible
var visibility = await page.IsVisibleAsync("input");
Assert.True(visibility);

API reference

  • [method: Page.isVisible]
  • [method: ElementHandle.isVisible]

Enabled state

const enabled = await page.isEnabled('input');
expect(enabled).toBeTruthy();
boolean enabled = page.isEnabled("input");
assertTrue(enabled);
enabled = await page.is_enabled("input")
assert enabled
enabled = page.is_enabled("input")
assert enabled
var enabled = await page.IsEnabledAsync("input");
Assert.True(enabled);

API reference

  • [method: Page.isEnabled]
  • [method: ElementHandle.isEnabled]

Custom assertions

With Playwright, you can also write custom JavaScript to run in the context of the browser. This is useful in situations where you want to assert for values that are not covered by the convenience APIs above.

// Assert local storage value
const userId = page.evaluate(() => window.localStorage.getItem('userId'));
expect(userId).toBeTruthy();

// Assert value for input element
await page.waitForSelector('#search');
const value = await page.inputValue('#search');
expect(value === 'query').toBeTruthy();

// Assert computed style
const fontSize = await page.$eval('div', el => window.getComputedStyle(el).fontSize);
expect(fontSize === '16px').toBeTruthy();

// Assert list length
const length = await page.$$eval('li.selected', (items) => items.length);
expect(length === 3).toBeTruthy();
// Assert local storage value
Object userId = page.evaluate("() => window.localStorage.getItem('userId')");
assertNotNull(userId);

// Assert value for input element
page.waitForSelector("#search");
Object value = page.evalOnSelector("#search", "el => el.value");
assertEquals("query", value);

// Assert computed style
Object fontSize = page.evalOnSelector("div", "el => window.getComputedStyle(el).fontSize");
assertEquals("16px", fontSize);

// Assert list length
Object length = page.evalOnSelectorAll("li.selected",  "items => items.length");
assertEquals(3, length);
# Assert local storage value
user_id = page.evaluate("() => window.localStorage.getItem('user_id')")
assert user_id

# Assert value for input element
await page.wait_for_selector('#search')
value = await page.eval_on_selector('#search', 'el => el.value')
assert value == 'query'

# Assert computed style
font_size = await page.eval_on_selector('div', 'el => window.getComputedStyle(el).fontSize')
assert font_size == '16px'

# Assert list length
length = await page.eval_on_selector_all('li.selected', '(items) => items.length')
assert length == 3
# Assert local storage value
user_id = page.evaluate("() => window.localStorage.getItem('user_id')")
assert user_id

# Assert value for input element
page.wait_for_selector('#search')
value = page.eval_on_selector('#search', 'el => el.value')
assert value == 'query'

# Assert computed style
font_size = page.eval_on_selector('div', 'el => window.getComputedStyle(el).fontSize')
assert font_size == '16px'

# Assert list length
length = page.eval_on_selector_all('li.selected', '(items) => items.length')
assert length == 3
// Assert local storage value
var userId = await page.EvaluateAsync<string>("() => window.localStorage.getItem('userId')");
Assert.NotNull(userId);

// Assert value for input element
await page.WaitForSelectorAsync("#search");
var value = await page.EvalOnSelectorAsync("#search", "el => el.value");
Assert.Equals("query", value);

// Assert computed style
var fontSize = await page.EvalOnSelectorAsync<string>("div", "el => window.getComputedStyle(el).fontSize");
Assert.Equals("16px", fontSize);

// Assert list length
var length = await page.EvalOnSelectorAllAsync<int>("li.selected", "items => items.length");
Assert.Equals(3, length);

API reference

  • [method: Page.evaluate]
  • [method: Page.evalOnSelector]
  • [method: Page.evalOnSelectorAll]
  • [method: Frame.evaluate]
  • [method: Frame.evalOnSelector]
  • [method: Frame.evalOnSelectorAll]
  • [method: ElementHandle.evalOnSelector]
  • [method: ElementHandle.evalOnSelectorAll]
  • [EvaluationArgument]