True Changelog
9.0.0 (06/23/25)
- FEATURE: 
contains-string()supports substring matching. #311 - BREAKING: Drop support for node < 20
 - INTERNAL: Update dependencies
 
8.1.0 (10/02/24)
- FEATURE: If True 
sassoption is not specified, True will automatically attempt to useembedded-sass, thensass. #290 - INTERNAL: Add 
sassandsass-embeddedas optional peer-dependencies. - INTERNAL: Update dependencies
 
8.0.0 (02/23/24)
- FEATURE: Add True 
sassoption (stringor Sass implementation instance, defaults to'sass') to allow using eithersassorembedded-sass. - FEATURE: Add the
Node.js package importer
to the Sass 
importersoption by default, if Dart Sass v1.71 or later is available. Users can opt out by providing their ownimportersoption, e.g.{ importers: [] }. - BREAKING: Drop support for node < 18
 - INTERNAL: Remove 
sassas a peer-dependency. - INTERNAL: Update dependencies
 
7.0.1 (01/04/24)
- FEATURE: Validate 
runSassarguments and warn if using v6 API. - DOCUMENTATION: Add note that 
{ style: 'compressed' }is not supported. - DOCUMENTATION: Add note about possible Jest error and workaround.
 - INTERNAL: Update dependencies
 
7.0.0 (12/14/22)
- FEATURE: 
contains()checks multiple block with matching selectors. #243 - BREAKING: Upgrade to newer Sass API
- Add True 
sourceTypeoption (path[default] orstring) - Reverse order of expected arguments to 
runSass: 1) True options, 2) source path (or string), 3) optional Sass options - Note that some of the Sass options have changed. For example,
includePathsis nowloadPaths,outputStyleis nowstyle,importeris nowimporters, etc. See the Dart Sass documentation for more details. 
 - Add True 
 - BREAKING: Require 
sass(>=1.45.0) as a peer-dependency, removing Truesassoption - BREAKING: Drop support for node < 14.15.0
 - INTERNAL: Use both Jest and Mocha for internal testing
 - INTERNAL: Remove documentation from npm package
 - INTERNAL: Update dependencies
 
Migrating from v6
runSassarguments have changed:
v6:
const path = require('path');
const sass = require('node-sass');
const sassTrue = require('sass-true');
const sassFile = path.join(__dirname, 'test.scss');
sassTrue.runSass(
  // Sass options [required]
  { file: sassFile, includePaths: ['node_modules'] },
  // True options [required]
  { describe, it, sass },
);
const sassString = `
h1 {
  font-size: 40px;
}`;
sassTrue.runSass(
  // Sass options [required]
  {
    data: sassString,
    includePaths: ['node_modules'],
  },
  // True options [required]
  { describe, it, sass },
);
v7:
const path = require('path');
const sassTrue = require('sass-true');
const sassFile = path.join(__dirname, 'test.scss');
sassTrue.runSass(
  // True options [required]
  { describe, it },
  // Sass source (path) [required]
  sassFile,
  // Sass options [optional]
  { loadPaths: ['node_modules'] },
);
const sassString = `
h1 {
  font-size: 40px;
}`;
sassTrue.runSass(
  // True options [required]
  { describe, it, sourceType: 'string' },
  // Sass source (string) [required]
  sassString,
  // Sass options [optional]
  { loadPaths: ['node_modules'] },
);
7.0.0-beta.0 (09/16/22)
- BREAKING: Upgrade to newer Sass API
- Add True 
sourceTypeoption (path[default] orstring) - Reverse order of expected arguments to 
runSass: 1) True options, 2) source path (or string), 3) optional Sass options 
 - Add True 
 - BREAKING: Require 
sassas a peer-dependency, removing Truesassoption - BREAKING: Drop support for node < 14.15.0
 - INTERNAL: Use both Jest and Mocha for internal testing
 - INTERNAL: Update dependencies
 
6.1.0 (03/02/22)
- No changes since v6.1.0-beta.1
 
6.1.0-beta.1 (02/24/22)
- FEATURE: Clearer formatting of failing test diffs #210
 - INTERNAL: Limit files included in npm package #189
 - INTERNAL: Convert JS to TypeScript and bundle type definitions #212 – thanks to @robertmaier for the initial PR #206
 - INTERNAL: Remove documentation static-site from True repository
 - INTERNAL: Use Jest for internal testing (replaces Mocha)
 - INTERNAL: Switch from Travis CI to GitHub Actions for CI
 - INTERNAL: Update dependencies
 
6.0.1 (10/16/20)
- Remove eyeglass specific-version requirement.
 - Update documentation
 
6.0.0 (07/22/20)
- BREAKING: Switch to Dart Sass with Sass module system, dropping support for Node Sass.
 - BREAKING: Drop support for node < 10
 - BREAKING: Rename 
$true-terminal-outputsetting to$terminal-outputwhen importing as a module (with@use). Projects not using Sass modules can still@import '<path>/sass-true/sass/true'and access the setting as$true-terminal-output - FEATURE: Added 
_index.scssat the project root, for simpler import path:@use '<path>/sass-true' - FEATURE: New 
sass/_throw.scssmodule provides:error()function & mixin for establishing “catchable” errors- global 
$catch-errorstoggles howerror()output is handled 
 - FEATURE: Support testing 
