Code Monkey home page Code Monkey logo

gauge-tests's Introduction

GAUGE testing GAUGE!

Contributor Covenant

Tests for Gauge Command-Line Utility using Gauge

Steps to get started

  • Install Gauge

  • Install language plugin by running

    gauge install {language}
    
    gauge install java
    gauge install ruby
    gauge install csharp
    gauge install dotnet
    gauge install python
    gauge install js
    
  • Clone this repo.

  • Executing specs

    ./gradlew clean {language}FT # On Linux or Mac
    gradlew.bat clean {language}FT # On Windows
    
    ./gradlew clean javaFT      # For Windows - gradlew.bat clean javaFT
    ./gradlew clean javaFT      # For Windows - gradlew.bat clean javaFT
    ./gradlew clean pythonFT    # For Windows - gradlew.bat clean pythonFT
    ./gradlew clean rubyFT      # For Windows - gradlew.bat clean rubyFT
    ./gradlew clean csharpFT    # For Windows - gradlew.bat clean csharpFT
    ./gradlew clean dotnetFT    # For Windows - gradlew.bat clean dotnetFT
    

This will also compile all the supporting code implementations and run your specs in parallel.

gauge-tests's People

Contributors

sriv avatar kashishm avatar mahendrakariya avatar apoorvam avatar dependabot[bot] avatar prateekbaheti avatar chadlwilson avatar negidharmendra avatar zabil avatar apoorva-ga avatar nehashri avatar shubhamsc avatar nivedhasenthil avatar dependabot-preview[bot] avatar navaneeth avatar haroon-sheikh avatar debashis9012 avatar sharan0077 avatar renovate-bot avatar dtinth avatar

Stargazers

علیرضا عارفی avatar Gen Kudo avatar John Boyes avatar Manassarn "Noom" Manoonchai avatar Chi Voong avatar Muhammet Safa GÜNER avatar Marton Tasnadi avatar hyeebeen avatar  avatar Samir Jalloul avatar IChineseboy avatar Vinay Shukla avatar Jean-Pierre Lambert avatar Augusto Santos avatar Andrew Nixdorf avatar Israel Santiago avatar  avatar

Watchers

 avatar  avatar  avatar Saakallya Biswas avatar James Cloos avatar NaveenBhaskar avatar  avatar  avatar Soumya Swaroop Gupta avatar Uzma Rafique avatar  avatar  avatar Vinay Shukla avatar  avatar  avatar

gauge-tests's Issues

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Rate Limited

These updates are currently rate limited. Click on a checkbox below to force their creation now.

  • Update dependency gradle to v7
  • Update dependency org.json:json to v20210307
  • Update openjdk Docker tag to v18

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.


  • Check this box to trigger a request for Renovate to run again on this repository

Improve failure messages

Currently we get AssertionFailure message if a test fails. The message doesn't give details about the expected and actual values. This is particularly the case if the values being compared are collections.

[Dev note]:
We can look at fest-assert for doing assertions. It gives far better error messages. Even the assertion code is more readable.

Add functional tests for non-default specs dir

Users can have their specs in a directory of any name. Although the recommended name is specs, this is not mandatory. We should have functional tests for this.

Specs directory name is needed for the following.

  • Execution (Read gauge specs)
  • Refactoring
  • Running Gauge in daemonize mode

Add functional tests for Spectacle plugin

It would be valuable to add some basic functional tests for the Spectacle plugin. It would then be straightforward (in a subsequent pull request on the Spectacle repo) to trigger these tests via a GitHub Action on every push and pull request in the Spectacle repo, giving valuable regression coverage.

The gauge-tests repo provides a powerful launchpad for adding functional tests for plugins, so having some basic Spectacle functional tests would also serve as a useful example for anyone writing a new plugin. To that end, it would
also be useful to make this gauge-tests repo a template repository, so that anyone writing a new Gauge plugin can easily use it as a starting template for adding their own functional tests.

Improve installation on linux

Having installed 64bit gauge on linux I had to modify a few of the permissions to make this work.

./install.sh was run as root as it required access to /usr/local

This caused a number of files to be setup as owned by root and not writable by my local user, including the .gauge directory in my home folder. This meant that the install of the java plugin, init and running of the sample tests failed unless run as root.

To improve this the installer should ensure that the .gauge folder is owned by the non root user.

Remove deprecated code

Deprecated method Table.getRows() is in use in some of the implementation classes. We need to remove it.

Exception in Gauge when creating new Projects in IntelliJ using Gauge Plugin

IntelliJ Community Edition
IntelliJ IDEA 2017.2
Build #IC-172.3317.76, built on July 15, 2017
JRE: 1.8.0_152-release-915-b5 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 4.8.0-56-generic

image

