plus.cucumber.code

Cucumber's code support

Usage no npm install needed!

<script type="module">
  import plusCucumberCode from 'https://cdn.skypack.dev/plus.cucumber.code';
</script>

README

Feature: Cucumbers code support

I want to write documentation that always works.

Our tests - our documentation.

Scenario: Should allow to define code inline and assert results (digits) 

Given code `var money = 100`                                             
Then `money` should equal `100`                                          

Scenario: Should allow to define code in the box and assert results (strings) 

Given code:                                                                   
  """
  ```
    var money = 101;
    var name = 'plus';

  ```
  """
Then `money` should equal `101`                                               
Then `name` should equal 'plus'                                               
Then `name` should equal `'plus'`                                             
Then `name` should equal "plus"                                               
Then `name` should equal `"plus"`                                             

Scenario: Should allow to define code in the box and assert results (objects/functions) 

Given code:                                                                             
  """
  ```
    var myFunction = function (){
      return 200;
    }

    var MyClass = function (){
      this.name = 'my name'
    }

  ```
  """
Then `myFunction()` should equal `200`                                                  
Then `new MyClass().name` should equal `'my name'`                                      

Scenario: Should allow to assert types and variables 

Given code `var MyClass = function(){}`              
Given code `var instance = new MyClass()`            
Then `instance` should be instanceOf `MyClass`       
Then `instance` should be ok                         

Scenario: Should allow to assert with should chain 

Given code `var name = 'plus'`                     
Then `name` should be ok                           
Then `name` should not be false                    

Scenario: Should allow to write doc blocks 

Given @doc this is inline documentation    
Given @doc:                                
  """
   this is box of documentation
  """

Scenario: Should allow to require relative module 

Given require `src/Code.js` as `Code`             
Then `Code` should be ok                          

Scenario: How to use? 

Given @doc `npm install plus.cucumber.code --save-dev`       
Given @doc Simply add code.js file to features folder        
Given @doc:                                                  
  """
  ```
  // file: features/code.js

  module.exports = require('plus.cucumber.code');

  ```
  """
Given @doc or `node_modules/.bin/plus.cucumber.code.js init` 
Given @doc it will create code.js from previous doc box.     

8 scenarios (8 passed) 27 steps (27 passed)