contentproperties which include a curly brace. - Update dependencies
 
5.0.0 (06/03/19)
- BREAKING: Update API for 
runSass, which now accepts two arguments: asassOptionsobject and atrueOptionsobject. - BREAKING: Drop support for node < 8
 - Add docs and testing for usage with Jest #135
 - Add 
sassoption torunSassfor passing a different Sass implementation thannode-sass#137 - Remove 
node-sassfrompeerDependencies - Fix deprecated use of 
assert.fail#138 - Update dev dependencies
 
4.0.0 (04/09/18)
- BREAKING: Move 
node-sasstopeerDependencies - Update dependencies
 - Add JS coverage reporting
 
3.1.0 (03/06/18)
- NEW: Add 
contains()mixin for more minute output comparisons. Works the same asexpect(), but doesn’t require a complete match. - Update docs
 
3.0.2 (10/6/17)
- Dependency updates
 
3.0.1 (9/13/17)
- Update docs
 
3.0.0 (8/26/17)
- Update dependencies & release
 
3.0.0-beta.1 (6/1/17)
- Added 
describeanditmixins, as alias fortest-moduleandtestrespectively. - Added 
$inspectargument toassert-equalandassert-unequalmixins, for comparinginspect($assert) == inspect($expected)instead of$assert == $expected. This helps with several of the equality edge-cases listed below (rounding and units). - BREAKING: No more Ruby gem or Ruby CLI
 - BREAKING: No more bower package
 - BREAKING: Removes special-handling of equality,
in favor of allowing Sass to determine the best comparisons.
There are a few edge-cases to be aware of:
- In some versions of Sass,
manipulated numbers and colors are compared without rounding,
so 
1/3 != 0.333333andlighten(#246, 15%) != #356a9f. Use the$inspectargument to compare rounded output values. - In all versions of Sass,
unitless numbers are considered comparable to all units,
so 
1 == 1xwherexrepresents any unit. Use the$inspectargument to compare output values with units. - Lists compare both values and delimiter,
so 
(one two three) != (one, two, three). This can be particularly confusing for single-item lists, which still have a delimiter assigned, even though it is not used. 
 - In some versions of Sass,
manipulated numbers and colors are compared without rounding,
so 
 
2.2.2 (4/11/17)
assert-truereturns false on empty strings and listsassert-falsereturns true on empty strings and lists- Module/Test/Assertion stats are included in reports
 
2.2.1 (2/7/17)
- Output CSS context around Mocha parsing errors.
 - Added 
$fail-on-errorargument toreport()mixin. Set totrueif you need the Sass compiler to fail on broken tests. - Fix bug with 
assert-falsecausing it to fail onnullvalues. - Allow unquoted descriptions and test/module names.
 - Fix bug throwing off test-count and reporting.
 
2.1.4 (12/22/16)
- Fix default assertion messages
 - Upgrade dependencies
 
2.0.2 (5/13/15)
- Fixes debug inspector.
 
2.0.1 (5/9/15)
- Improve internal logic, and namespace private functions behind 
_true-*. - Add 
assert(),input, andexpectmixins for testing CSS output. - Support for LibSass.
 - Add Mocha JS integration. — Create NPM package.
 - Simplify output options down to single 
$true-terminal-outputsetting. - Add eyeglass support.
 
1.0.1 (10/18/14)
- LibSass 3.0 compatability.
 
1.0.0 (10/3/14)
- Add command-line interface: 
true-cli <path-to-file> - Use 
-sflag for silent output - Check for unit differences between numbers.
 - Add assertion-failure details to css output.
 
0.2.0 (7/15/14)
- Simplified reporting in both terminal and CSS.
 - Remove 
default-module-output,$default-test-outputand$default-final-output. Replace them with$truesettings map:(output: css, summary: terminal css).outputhandles test/module output,summaryhandles final output. Assertions are always output to the terminal if they fail. - Update to use Sass map variables.
 - Add 
reportfunction andreportmixin, for reporting final results. - Only register as a compass extension if compass is present. Compass is no longer an explicit dependency.
 - Adjust the output styles to work with Sass 3.4 and have more visual consistency.
 
0.1.5 (6/10/13)
- Append actual results to custom failure messages.
 
0.1.4 (6/9/13)
- Null result is considered a failure.
 - Allow output to be turned off for certain modules/tests/assertions.
 
0.1.3 (6/7/13)
- Nest assertions within 
test() {}named tests. - Cleaner css output.
 
0.1.2 (6/7/13)
- Use nesting for modules with 
test-module() {} - Added failure message argument to all assertions.
 
0.1.1 (6/6/13)
- Fix bug in 
lib/true.rbcompass plugin registration. 
0.1.0 (6/6/13)
assert-true(),assert-false(),assert-equal(), andassert-unequal().pass()andfail()for tracking and reporting individual results.start-test-module()andreport-test-result()for module results.- Includes tests of the testing tools!