toddmohney / feature-creature Goto Github PK
View Code? Open in Web Editor NEWA live editor for Cucumber features
A live editor for Cucumber features
As the API and frontend have come together, the cost of maintaining the product-executable is outweighing its usefulness. Delete this build. If we want it back we can always retrieve its latest state from this commit.
As a feature-creature developer
So that I can run the application in different contexts on the same machine
I want to externally configure which environment the application is to be run in
Example use cases:
On a development machine, I want to be able to run in either "development" or "test" mode
On a CI machine, I want to run in CI mode
On a production machine, I want to run in Production mode
As a product contributor
I want access to view/edit features of a product owned by another user
So that we can collaborate on the feature definition process
As a product contributor
When I search/filter features
I want to see the current terms/filters
So that I can better understand my current Features view
And I want to clear those terms/filters
So that I can view the full Feature list
Expected Behavior
When I fill out a form and submit it successfully
Clicking the submit button a second time should not create a new record
Actual Behavior
It creates a new record
Repro Steps
Fill out a form and submit it
Upon successful response, submit again
You'll see another record get created
Feature: Importing existing feature files
As a product contributor
So that I can manage my product's features
I want to import my existing feature descriptions
Possibilities
So that I can visualize how my product's features are organized
I want to see a list of all features which mirrors the structure in which they are stored in my project
Expected behavior
When I click a feature in the feature tree
Then I see the feature
When I click another feature in the feature tree
Then I see only that feature
Actual behavior
When I click another feature in the feature tree
Then I see that feature prepended to the feature view
And the previous feature shows below
As a product owner
So that I can access and edit my features in a centralized convenient location
I want a web interface to feature-creature
As a Product Owner
So that I can encourage ubiquitous language and understanding across my teams
I want to define key User Roles used in my Product
Currently, the way the web server accesses the environment configuration is "not great".
Follow the pattern established by our search service to make it "a lot better".
Finishing this work will enable completion of #58.
Library functions to enqueue a search job in SQS are complete, but we should encapsulate the application configuration in the web server application before integrating with this work to ensure the code stays nice.
As a Product Contributor
In order to define roles that Product Collaborators can use when building Features and Examples
I want to define User Roles
A "User Role" is a description of a type of user that uses the product. A "User Role" should consist of at least a "Title" and a "Definition".
As a Product Owner
So that I can understand how my system's features are defined
I want to view a feature description
Leverage the /products/:id/feature?path=/path/to/feature
As a Product Contributor
In order to build common language that my team can utilize when building Features and Examples
I want to be able to define Domain Terms
Currently any non-matching route responds with the API Docs.
Create a dedicated endpoint /api/docs
and allow non-matching routes to respond with a 404.
Currently there are a couple missing pieces keeping us from integrating the Elm front-end and the creature server:
/products
endpoint does not return the IDs of the recordsThere are many functions which suffer from the AppConfig -> a
pattern.
Let's find an abstraction similar to that established by the API to encapsulate configuration dependency.
As a feature-creature developer
So that I can be working with the latest stable releases of dependent packages
I want to use the most up-to-date version of GHC and accompanying libraries
Introducing the cabal.config
file with differing pkg versions than I had been working would have required me to downgrade GHC on my personal machine. I figured we'd want to stay up-to-date anyway, so I upgraded all the things. (Ah, that's the sweet cabal hell I've heard people speak so fondly of!)
As a Product Contributor
So that I can understand unfamiliar User Roles within my Features
I want to see a list of all key User Roles defined for my Product.
As a Product Collaborator
So that I can understand what features are applicable to a particular Domain Term
I want to Search all Features referencing the Domain Term
Enqueuing and dequeuing a search index job is now working.
After successfully processing the job, delete it from the message queue since the job is now done.
As a Product Contributor
So that I can understand unfamiliar Domain Terms within my Features
I want to see key Domain Terms within the context they are used.
notes
I'm thinking this could be done in a couple different ways.
As a feature-creature developer
So that I can sit down and quickly get to work
I want a single script that starts up all application service dependencies
Services:
This list will soon grow to background workers, utility services, etc
As a product owner
So that I can differentiate my products from other users products
I want to associate my products to my personal account
As a User
When an API request fails
I want to see a nice error message
And have a way back to somewhere sensible
Notes:
For starters, a generic error page with a link back "home" would suffice.
One step better, a context specific error message with a link back "home"
API integration points:
Feature: Development Environment Bootstrapping Script
As a feature-creature developer
So that I may quickly and accurately setup a new machine to build and run feature-creature
I want a bootstrapping script with sensible defaults which, upon execution, satisfies development environment dependencies
As a Product Collaborator
So that I can understand what features are available to a particular User Role
I want to Search all Features referencing the User Role
As a Product Owner
So that I can encourage ubiquitous language and understanding across my teams
I want to define key Domain Terms used in my Product
As an API consumer
So that I can request a single feature by ID
I want the feature ID included in the directory tree response
As a Feature Creature API consumer
So that Team Creature does not break my application on a regular basis
I want to specify the version of the API I compatible with my implementation
As a product collaborator
So that I can describe new functionality
I want to create a new feature
Once we import features from a repo (#8) it would be nice if Feature Creature became the canonical home for the documentation of how a product should work.
If that's the case we'll need to be able to share the features from Feature Creature to one or more repositories of implementing code.
Not sure it makes sense to have features always be in sync or sync them at regular intervals after collaboration on changes or additions.
As a Product Collaborator
So that I can fix my mistakes
I want helpful error messages when I am incorrectly filling out a form
Forms needing validation:
So that I can find and view the details of a specific feature or scenario
I want to see the feature and scenario titles within each file in the list view
Within the feature file listing view and
below each feature file:
Opening this to start having all of the interesting conversations this brings up. Pieces of this can likely be broken out into finer grained issues that represent steps toward an eventual goal.
As a feature-creature developer
I do not want my local machine to double as a production server
So I want a more appropriate environment to deploy the application
Add API endpoints for creating and retrieving a User Role
Add API endpoints to create and retrieve a domain term
So that I can understand how a given product feature is described
I want to see the full description of the feature
Dependent on #8
Feature: Creating a Product
As a product owner
So that I can associate and manage my product's features descriptions
I want to create and describe my product
Acceptance:
Complete the form by running:
feature-creature product add
Verify the product was added correctly by running:
feature-creature product list
As a Product Owner
So that I can use all of the amazing features Feature Creature has to offer
I want to create a Product
Creating a Product has multiple points of failure and does not currently clean up after itself when an error occurs.
Expected Behavior
When I submit a request to create a Product
And the Product's repo can not be fetched/stored/etc
Then there should not be a record persisted for the Product
Actual Behavior
A product record is created
Now things are in an icky state where we have a product, but no repo to work against
Repro Steps
Submit a request to create a Product with an invalid repo url (This can be done via curl or the UI)
You'll see a Prouduct persisted, but without the accompanying Git repo, feature-creature is pretty worthless.
Auto-running migrations was lost when the CLI tool was removed.
Add it back!
As a Product Contributor
So that I can understand unfamiliar User Roles within my Features
I want to see key User Roles within the context they are used.
notes
I'm thinking this could be done in a couple different ways.
Servant supports out-of-the-box-ish documentation
http://haskell-servant.github.io/tutorial/docs.html
Make it so!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.