Giter VIP home page Giter VIP logo

chorus-bdd / chorus Goto Github PK

View Code? Open in Web Editor NEW
36.0 12.0 7.0 7.48 MB

The Chorus BDD interpreter - Executable specifications for distributed systems

Home Page: http://www.chorus-bdd.org

License: MIT License

XSLT 0.72% HTML 0.22% Shell 0.14% Java 92.37% Batchfile 0.01% Gherkin 4.55% CSS 0.80% Ruby 0.01% FreeMarker 1.20%
bdd distributed-systems testing chorus gherkin java javascript bdd-tests bdd-framework integration-testing

chorus's People

Contributors

aymandf avatar chenzhang22 avatar eddiejaoude avatar lakestephen avatar mitchbe avatar nickebbutt avatar steveneal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chorus's Issues

Logo

Would look more polished if:

  • Organisation had a logo
  • Members had a profile picture

Step macro duplicates are not detected

When Chorus scans the path for step macro files it is possible for it to find two maros with the same name.

Currently the implementation combines all steps in the macros producing strange tests. It would be better to make the parser report an error if an ambiguously named step macro is found.

Further, to allow the user to have different versions of the step macro; the -f flag to the parser should be able to accept multiple semi-colon separated paths (like classpath in Java) rather than just a single value. This will allow the user to specify multiple individual folders for config rather than just one.

Add support for Profiles to modify behaviour for different environments

We have a case, where we need the process handler, to handle a particular situation.

For example, in the Feature-Start:

I want to check if something is running already and it wasn't started by Chorus.
I could create a handler to check if the outside process is running.
If it is running, create a new ChorusContext variable, isRunning, and set it to true.
If it's not running, create a new ChorusContext variable, isRunning, and set it to false.

Add a new step to the Process Handler to check the ChorusContext variable isRunning.

If isRunning is not null/false, then start the process.
If isRunning is true, don't start the process.

This would be useful where you have 2 situations.

E.G. 1
The developer doesn't want to start a server, wants the test framework to start the server and run all tests on their local machine.

E.G. 2
The qa setup has an external process which deploys and starts the server in a vm and qa only wants the tests to run.

Test Execution Enhancement Request

I have a particular feature file I want to run as the last test.

Currently the only way to make this happen, as far as I'm aware of, is to name the feature file beginning with a 'z'.

Chorus executes the tests in Alphabetical Order.

Perhaps adding support for a tag @finaltest or give it some other name.

The system picks up this tag and executes this feature last.

Process already exists version 1.6.0 issue

I have a step macro like such:

Step-Macro: I can run the console in batch mode
Given I start a consoleBatch process named console
Then I read the line 'Command Line .' from the console process
Then I read '< .
>' from the console process
Finally I write the line 'quit' to the console process

Step-Macro: I execute application
Given I start a consoleFlow process named console
And I read the line 'Command Line .*' from the console process
....

Uses: Processes

Feature: test
Run the test

Scenario: Execute the test
Given I can run the console in batch
And I execute application

It's failing stating 'console' process already exists.
As soon as step 'And I execute application' is executed.

The stepmacro 'I can run the console in batch mode'

Issues a 'quit' command which stops the process.

It might take a few seconds to stop the process, is this causing the issue?

I added the process.scope=scenario and it still failed.

Ordering for execution listener callbacks

Support an annotation which can be applied to ExecutionListener to control the order in which listeners are invoked.

Use this to guarantee the ordering in which tear down takes place for built in listeners

Create a Step to Stop a Scenario

Sometimes develop wants a clean way to stop a scenario after a certain Step.

Other than creating a handler with a step System.exit(0);

Add suite-start scenarios

Add support for suite-start.feature and suite-end.feature
These contain some steps to run and the start and end of a test suite

Must support profiles so that different profiles can have different setup / tear down

Feature Request: Add ability to pass values from ChorusContext to ProcessHandler's read and write Steps

Need the ability to pass values from the ChorusContext to the ProcessHandler's read and write steps.

The ChorusContext Handler might need to be modified in order support this request.

One way I can think of is allow the ChorusContextHandler to retrieve values from an existing object in the ChorusContext and pass it to a newly created ChorusContext variable. (This might not be the best idea)

E.G. MyHandler.java
ChorusContext.getContext().put("myPath", theFilePath);

feature file

Uses: Chorus Context
Uses: MyHandler
Uses: Processes

Given I can retrieve my context data from variable myPath
Then I create a context variable myVar with value from existing context variable myPath
Next I write line myVar to the xxxx process

I'd prefer something along the lines

Uses: Chorus Context
Uses: MyHandler
Uses: Processes

Given I can retrieve my context data from variable myPath
Next I write line ChrousContext.myPath to the xxxx process

Add the ability to work with the STDOUT of a process started by ProcessHandler

Need the ability to work with the STDOUT of a process started by ProcessHandler.

Example:

Assuming we have STDIN feature added as well

Given I start a server process named myServer
And I start a console process named myConsole
And I send the line (insert your text here) to the myConsole process
Then I read the line from myServer and check if myValue exists.

Dynamic reloading of handler classes with revised step definitions

At present when you export a handler from a remote component, it's necessary to restart the component when you recompile to change step patterns (the step method itself can often be modified and reloaded in debug mode, but the values of step annotations cannot be).

The goal is to enable a mode where the handler classes can be reloaded at runtime from a separate class loader, and expose a better API for adding steps dynamically

PassesWithinAnnotation for Processes

It would be useful to have some PassesWithinAnnotation for the Process Handler.

For example,

You need to execute the ping process and you want to continuously read the stdout and look for a certain value or until a value is reached, for x number of seconds .

Step Macro mangling step written to process

I have the flowing Step Macros:

Step-Macro: I deploy application using name space in deployment group
When I write the line 'deploy application . in ;' to the console process

Step-Macro: I deploy application using name space in deployment group with in deployment group
When I write the line 'deploy application . in with . in ;' to the console process

I'm trying to use the second Step-Macro, it's writing the following to the process:

deploy application MyApp in deployment group node3 with MyFlow.MyApp in node2;

It should write:

deploy application MyApp.MyApp in node3 with MyApp.MyFlow in node2;

Process not stopped

I used the step

Given I stop the process named xxxx

It's not stopping the process.

ps -ef | grep java shows the process is running.

Better error logging for failed JUnit suites / fix NullPointer

[10:44:12]: [junit] ib.internal.neon.chorus.ChorusUiSuiteTest
[10:44:12]: [junit] Exception in thread "main" java.lang.NullPointerException
[10:44:12]: [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:419)
[10:44:12]: [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:911)
[10:44:12]: [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:768)
[10:44:13]: [junit] Running ib.internal.neon.chorus.ChorusUiSuiteTest

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.