Handling Asynchronous Operations in Nightwatch.js: Getting and Comparing License Numbers

This article explains how to retrieve a license count using Nightwatch.js, manage JavaScript's asynchronous callbacks, compare two retrieved values, and assert the expected increment, providing complete code examples and practical tips for reliable UI automation testing.

DevOps Engineer
DevOps Engineer
DevOps Engineer
Handling Asynchronous Operations in Nightwatch.js: Getting and Comparing License Numbers

In automated UI testing with Nightwatch.js, it is often necessary to obtain a value from a command or function and use it in subsequent steps; JavaScript requires a specific pattern for handling such asynchronous operations.

The getLicenseNum method demonstrates how to wait for a license element, retrieve all matching elements, and return the count via a callback:

getLicenseNum: function (cb) {
  const license = 'ul > li.license-id.ng-binding';
  this.waitForElementVisible(license, 5000);
  this.api.elements('css selector', license, function (result) {
    cb(result.value.length);
    return this;
  });
}

To compare the license numbers obtained at two different moments, the test stores each count in separate variables and then asserts that the difference equals the expected increment:

'JavaScrpit asynchronous operation': function(client) {
  const license = client.page.license();
  let num1, num2;
  license.getLicenseNum(function(num) {
    num1 = num;
  });
  license.getLicenseNum(function(num) {
    num2 = num;
  });
  client.perform(function() {
    client.assert.equal(num2 - num1, 1, 'license number increase 1');
  });
}

Related articles discuss handling element position changes during automation and simulating keyboard actions in Nightwatch.

Readers are invited to share further questions or ideas about automation testing, forward the article, leave comments, and join the "Software Testing QA" QQ group (25398297) for more discussion.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

JavaScriptAsynchronousautomation testingWeb UINightwatch.js
DevOps Engineer
Written by

DevOps Engineer

DevOps engineer, Pythonista and FOSS contributor. Created cpp-linter, commit-check, etc.; contributed to PyPA.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.