cupl
v0.1.9
Published
This is a tool for automatic gherkin feature files generation from PlantUML activity diagram.
Downloads
16
Maintainers
Readme
Cupl
A CLI tool for automatic CUcumber gherkin feature files generation from PLantuml activity diagram.
Cupl will help you transform .puml
file of this diagram.
Into this Gherkin feature description
Feature: Simple ATM withdrawal
No PIN retry, No Amount re-enter
Scenario: Successful transaction
Given Entered Correct PIN number
And Balance is sufficient
When enter amount
Then dispense notes
And print receipt
And eject the card
@important
Scenario: Not enough money
Given Entered Correct PIN number
And Insufficient balance
When enter amount
Then display "Insufficient balance"
And eject the card
Scenario Outline: PIN is incorrect
Given User's PIN is <pin>
When insert card
And User enters <input>
Then display "incorrect PIN"
And eject the card
Examples:
| pin | input |
| 123456 | 325212 |
| 123456 | |
Usage
Conventions
- User/Core activity must start with
@
symbol, these will go toWhen
steps of Gherkin file. - If condition must be a statement that end with
?
, the question mark will be drop while parsing.
:x:
is PIN correct?
:white_check_mark:
PIN is correct?
- Else branch must be descriptive.
:x:
no
:x:
false
:white_check_mark:
PIN is incorrect
- Activity must not contain (!), if it ends with !, the activity will be consider as an
Given
.
Basic
- create a
.puml
file and run
$ npx cupl FILE.puml
Feature: ...
...
- a
.cupl.json
file will be generated to allow you to
- Rename
Scenario
( byname
field). - Rename rename steps ( by
alias
dictionary) and insert parameters. - Rename add
@tag
toScenario
and steps (bytags
field - array of strings). - Rename change Gherkin dialect.
- Provide examples.
Example:
{
"$schema": "https://raw.githubusercontent.com/cinoss/cupl/master/src/config.schema.json",
"global": {
"alias": {
"PIN is correct": "Entered Correct PIN number"
},
"dialect": "en"
},
"paths": {
"PIN is correct|Balance is sufficient": {
"name": "Successful transaction"
},
"PIN is correct|Insufficient balance": {
"name": "Not enough money",
"tags": ["important"]
},
"PIN is incorrect": {
"alias": {
"PIN is incorrect": "User's PIN is <pin>",
"enter PIN": "User enters <input>"
},
"examples": [
["pin", "input"],
["123456", "325212"],
["123456", ""]
]
}
}
}
- Run
cupl
again with-w
flag to generate a file.
$ npx cupl -w FILE.puml
Feature: ...
...
Generated [FILE].feature successfully!
Install globally
$ npm install -g cupl
$ cupl FILE
running command...
...
Syntax Support
Gherkin
- [x] Feature
- [x] Example (or Scenario)
- [x] Given, When, Then, And, But for steps (or *)
- [x] Tags
- [x] Examples
- [ ] Background
- [ ] Scenario Outline (or Scenario Template)
- [ ] Data Tables
- [ ] Rule
- [ ] Doc Strings
- [ ] Comments
PlantUML Activity Diagram (New Syntax)
- [x]
start
,stop
,end
- [x]
if
,elseif
,endif
- [x]
title
,end title
- [x]
note
,end note
- [x] SDL (
|
,<
,>
,/
,]
,}
) - [ ]
repeat
,repeat while
,backward
,while
,end while
- [ ]
fork
,end fork
- [ ] Colors
- [ ] Arrow
- [ ] Connector
- [ ] Grouping
- [ ] Swimlanes
- [ ] Detach