UNPKG

browser-ui-test

Version:

Small JS framework to provide headless browser-based tests

48 lines (44 loc) 1.65 kB
const { CssParser } = require('./css_parser.js'); const { browserUiTestHelpers } = require('./helpers.js'); function makeError(value, key, computed, extracted = null) { let out = `expected \`${value}\` for key \`${key}\`, found \`${computed}\``; if (extracted !== null) { out += ` (or \`${extracted}\`)`; } return out; } function checkCssProperty(key, value, simple, computed, localErr) { // eslint-disable-next-line eqeqeq if (simple == value || computed == value) { return; } if (simple === null || computed === null) { localErr.push(`no local CSS property named \`${key}\``); return; } if (typeof computed === 'string' && computed.search(/^(\\d+\\.\\d+px)$/g) === 0) { const extracted = browserUiTestHelpers.extractFloatOrZero(computed, true) + 'px'; if (extracted !== value) { localErr.push(makeError(value, key, computed, extracted)); return; } } if (computed !== null && value !== null) { const improvedComputed = new CssParser(computed); if (!improvedComputed.hasColor) { localErr.push(makeError(value, key, computed)); return; } const improved = new CssParser(value); if (!improved.hasColor) { localErr.push(makeError(value, key, computed)); return; } else if (improved.toRGBAString() === improvedComputed.toRGBAString()) { return; } localErr.push(makeError(value, key, improvedComputed.sameFormatAs(improved))); } } module.exports = { 'checkCssProperty': checkCssProperty, };