getgauge / gauge Goto Github PK
View Code? Open in Web Editor NEWLight weight cross-platform test automation
Home Page: https://gauge.org
License: Apache License 2.0
Light weight cross-platform test automation
Home Page: https://gauge.org
License: Apache License 2.0
gauge specs/helloworld.spec:0 specs/helloworld.spec:1
executes only one first scenario.
When a spec file is run, all specs should be run in a particular order. Currently its just random.
Eg:
gauge --daemonize --api-port 7777
This is required for IDE plugins to highlight parse errors in specs.
Even if there is a problem in building the language implementation, Gauge should ideally return steps to autocomplete.
Gauge should attempt a best-effort approach in responding to API messages, rather than breaking all features.
Currently allStepsResponse returns a list of strings with placeholders for parameters eg login as {} . We have to change that to login as if it is defined like that in the language end.
If there are multiple usages in the spec side then take the first one and add parameter info even if it is static.
Support installation via homebrew on mac os x.
The GetAllSteps API call should return only steps since GetAllConcepts API returns all the concepts.
I just noticed that download links are all .zip files. But the website says instructions for tar.gz.
This is required for IDE plugins to navigate to a particular Concept definition
We try to get the project root when we are inside the project by going one level up till we get a manifest.json. But if we are outside the project, the search strategy won't work. So will have to handle execution from outside the project also.
Currently only the language runner can take screenshots on failure. Need to add a hook to allow taking custom screenshots.
gauge "C:/Users/Ken Mugrage/IdeaProjects/untitled2/specs/hello_world.spec"
Failed to start a runner. exec: "C:\Users\Ken": file does not exist
Process finished with exit code 1
Gauge invokes instances of runner whenever it wants to scan and run specs separately. This causes the runner to perform redundant start up actions( i.e. build target projects) twice. These operations can become expensive, thus slowing down total execution.
Possible actions:
Currently ruby runner takes screenshots only on MacOS. Need to add support for linux and windows.
If there is a step in spec file like:
After formatting this becomes,
IntelliJ support to execute single scenario.
Ability to execute specifications filtered by Tag
gauge --tags prod,tag2,tag3 specs
Will execute all specs or scenarios tagged with the tags passed (prod, tag2, tag3).
If a table cell value is '' it is still being treated as a dynamic cell and parser fails.
The dynamic character meaning assigned to "< >" characters should be ignored when they are escaped in table cells.
On execution currently the steps inside the concept are printed on the console without any information of which concept is executing.
When installing a plugin with gauge --install
if the plugin is not supported for the particular platform then an error message should be displayed.
This is particularly important for plugins like gauge-csharp which do not work across platforms.
Currently the file and table special parameters are added into gauge. The ability to write a special parameter plugin needs to be provided.
Something like
gauge --update csharp
should fetch the latest csharp
plugin compatible with the current gauge version.
Add refactoring via command line for all spec files in the project.
Example usage
gauge --refactor "step <a> and <b>" "step with <b>"
use properties file or i18n packages
Concepts parsing should fail if any nested concept references any higher level concept.
Example
# Top level concept
* nested concept
## nested concept
* Top level concept
Currently it compiles all the files under src
. This might be alright for 90% of the projects. But if they are using gauge together with the application code, then there will too many files which needs to be compiled unnecessarily. So have a configuration in .properties file which will say the directory to be compiled. So only tests
directory can be specified.
It was compiling only src/test/java
directory. But it was removed by the commit 9d38589. See the commit message for more information.
In a nested concept, even if some step fails, it marks it failed and continues the execution.
Sometimes the underlying step implementation waits for a third party to respond. Rather than having the tests hang, have a way to introduce timeout on actions.
If a message request takes longer time to respond than a specified property(lets say message.read.timeout). This helps to identify potential infinite loop or unimplemented message type at the runner end.
This is particularly important as every IDE project would invoke gauge --daemonize
to communicate over the Gauge API.
If there are two projects foo
and bar
, the first one to receive a gauge --daemonize
works well and is listening for messages.
The second one throws an error such as:
> gauge --daemonize
fatal error: all goroutines are asleep - deadlock!
goroutine 16 [semacquire]:
sync.runtime_Semacquire(0xc082000b88)
c:/go/src/pkg/runtime/sema.goc:199 +0x37
sync.(*WaitGroup).Wait(0xc082006e20)
c:/go/src/pkg/sync/waitgroup.go:129 +0x152
main.runInBackground()
c:/Users/srikantv/projects/gauge/tmp/src/gauge/gauge.go:113 +0x175
main.main()
c:/Users/srikantv/projects/gauge/tmp/src/gauge/gauge.go:44 +0x3b
goroutine 19 [finalizer wait]:
runtime.park(0x456920, 0xa090f0, 0xa07229)
c:/go/src/pkg/runtime/proc.c:1369 +0xac
runtime.parkunlock(0xa090f0, 0xa07229)
c:/go/src/pkg/runtime/proc.c:1385 +0x42
runfinq()
c:/go/src/pkg/runtime/mgc0.c:2644 +0xdd
runtime.goexit()
c:/go/src/pkg/runtime/proc.c:1445
If the context has some parameters it should be resolved.
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.