Taiko
Documentation

Home

assertions

In the following sections you will learn how to use Taiko's implicit assertions use your own custom assertions.

Implicit assertions #

Taiko's selector(s) checks if an element is visible on the page before performing an action. A test will fails by throwing an Error when the element is not visible on the page (or covered by another element for example a modal dialogue).

In the following script

const { openBrowser, goto, click, closeBrowser } = require('taiko');
(async () => {
  await openBrowser();
  await goto("google.com");
  await click("Google Search");
})();   

the test fails when

All Page actions, browser actions, selectors, proximity selectors have implicit assertions.

Selecting hidden elements

If you do not want to assert the visibility of elements on a page and perform actions on hidden elements use the selectHiddenElements option on the API for example

await click("Google Search", {selectHiddenElements: true});

Ignoring implicit assertions

To ignore implicit assertions use JavaScript's try and catch block to handle the error

const { openBrowser, goto, click, closeBrowser } = require('taiko');
(async () => {
  await openBrowser();
  await goto("google.com");
  try {
    await click("Google Search");
  } catch(e) {
    //Ignore or log the error.
  } finally {
    closeBrowser();
  }
})();   

Custom assertions #

You can use any Node.js assertion framework along with Taiko's API. For example using node's assert function.

const { openBrowser, goto, click, closeBrowser } = require('taiko');
const assert = require('assert').strict;

(async () => {
  await openBrowser();
  await goto("google.com");
  assert.equal(button({name: 'btnK'}).text(), 'Google Search');
  closeBrowser();
})();   

Here node's assert function fails when the name a button with the name btnK does not have the text 'Google Search'.

To check if an element without performing an action use exists on a selector API for example

const { openBrowser, goto, click, closeBrowser } = require('taiko');
const assert = require('assert').strict;

(async () => {
  await openBrowser();
  await goto("google.com");
  await assert.ok(await button('Gmail').exists());
  await closeBrowser();
})();   

By default exists waits for 100000 milliseconds checking every 100 milliseconds if the element is visible on the screen.

If you want to check the element on the page immediately (checking if an element does not exist) you can use set these wait times to 0.

const { openBrowser, goto, click, closeBrowser } = require('taiko');
const assert = require('assert').strict;

(async () => {
  await openBrowser();
  await goto("google.com");
  await assert.ok(!await text('Facebook').exists(0,0));
  await closeBrowser();
})();