ava-postcss-tester

1.1.1 • Public • Published

ava-postcss-tester Build Status Coverage Status

Test your PostCSS plugin with AVA and this handy tool.

// test.js
import test from 'ava';
import PostcssTester from 'ava-postcss-tester';
 
const tester = new PostcssTester({
  postcss: require('postcss'),
  plugin: require('.')
});
 
test('test name', async t => {
  const input = `
    .class {
      size: 100px;
    }
  `;
  const output = `
    .class {
      width: 100px;
      height: 100px;
    }
  `;
  await tester.test(input, output, t);
});

Installation

$ npm install -D ava-postcss-tester

Usage

Create a new tester by calling new PostcssTester with an options object:

  • postcss: The postcss module to use for process
  • plugin: You PostCSS plugin to test (can be an array of plugins) tolerateWarnings;
  • from: Optional, default: '', The from parameter passed to postcss.process, must be a file path
  • tolerateWarnings: Optional, default: false, Ignore PostCSS warnings
  • exactComparaison: Optional, default: false, Compare the input and output without any trimming or line breaks cleaning
import test from 'ava';
import PostcssTester from 'ava-postcss-tester';
 
const tester = new PostcssTester({
  postcss: require('postcss'),
  plugin: require('.'),
  tolerateWarnings: true
});

Then you can run the async function `tester.test(input, output, t, options)``:

  • input: A string containing your css input
  • output: A string containing your excpected output, it can be either a CSS string, an Error or a function receiving (error, warnings, result) letting you finish the test as you would like it
    • error: A string containing the Error message
    • warnings: An array of PostCSS warnings, is null if there an error occured
    • result: A string containing the PostCSS process result
  • t: The AVA test t object
  • options: Optional, An object containing those additional parameters:
    • pluginOptions: Options passed to your plugin
    • pluginsBefore: An array of plugins to load before your plugin
    • pluginsAfter: An array of plugins to load after your plugin
test('test name', async t => {
  const input = `
    .class {
      size: 100px;
    }
  `;
  const output = `
    .class {
      width: 100px;
      height: 100px;
    }
  `;
  await tester.test(input, output, t, {
    pluginOptions: {
      sizeShorthandActivated: true
    },
    pluginsAfter: [require('autoprefixer')]
  });
});

Related

  • postcss - Transforming styles with JS plugins
  • ava - Futuristic JavaScript test runner
  • one-liner - Module used for comparing excepted and real CSS output

License

This project is licensed under the MIT license.

Package Sidebar

Install

npm i ava-postcss-tester

Weekly Downloads

0

Version

1.1.1

License

MIT

Unpacked Size

12.6 kB

Total Files

6

Last publish

Collaborators

  • dimitrinicolas