gpc-macro

This precompiler is responsible for defining macros in feature files and then executing them.

Usage no npm install needed!

<script type="module">
  import gpcMacro from 'https://cdn.skypack.dev/gpc-macro';
</script>

README

gpc-macro

Downloads Version@npm Version@git CI Docs

This precompiler is responsible for defining macros in feature files and then executing them.

Usage

  1. Defining a macro by creating macro scenario. Using @macro(${macroName}) tag on the scenario defines a macro with the provided name and steps that are included.

    Note: this scenario will not be run during test execution, it is removed during pre-processing. The definition cannot contain macro execution step (see next step).

    Errors are thrown when no name or steps are included in the definition, or when defining a macro with an already existing name.

  2. Executing the macro. In another scenario using step 'macro ${macroName} is executed' will replace this step with the steps in the definition of ${macroName} macro.

    Throws error when no ${macroName} is provided in the step, or when no macro is defined by name provided.

See examples for the input files and an output in the tests/data folder.

'use strict';
const compiler = require('gherking');
const Macro = require('gpc-macro');

let ast = await compiler.load('./features/src/login.feature');
ast = compiler.process(
    ast,
    new Macro(),
);
await compiler.save('./features/dist/login.feature', ast, {
    lineBreak: '\r\n'
});
import {load, process, save} from "gherking";
import Macro = require("gpc-macro");

let ast = await load("./features/src/login.feature");
ast = process(
    ast,
    new Macro(),
);
await save('./features/dist/login.feature', ast, {
    lineBreak: '\r\n'
});

API

Macro.createStep(name)

Params:

  • {String} name - The name of the macro

Returns: {Step} - A macro step for the given macro.

Other

This package uses debug for logging, use gpc:macro :

DEBUG=gpc:macro* gherking ...

For detailed documentation see the TypeDocs documentation.