Behavior-Driven Development (BDD) is a development methodology, similar to Test-Driven Development, where the testing scenarios are written in plain English, and act as a source of truth for testing and development. Triceratop acts as a parser and a testing framework for BDD, using the Gherkin Language Syntax and Typescript to create feature files and test files.
NOTE: Triceratop is minimally complete, not feature complete at the moment. See below for possible missing features.
deno install -Afq --unstable https://raw.githubusercontent.com/NicholasACTran/triceratop/master/triceratop.ts
When generating and using triceratop CLI, it expects the tests to be in the same directory, in the format:
project
|___features
| | test_feature_1.feature
| | test_feature_2.feature
| | ...
|___steps
| | test_feature_1.ts
| | test_feature_2.ts
| | ...
Where each .feature file in the features folder correlates directly with a .ts file in the steps folder with the same filename. If there aren't feature/steps directories, triceratop will create it on the fly.
By running a triceratop CLI command, it would go through each .feature file and generate a .ts file with the same name, containing the functions that encapsulate the steps in the .feature file.
Example:
triceratop generate
By running a triceratop CLI command, it should go through each .feature file (or a specific one) and use the .feature file to search for the specific step functions in the correlated .ts function and run a test using the underlying Deno test framework.
Example:
triceratop test
We love to get more help implementing improvements and features! Our suggested starting place to investigate is the top-level triceratop.ts file, and following the imports from there. Most of the testing functionality can be found in ./lib/mod.ts, while most of the parsing functionality is found in the ./util folder. See below for some possible things that need to be implemented.
- Parsing
- Implement better error handling
- Remove dangling commas when creating typescript files
- Testing
- Create TestDefinitions for functions with parameters
- Handle global variables
- Implement flag to test one file at a time
- Implement stubs/mocks/fakes
- General
- Implement a more CLI information and options
- Create top-level JSON file to handle configurations
- Move steps and features folders under a tests folder
- Add test coverage