Ideas and proposals
Work in progress and issues:
Kanban Board (GitHub)
Issues (GitHub)
Yes, this project does not have a logo yet 😱. Designers interested in helping us (for free 🙏), please contact us on our Slack Channel or open an Issue.
The logo should reflect the idea behind the language:
Concordia is the name of a roman goddess who was the personification of "concord" or "agreement". The idea is that the metalanguage may help users, stakeholders, and the software team to discuss and to reach an agreement about the software requirements. This shared understanding is essential to the software construction.
The tool generates test cases and test scripts that verify if the application under test meets the specified functional requirements. Therefore, the idea of "verification" or "testing" could be in the logo.
Interested? See how to create a plug-in.
👉 Our next goal is a plugin for Cypress.
Suggestions:
PHP: Codeception (web)
Java: Selenium (web), Robotium (android), AssertJ Swing (desktop)
Python: Selenium (web)
Other programming languages or frameworks are welcome! 💖
This language construction is part of Concordia Language since the first version, but it was not implemented yet.
A Variant Background
defines steps that must be executed before all the Variants of a certain Scenario. Example:
MOTIVATION: It allows to keep initial, repeated steps in a common place.
Like this:
MOTIVATION: Simpler syntax.
Please see Issue #27.
MOTIVATION: It allows to perform visual comparison and detect related bugs.
To use the characters """
(three quotation marks) to denote a text content to be compared. Example:
MOTIVATION: It facilitates comparisons with text files or multiple-line strings.
To allow a given UI Element or UI Literal to match a certain Table.
Example 1:
Example 2:
In which Some Table
is declared like this:
It should make target table's rows to match the declared ones.
MOTIVATION: It facilitates the verification of expected data in tables from a user interface.
NOTES: Probably it requires to convert the Concordia Action to many abstract commands that verify every table row independently. Usually testing frameworks do not provide such kind of verification (for many rows at once).
Use Concordia 2 data and time expressions inside table rows. They must be written between `
or some other character. Example:
MOTIVATION: Concordia Language allows date and time expressions inside UI Properties. Using them inside tables can be useful.
States that vary according to some generated value. Example:
According to the selected user, it will produce a different State. For example, when "bob" is selected, the produced state will be admin is logged in
and when "joe" is selected, the produced state will be guest is logged in
.
Thus, Features could depend on static or dynamic states.
MOTIVATION: Making states more flexible.
To provide a Given sentence that requires one - and only one - of the provided states. Example:
MOTIVATION: It allows to perform a XOR operation with the given states using natural language, aiming at choosing one and only one of the given states.
To provide annotations parameterize a test combination strategy for a specific Feature.
For instance, to configure the combination of invalid values for a specific Feature:
The annotations should correspond to the CLI parameters.
MOTIVATION: Increase the flexibility of the test generation procedure.
Currently:
Proposal (to accept as valid):
Alternative proposal:
MOTIVATION: Make it easier to write/read SQL statements.
Select a Feature for Test Case generation, without having to include its dependencies:
by importance value
Select a Scenario for Test Case generation:
by importance value (tag @importance
)
Test Case for test script generation;
by importance value (tag @importance
)
Provide the option --watch
to generate .testcase
files when their corresponding .feature
file changes or an imported .feature
file changes. A new seed must be produced, except when explicitly provided (using --seed
or configuration file).
Concordia has language constructions that the Compiler does not support yet. Examples:
Variant Background: Implement Variant Background
, which is part of the Concordia Language but was not implemented yet by the Concordia Compiler.
Support the tag @ignore
in Features and Scenarios. Currently it is supported inVariant
s and Test Case
s. Whether added to a Feature or a Scenario, it would not generate Test Cases.
Consider global UI Elements
Make the tool processing UI Elements tagged with @global
.
Allow inheritance of UI Elements
Use @extends( <name> )
to extend another UI Element.
Example:
Multiple declared Tables per query: Allow a query to reference more than one table declared in the specification.
Multiple declared Databases per query: Allow a query to reference more than one database declared in the specification.
Test cases that explore SQL Injection: Using declared Databases and Queries to formulate Test Cases that generate strings with SQL Injection commands.
Test cases that use naughty strings as test data: Using a list of naughty strings as test data.
It is already possible to generate HTML or even PDF reports using the available plug-ins. However, these reports indicate the frameworks' results, not necessarily the ones from Concordia.
To provide the CLI parameter --report
for indicating the corresponding plug-in. Example:
which should be equivalent to
Create new projects for auto-completion plug-ins for text editors such as VS Code, Sublime Text, Atom, etc. Example for VS Code: gherkin-autocomplete.
Be able to run test scripts using Concordia from the IDE.
Create integration with Allure. Other reporters (e.g., Macaca Reporter) can be added further.
Keep some hash control or use Git information when available. Hashes can be stored in a .json
or .yml
file. Example:
NodeJS has made considerable progress since version 10.5
adding support to Worker Threads. Stable support for Worker Threads was added in version 12
LTS. Although, it would increase minimum requirements to install Concordia Compiler - currently it requires NodeJS 8.0
.