New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

apigeek-dialect

Package Overview
Dependencies
Maintainers
1
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

apigeek-dialect

A Gherkin-based micro-framework

  • 1.1.7
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
4
decreased by-63.64%
Maintainers
1
Weekly downloads
 
Created
Source

ApiGeek CI version dependencies apigeeks

A library for parsing and executing Gherkin-English

Dialect features are written in "natural language" so every stakeholder can make sense of them.

It is a core dependency for the following ApiGeek projects:

ApiGeek-Architect - an automation and orchestration tool for Software Architects

ApiGeek-Affirm - a BDD test tool for Software Teams focused on Web APIs

I want to use natural language

The BDD notation for a scenario is:

Scenario: an example
	GIVEN   some pre-condition
	WHEN    an action is performed
	THEN    an outcome is expected

The text following the keyword (GIVEN | WHEN | THEN) needs to match a phrase/pattern from a vocabulary.

This BDD notation is called "Gherkin". Gherkin is human and machine readable - business analysts, featureers, developers and robots can collaborate.

New features can be created using any simple text editor.

They are invoked elegantly from an API, the command line, Mocha, your IDE or your DevOps workflow.

The results are nicely formatted to help debug, showcase and socialise.

You can download pre-packaged vocabularies and/or roll your own with simple Javascript.

I want to see an example

Dialect features are collections of scenarios.

To improve readability, the keyword AND can be used instead in place of the verbs above.

You can influence what Dialect understands using @nnotations.

Feature: An Example

@example
  Scenario: Trivial Example

  Given I am an example
  When debug works
  And log works
  And error works
  Then I succeed

  Scenario: Trivial Test

    Given I am testing the story
    When debug ok
    And log ok
    And error ok
    Then I assert this.name == "story"

  @skip
  Scenario: Skip Broken Story

    Given I am broken
    Then I fail

I want to test-drive Dialect

Apigeek Dialect has a limited Vocabulary.

It's probably better to use ApiGeek-Architect instead.

Apigeek Dialect is built using NodeJS.

If you're new to node, pre-read Installing Node.

You install Dialect as a system-wide CLI command:

$ npm install apigeek-dialect -g

To run it simply type:

$ dialect

By default, dialect looks in the "./features" sub-directory. It will create the folder, if it's not found.

However, It won't do much else until we provide some feature scenarios.

First, let's enable Dialect's built-in debugger

export DEBUG=apigeek*

Now, create a file called ./features/example.feature with a simple text editor.

Paste the Feature Example from above.

For more options, type:

$ dialect -h

For example:

If your features are in a different location then use the "--features" or "--epics" option to locate them. These folders are not automatically created, they return an error if not found.

To discover the current vocabulary, type:

$ dialect --knows

I want to embed Dialect into my projects

Create an NPM/Node project with the dependency:

apigeek-dialect

Optionally, add some domain-specific vocabularies:

apigeek-dialect-webapi
apigeek-dialect-webapp
apigeek-dialect-blueprint

Then create a NodeJS main.js script, and copy the following:

#!/usr/bin/env node

var pkg = require("../package");
var _ = require("underscore");
var apigeek = require("apigeek-dialect"), cli = apigeek.cli;
var debug = require("debug")("apigeek:dialect");

cli.version(pkg.version);

apigeek.init();

// auto-install dependent dialects - needed in top-level project to resolve external projects

_.each(pkg.dependencies, function(ver, dep) {
    if (dep.indexOf("dialect-")>=0) {
        debug("install: "+dep+" @ "+ver);
        apigeek.dialect.learn(require(dep),dep);
    }
});

// execute the CLI

apigeek.config.name = pkg.name;
apigeek.execute();

Hopefully, you should be able to extend/embed it from there :-)

I want to license ApiGeek:Dialect

This software is licensed under the Apache 2 license, quoted below.

Copyright 2015-2016 Lee Curtis & Troven 2009-2015

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

[http://www.apache.org/licenses/LICENSE-2.0]

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

FAQs

Package last updated on 12 Sep 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc