yamlspec v1.0.7
yamlspec
Generates JavaScript package specification files from a .yml specification file, giving both developers and QA team a quick and productive tool for writing specifications.
Installation
Install yamlspec globally so you can invoke it as command-line program:
npm i -g yamlspecCheck yamlspec runs at command-prompt:
yamlspec -V
v1.0.5YML-format specifications
To expedite specification formulation process, yamlspec introduces its alternative to traditional .js code. Those familiar with Jasmine and its related specification frameworks based on .js will recognize the describe and it entries.
The example below contains specifications for <packageName> package, which is invoked with a require statement. The package is placed in a constant whose name is also <packageName>.
The specification contains two describe sections, aka "test sets", inside the items key. Each section contains its own test cases as it entries. The test cases fall under a test set's items.
package:
- require: <packageName>
- const: <packageName>
items:
- describe:
what: <packageName>
items:
- it: should have method a
- describe:
what: method a
items:
- it: should return a string
- it: should return an empty string when input parameter is empty
- it: should return en empty string when input parameter is not specified
- it: should return an empty string when input parameter has only delimiters JavaScript Code
const yamlspec = require('yamlspec')
let sourceFilename = '/path/to/specsInYamlFormat.yml';
let source = yamlspec.loadFile(sourceFilename)
yamlspec.renderFile('/path/to/spec/folder/specfilename.js', source);CLI
yamlspec [options] sourceFilenameyamlspec -h
Usage: yamlspec [options] sourceFilename
YAML to Jasmine specification generator.
Options:
-V, --version output the version number
-o, --output <outfilename> name of extended specification filename
-s, --suffix <suffix> suffix text to go after test basename (default: "Spec")
-p, --path <outpath> root path for generated specification files (default: "./spec")
-t, --templatepath <templatepath> path to templates (default: ".\\bin\\templates")
-h, --help display help for commandExamples
- Create your working folder with
mkdir myfolder,cd myfolder, and createmypackage.ymlas follows:
package:
request: fs
const: fs
items:
- describe:
what: Simple test suite
items:
- it: First test description
- it: Second test description
- it: Third test description- Run
yamlspec
yamlspec mypackageyamlspec generates the ./spec/mypackageSpec.js
const fs = require('fs');
describe('Simple test suite', () => {
// First test description
it('First test description', () => {
//
// @todo First test description
//
expect(0).toEqual(1)
})
// Second test description
it('First test description', () => {
//
// @todo Second test description
//
expect(0).toEqual(1)
})
// Third test description
it('Third test description', () => {
//
// @todo Third test description
//
expect(0).toEqual(1)
})
})- Invoke
Jasmine, confirming your specifications are available. All will fail.
jasmineAPI
Functions
loadFile(sourceFilename, options) ⇒ Object
Load source file with YAML specification.
Kind: global function
Returns: Object - Specification object.
| Param | Type | Default | Description |
|---|---|---|---|
| sourceFilename | string | Source filename in .yaml format | |
| options | Object | {} | File loading options. |
render(source, options) ⇒ string
Render extended specification content.
Kind: global function
Returns: string - Expanded resulting specification content.
| Param | Type | Default | Description |
|---|---|---|---|
| source | Object | Specification object. | |
| options | Object | {} | Rendering options. |
renderFile(outputFilename, source, options)
Render file with exptended specification content.
Kind: global function
| Param | Type | Default | Description |
|---|---|---|---|
| outputFilename | string | Path-like string of output filename. | |
| source | Object | Specification object. | |
| options | Object | {} | Rendering options. |