Hardy icon indicating copy to clipboard operation
Hardy copied to clipboard

False negative on font family attribute

Open RyanParsley opened this issue 10 years ago • 2 comments

Scenarios involving font-family checks do not seem to work as expected.

This scenario

Scenario: billboard-top should use AntennaExtraLight Given I visit "http://global-ux.dev/prototypes/homepage/first" Then ".billboard-top" should have "font-family" of "AntennaExtraLight, AntennaRE, Antenna, 'Helvetica Neue', Helvetica, Arial, sans-serif"

Yields

(::) failed steps (::)

".billboard-top" should have font-family of AntennaExtraLight, AntennaRE, Antenna, 'Helvetica Neue', Helvetica, Arial, sans-serif, measured: AntennaExtraLight, AntennaRE, Antenna, 'Helvetica Neue', Helvetica, Arial, sans-serif

RyanParsley avatar Jul 29 '14 14:07 RyanParsley

Hardy v1.1.0

RyanParsley avatar Jul 29 '14 14:07 RyanParsley

I wrote a couple of custom step definitions to help with this:

Contains

  this.Then(/^"([^"]*)" should have "([^"]*)" that contains "([^"]*)"$/, function(selector, property, value, callback) {
    var elementSelector = require( process.env['BINARYPATH'] + 'features/support/selectors.js')(selector);
    var message = '"' + property + '" should contain ' + '"' + value + '"';

    this.getCssProperty(elementSelector, property, function(err, actualValue) {

      if (err) {
        if (typeof err === "object") {
          err = JSON.stringify(err);
        }
        return callback.fail(err);
      }
      var substringLocation = actualValue.indexOf(value);
      try {
        assert.notEqual(-1, substringLocation, message);
      } catch (e) {
        return callback.fail(e.message);
      }

      callback();
    });
  });

Starts with

  this.Then(/^"([^"]*)" should have "([^"]*)" that starts with "([^"]*)"$/, function(selector, property, value, callback) {
    var elementSelector = require( process.env['BINARYPATH'] + 'features/support/selectors.js')(selector);
    var message = '"' + property + '" should start with ' + '"' + value + '"';

    this.getCssProperty(elementSelector, property, function(err, actualValue) {

      if (err) {
        if (typeof err === "object") {
          err = JSON.stringify(err);
        }
        return callback.fail(err);
      }
      var substringLocation = actualValue.indexOf(value);
      try {
        assert.equal(0, substringLocation, message);
      } catch (e) {
        return callback.fail(e.message);
      }

      callback();
    });
  });

RyanParsley avatar Feb 03 '15 15:02 RyanParsley