@NotNull method com/intellij/openapi/module/impl/ModuleImpl.getOptionManager must not return null
java.lang.IllegalStateException: @NotNull method com/intellij/openapi/module/impl/ModuleImpl.getOptionManager must not return null
at com.intellij.openapi.module.impl.ModuleImpl.getOptionManager(ModuleImpl.java:235)
at com.intellij.openapi.module.impl.ModuleImpl.getOptionValue(ModuleImpl.java:240)
at com.thoughtworks.gauge.core.Gauge.getProjectGroupValue(Gauge.java:90)
at com.thoughtworks.gauge.core.Gauge.disposeComponent(Gauge.java:101)
at com.thoughtworks.gauge.GaugeModuleComponent.disposeComponent(GaugeModuleComponent.java:64)
at com.intellij.openapi.components.impl.ComponentManagerImpl.disposeComponents(ComponentManagerImpl.java:149)
at com.intellij.openapi.module.impl.ModuleImpl.dispose(ModuleImpl.java:156)
at com.intellij.openapi.util.Disposer$1.execute(Disposer.java:48)
at com.intellij.openapi.util.Disposer$1.execute(Disposer.java:44)
at com.intellij.openapi.util.objectTree.ObjectNode$1.execute(ObjectNode.java:138)
at com.intellij.openapi.util.objectTree.ObjectNode$1.execute(ObjectNode.java:107)
at com.intellij.openapi.util.objectTree.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:151)
at com.intellij.openapi.util.objectTree.ObjectNode.execute(ObjectNode.java:107)
at com.intellij.openapi.util.objectTree.ObjectTree.executeAll(ObjectTree.java:137)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:125)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:121)
at com.intellij.openapi.module.impl.ModuleManagerImpl$ModuleModelImpl.disposeModel(ModuleManagerImpl.java:857)
at com.intellij.openapi.module.impl.ModuleManagerImpl$ModuleModelImpl.access$100(ModuleManagerImpl.java:598)
at com.intellij.openapi.module.impl.ModuleManagerImpl.dispose(ModuleManagerImpl.java:126)
at com.intellij.openapi.util.Disposer$1.execute(Disposer.java:48)
at com.intellij.openapi.util.Disposer$1.execute(Disposer.java:44)
at com.intellij.openapi.util.objectTree.ObjectNode$1.execute(ObjectNode.java:138)
at com.intellij.openapi.util.objectTree.ObjectNode$1.execute(ObjectNode.java:107)
at com.intellij.openapi.util.objectTree.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:151)
at com.intellij.openapi.util.objectTree.ObjectNode.execute(ObjectNode.java:107)
at com.intellij.openapi.util.objectTree.ObjectNode$1.execute(ObjectNode.java:126)
at com.intellij.openapi.util.objectTree.ObjectNode$1.execute(ObjectNode.java:107)
at com.intellij.openapi.util.objectTree.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:151)
at com.intellij.openapi.util.objectTree.ObjectNode.execute(ObjectNode.java:107)
at com.intellij.openapi.util.objectTree.ObjectTree.executeAll(ObjectTree.java:137)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:125)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:121)
at com.intellij.openapi.project.impl.ProjectManagerImpl.lambda$closeProject$12(ProjectManagerImpl.java:679)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1031)
at com.intellij.openapi.project.impl.ProjectManagerImpl.closeProject(ProjectManagerImpl.java:673)
at com.intellij.openapi.project.impl.ProjectManagerImpl.closeAndDispose(ProjectManagerImpl.java:697)
at com.intellij.ide.impl.ProjectUtil.closeAndDispose(ProjectUtil.java:91)
at com.intellij.ide.impl.NewProjectUtil.closePreviousProject(NewProjectUtil.java:218)
at com.intellij.ide.impl.NewProjectUtil.doCreate(NewProjectUtil.java:145)
at com.intellij.ide.impl.NewProjectUtil.createFromWizard(NewProjectUtil.java:76)
at com.intellij.ide.impl.NewProjectUtil.createNewProject(NewProjectUtil.java:71)
at com.intellij.ide.actions.NewProjectAction.actionPerformed(NewProjectAction.java:36)
at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:216)
at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:86)
at com.intellij.openapi.application.TransactionGuardImpl.submitTransactionAndWait(TransactionGuardImpl.java:151)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:231)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:310)
at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:911)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:136)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:300)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:117)
at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:86)
at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:109)
at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:118)
at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:122)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:117)
at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:513)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:533)
at java.awt.Component.processMouseEvent(Component.java:6541)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6306)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4897)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4719)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:737)
at java.awt.EventQueue$4.run(EventQueue.java:735)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:821)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:645)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Add tests for parallel execution

We can check for the following points in this test.

  • Is execution passing?
  • Are the reports getting aggregated?

For asserting that the reports are getting aggregated, a very simple check could be to parse result array in reports (xml or json) and see if the length of that array is equal to total specs in the project.

Remove print statements from scenarios

Currently any of the print messages is shown in console, which should be removed.
Example:

# Datatable Execution
  ## Simple Datatable Execution 
Downloading java.zip
....
Copying Gauge template java to current directory ...

Successfully initialized the project. Run specifications with "gauge specs/"

 ✔ ✔ ✔ ✔ ✔

Unable to install csharp plugin

In the latest version 0.6.0. Unable to install csharp language plugin. It shows error that there is no compatible csharp plugin.

Add tests for XML report

There are currently no tests to validate the report generated by XML report. Add tests and create a pipeline for xml-report functional tests.

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.