vue-coy

A CLI tool to help identify missing Vue Options API component tests.

View the Project on GitHub crishellco/vue-coy

Build codecov

Vue Coy

A CLI tool to help identify missing Vue Options API component tests.

Table of contents

Install

# in a project
yarn add -D @crishellco/vue-coy

# globally 
yarn global add @crishellco/vue-coy

Usage

What does it look for?

exports.GROUPS_TO_TEST = ['watch', 'computed', 'methods'];
exports.HOOKS_TO_TEST = [
  'beforeCreate',
  'created',
  'beforeMount',
  'mounted',
  'beforeUpdate',
  'updated',
  'activated',
  'deactivated',
  'beforeUnmount',
  'unmounted',
  'beforeDestroy',
  'destroyed',
  'renderTracked',
  'renderTriggered',
  'errorCaptured',
];

When should you use it?

Config (optional)

// coy.config.json
{
  "ignore": ["node_modules"],
  "paths": ["**"], 
  "regex": "(.+)?{key}(.+)?", 
  "testFileExtension": "spec.js" 
}

Options

Name Type Default Description
ignore Array ['**/node_modules/**'] Which folders to ignore (globs)
paths Array ['**'] Where to look for Vue files (globs)
regex String '(.*?{key}.*?)' How to determine if a test exists (regex). {key} gets replaced with the name of the missing item.
testFileExtension String 'spec.js' Test file extension

Command Line

# in a project
$ yarn coy 
$ yarn coy -c 
$ yarn coy -c master
$ yarn coy -s
$ yarn coy -s path/to/save/report.json
$ yarn coy -w

# globally 
$ coy 
$ coy -c
$ coy -c master
$ coy -s
$ coy -s path/to/save/report.json
$ coy -w

Options

Flag Argument Default Description
-c, --changed branch (optional) master Only analyze changes compared to a branch
-s, --save file (optional) missing-test-report.json Saves missing test report to a JSON file
-w, --watch     Watch for changes and reevaluate missing tests
-h, --help     Display help for command

Display In Terminal (default)

image

Save To File (with -s)

{
  "test/fixtures/missing.vue": {
    "missing": {
      "methods": [
        {
          "key": "foo",
          "link": "test/fixtures/missing.vue:10"
        }
      ]
    },
    "testFile": "test/fixtures/missing.spec.js",
    "testSource": "describe('index.vue', () => {\n  describe('methods', () => {});\n});\n"
  },
  "test/fixtures/no-test.vue": {
    "missing": {
      "methods": [
        {
          "key": "foo",
          "link": "test/fixtures/no-test.vue:10"
        }
      ]
    },
    "testFile": "test/fixtures/no-test.spec.js",
    "testSource": null
  }
}

Ignoring Code

<script>
  export default {
    methods: {
      // coy-ignore-next
      foo() {}
    }
  }
</script>

How to Contribute

Pull Requests

  1. Fork the repository
  2. Create a new branch for each feature or improvement
  3. Please follow semantic-release commit format
  4. Send a pull request from each feature branch to the develop branch

License

MIT