From 3d1beaf16d62d5d58f10391beabc59eb97a40292 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Mon, 29 Apr 2019 09:52:29 +0200 Subject: [PATCH] Post: Testing Tailwind CSS plugins (#70) * Add post * Mark as not a draft * Add note about preflight * Update heading --- resources/css/app.css | 2 +- resources/css/components/markup.css | 11 +- ...9-testing-tailwindcss-plugins-with-jest.md | 245 ++++++++++++++++++ .../running-tests.png | Bin 0 -> 36414 bytes 4 files changed, 254 insertions(+), 4 deletions(-) create mode 100644 source/_posts/2019-04-29-testing-tailwindcss-plugins-with-jest.md create mode 100644 source/images/blog/testing-tailwindcss-plugins/running-tests.png diff --git a/resources/css/app.css b/resources/css/app.css index c33ba33fc..3d3c9fb5b 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -7,7 +7,7 @@ h1, h2, h3 { } h1 { - @apply text-4xl + @apply text-3xl } h2 { diff --git a/resources/css/components/markup.css b/resources/css/components/markup.css index b8ccb3ac3..3b3e0ee45 100644 --- a/resources/css/components/markup.css +++ b/resources/css/components/markup.css @@ -2,12 +2,17 @@ @apply leading-normal; h2, - h3 { - @apply text-black mb-3 + h3, + h4 { + @apply text-black font-bold mb-3 } h2 { - @apply mt-6 mb-2 + @apply mt-8 mb-3 + } + + h3 { + @apply text-lg mt-8 } p, diff --git a/source/_posts/2019-04-29-testing-tailwindcss-plugins-with-jest.md b/source/_posts/2019-04-29-testing-tailwindcss-plugins-with-jest.md new file mode 100644 index 000000000..2a2369e8f --- /dev/null +++ b/source/_posts/2019-04-29-testing-tailwindcss-plugins-with-jest.md @@ -0,0 +1,245 @@ +--- +title: Testing Tailwind CSS plugins with Jest +excerpt: How to write tests for Tailwind CSS plugins using Jest. +tags: + - javascript + - jest + - tailwindcss + - testing +promoted: true +--- +
+**Note:** The content of this post is based on tests seen in Adam Wathan’s ["Working on Tailwind 1.0" video][working-on-tailwind-video], the Jest documentation website, and existing tests for other Tailwind plugins that I’ve used such as [Tailwind CSS Interaction Variants][tailwindcss-interaction-variants]. +
+ +## Preface + +In Tailwind 0.x, there was a `list-reset` utility that reset the list style and padding on a HTML list, though it was removed prior to 1.0 and moved into Tailwind’s base styles and applied by default. + +However, on a few projects I use Tailwind in addition to either existing custom styling or another CSS framework, and don’t use `@tailwind base` (formerly `@tailwind preflight`) so don’t get the base styles. + +Whilst I could re-create this by replacing it with two other classes (`list-none` and `p-0`), I decided to write [my own Tailwind CSS plugin][repo] to re-add the `list-reset` class. This way I could keep backwards compatibility in my projects and only need to add one class in other future instances. + +In this post, I’ll use this as an example to show how to write tests for Tailwind CSS plugins with a JavaScript testing framework called [Jest][jest]. + +More information about plugins for Tailwind CSS themselves can be found on the [Tailwind website][tailwind-docs-plugins]. + +## Add dependencies + +To start, we need to include `jest` as a dependency of the plugin, as well as `jest-matcher-css` to perform assertions against the CSS that the plugin generates. + +We also need to add `tailwindcss` and `postcss` so that we can use them within the tests. + +```plain +yarn add -D jest jest-matcher-css postcss tailwindcss@next +``` + +This could be done with `yarn add` or `npm install`. + +## Writing the first test + +In this plugin, the tests are going to be added into a new file called `test.js`. This file is automatically loaded by Jest based on it’s [testRegex setting][jest-testregex-setting]. + +This is the format for writing test methods: + +```js +test('a description of the test', () => { + // Perform tasks and write assertions +}) +``` + +The first test is to ensure that the correct CSS is generated from the plugin using no options. + +We do this by generating the plugin’s CSS, and asserting that it matches the expected CSS within the test. + +```js +test('it generates the list reset class', () => { + return generatePluginCss().then(css => { + expect(css).toMatchCss(` + .list-reset { + list-style: none; + padding: 0 + } + `) + }) +}) +``` + +However, there are some additonal steps needed to get this working. + +### Generating the plugin’s CSS + +Firstly, we need to import the plugin’s main `index.js` file, as well as PostCSS and Tailwind. This is done at the beginning of the `test.js` file. + +```js +const plugin = require('./index.js') +const postcss = require('postcss') +const tailwindcss = require('tailwindcss') +``` + +Now we need a way to generate the CSS so assertions can be written against it. + +In this case, I’ve created a function called `generatePluginCss` that accepts some optional options, processes PostCSS and Tailwind, and returns the CSS. + +```js +const generatePluginCss = (options = {}) => { + return postcss( + tailwindcss() + ) + .process('@tailwind utilities;', { + from: undefined + }) + .then(result => { + return result.css + }) +} +``` + +Alternatively, to test the output of a component, `@tailwind utilities;` would be replaced with `@tailwind components`. + +```js +.process('@tailwind components;', { + from: undefined +}) +``` + +Whilst `from: undefined` isn’t required, if it’s not included you will get this message: + +> Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning. + +### Configuring Tailwind + +In order for the plugin to generate CSS, it needs to be enabled within the test, and Tailwind’s core plugins need to be disabled so that we can assert against just the output from the plugin. + +As of Tailwind 1.0.0-beta5, this can be done as follows: + +``` +tailwindcss({ + corePlugins: false, + plugins: [plugin(options)] +}) +``` + +In prior versions, each plugin in `corePlugins` needed to be set to `false` separately. + +I did that using a `disableCorePlugins()` function and [lodash][lodash], using the keys from `variants`: + +``` +const _ = require('lodash') + +// ... + +const disableCorePlugins = () => { + return _.mapValues(defaultConfig.variants, () => false) +} +``` + +### Enabling CSS matching + +In order to compare the generated and expected CSS, [the CSS matcher for Jest][jest-css-matcher] needs to be required and added using [expect.extend][jest-expect-extend]. + +```js +const cssMatcher = require('jest-matcher-css') + +... + +expect.extend({ + toMatchCss: cssMatcher +}) +``` + +Without it, you’ll get an error message like _"TypeError: expect(...).toMatchCss is not a function"_ when running the tests. + +## The next test: testing variants + +To test variants we can specify the required variant names within as options to `generatePluginCss`. + +For example, this is how to enable `hover` and `focus` variants. + +```js +generatePluginCss({ variants: ['hover', 'focus'] }) +``` + +Now we can add another test that generates the variant classes too, to ensure that also works as expected. + +```js +test('it generates the list reset class with variants', () => { + return generatePluginCss({ variants: ['hover', 'focus'] }).then(css => { + expect(css).toMatchCss(` + .list-reset { + list-style: none; + padding: 0 + } + + .hover\\:list-reset:hover { + list-style: none; + padding: 0 + } + + .focus\\:list-reset:focus { + list-style: none; + padding: 0 + } + `) + }) +}) +``` + +## Running tests locally + +Now that we have tests, we need to be able to run them. + +With Jest included as a dependency, we can update the `test` script within `package.json` to execute it rather than returning a stub message. + +```diff +- "test": "echo \"Error: no test specified\" && exit 1" ++ "test": "jest" +``` + +This means that as well as running the `jest` command directly to run the tests, we can also run `npm test` or `yarn test`. + +After running the tests, Jest will display a summary of the results: + +![A screenshot of the Jest output after running the tests, showing 1 passed test suite and 2 passed tests, as well as the test run time.](/images/blog/testing-tailwindcss-plugins/running-tests.png) + +## Running tests automatically with Travis CI + +As well as running the tests locally, they can also be run automatically via services like [Travis CI][travis] when a new pull request is submitted or each time new commits are pushed. + +This is done by adding a `.travis-ci.yml` file to the repository, like this one which is based on the [JavaScript and Node.js example][travis-nodejs-example]: + +```yml +language: node_js + +node_js: + - '8' + +cache: + directories: + - node_modules + +before_install: + - npm update + +install: + - npm install + +script: + - npm test +``` + +With this in place, the project can now be enabled on the Travis website, and the tests will be run automatically. + +For this plugin, you can see the results at . + +[jest-css-matcher]: https://www.npmjs.com/package/jest-matcher-css +[jest-expect-extend]: https://jestjs.io/docs/en/expect#expectextendmatchers +[jest-testregex-setting]: https://jestjs.io/docs/en/configuration#testregex-string-array-string +[jest]: https://jestjs.io +[lodash]: https://lodash.com +[repo]: https://github.com/opdavies/tailwindcss-list-reset +[tailwind-docs-plugins]: https://tailwindcss.com/docs/plugins +[tailwindcss-interaction-variants]: https://www.npmjs.com/package/tailwindcss-interaction-variants +[travis-nodejs-example]: https://docs.travis-ci.com/user/languages/javascript-with-nodejs +[travis]: https://travis-ci.org +[working-on-tailwind-video]: https://www.youtube.com/watch?v=SkTKN38wSEM diff --git a/source/images/blog/testing-tailwindcss-plugins/running-tests.png b/source/images/blog/testing-tailwindcss-plugins/running-tests.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0b6150f2914acc0193a477cd3fc3d8bfd2686d GIT binary patch literal 36414 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 literal 0 HcmV?d00001