A next-generation testing tool. Orion provides a powerful DSL to write and automate your acceptance tests

Overview

Build Status Go Report Card GoDoc

Orion

Orion is born to change the way we implement our acceptance tests. It takes advantage of HCL from Hashicorp t o provide a simple DSL to write the acceptance tests. The syntax is inspired in Gherkin.

Please visit full documentation http://www.wesovilabs.com/orion/

Tutorials & Guides

Additionally, a repository with a list of examples can be found here

Contact

Don't hesitate to reach me by email at [email protected] or send me a message through of Linkedin or Twitter

Issues
  • feat: action `sleep`

    feat: action `sleep`

    Added action sleep as per https://github.com/wesovilabs/orion/issues/9

    The timeout example scenario utilizes string for example "10s", however the documentation mentiones timeout = 10s

    Screenshot from 2021-03-04 00-00-25

    Screenshot from 2021-03-04 00-01-13

    Given code is likely to be correct than doc, I went with that. Even the hcl plugin in my IDE was giving me error with duration = 1s

    I can fix the documentation next if this is fine.

    opened by cdmatta 2
  • feat: Flag tags to allow selection of scenarios

    feat: Flag tags to allow selection of scenarios

    This PR addresses https://github.com/wesovilabs/orion/issues/5

    Added --tags flag. This will allow a user to supply a csv string of possible tags. Scenario which contain any of the listed tags will be executed.

    Possibly, the tags could be saved in the OrionContext/EvalContext and simplify life with the IsSkipped.

    opened by cdmatta 2
  • What is the difference between

    What is the difference between "when block" and "when argument"?

    I'm trying to wrap my head around the syntax It's a bit confusing to have both a block and a argument with the name "when". Is it used for a similar action? Because it seems that the "when" block is not used as a condition for a scenario.

    opened by ynigun 1
  • new action sleep

    new action sleep

    Implement support for a new action sleep would be great.

    Follow steps in Add a new action

    This action could look like

    sleep {
      duration = 10s # Same format that we're already using for timeouts
     # .. common properties
    

    the duration values should be supported as http/connection/timeout already does https://github.com/wesovilabs/orion/blob/master/actions/http/internal/decoder/connection.go#L16

    enhancement good first issue 
    opened by ivancorrales 1
  • run scenarios with a tag

    run scenarios with a tag

    Add a new flag named tags to the command run. This flag will be used to determine which scenarios must be executed.

    For example, given the below input file

    scenario "basic usage" {
      tags= ["sum","maths"]
      given "a couple of numbers" {
        set a {
          value = 1
        }
        set b {
          value = 2
        }
      }
      when "input values are sum" {
        set c {
          value = a + b
        }
      }
      then "the result of variable c is correct" {
        assert {
          assertion = c == 3
        }
      }
    }
    
    scenario "basic usage" {
      tags= ["sub", "maths"]
      given "a couple of numbers" {
        set a {
          value = 1
        }
        set b {
          value = 2
        }
      }
      when "do subtraction with the numbers" {
        set c {
          value = a - b
        }
      }
      then "the result of variable c is correct" {
        assert {
          assertion = c == -1
        }
      }
    }
    

    the below command should work, and only scenarios with provided tags should be executed.

    orion  run --input feature.hcl --tags sum 
    orion  run --input feature.hcl --tags sub
    orion  run --input feature.hcl --tags maths 
    orion  run --input feature.hcl --tags sum,sub
    
    enhancement good first issue 
    opened by ivancorrales 1
  • Support for GraphQL

    Support for GraphQL

    Do you plan to support GraphQL queries in HTTP action ? This would be nice to support that type of APIs.

    I could send GraphQL queries in raw string format but it would need to escape every '"' symbol in the query (impractical).

    help wanted 
    opened by lauevrar77 3
  • Upgrade

    Upgrade

    Orion should be easily upgradeable. Currently, we need to fetch the binary and replace de existing one;

    I bet for a couple of command in the CLI.

    orion releases  # this will show the available releases
    orion upgrade <release> # update the orion installation
    
    enhancement 
    opened by ivancorrales 0
  • Enrich action HTTP

    Enrich action HTTP

    Action HTTP is not completed at all, see docmentation action HTTPP

    I miss some details such as timeouts, TLS. (maybe more)

    http  post {
       request {
           tls { 
             .....
           }
       }
    
    }
    

    New struct should be added in directory decoder and add an entry for lock tls in the definition of schema request https://github.com/wesovilabs/orion/blob/master/actions/http/internal/decoder/decoder.go#L34

    Additionally, this function must consider if TLS is configured

    enhancement good first issue help wanted 
    opened by ivancorrales 0
  • Fix linter issues

    Fix linter issues

    After running analysis for our code on goreportcard.com/ all the results should be 100%

    Additionally, defined checks in. .golangci.yml should be more strict:

    • As longs as possible, all the linters should be enabled.
    • golint and gocyclo should make the build faild in case of not being successful
    make lint
    
    good first issue 
    opened by ivancorrales 0
Releases(beta-v2)
Owner
Wesovi Labs
Love what you do, enjoy doing it!
Wesovi Labs
Go testing in the browser. Integrates with `go test`. Write behavioral tests in Go.

GoConvey is awesome Go testing Welcome to GoConvey, a yummy Go testing tool for gophers. Works with go test. Use it in the terminal or browser accordi

SmartyStreets 7.3k Aug 1, 2022
Go testing in the browser. Integrates with `go test`. Write behavioral tests in Go.

GoConvey is awesome Go testing Welcome to GoConvey, a yummy Go testing tool for gophers. Works with go test. Use it in the terminal or browser accordi

SmartyStreets 7.4k Aug 7, 2022
Terratest is a Go library that makes it easier to write automated tests for your infrastructure code.

Terratest is a Go library that makes it easier to write automated tests for your infrastructure code. It provides a variety of helper functions and patterns for common infrastructure testing tasks,

Gruntwork 6.2k Aug 4, 2022
Rr-e2e-tests - Roadrunner end-to-end tests repository

RoadRunner end-to-end plugins tests License: The MIT License (MIT). Please see L

RoadRunner 1 Jan 21, 2022
Powerful mock generation tool for Go programming language

Summary Minimock generates mocks out of Go interface declarations. The main features of minimock are: It generates statically typed mocks and helpers.

Juno Inc. 458 Jul 28, 2022
Ruby on Rails like test fixtures for Go. Write tests against a real database

testfixtures Warning: this package will wipe the database data before loading the fixtures! It is supposed to be used on a test database. Please, doub

null 826 Aug 1, 2022
Testing framework for Go. Allows writing self-documenting tests/specifications, and executes them concurrently and safely isolated. [UNMAINTAINED]

GoSpec GoSpec is a BDD-style testing framework for the Go programming language. It allows writing self-documenting tests/specs, and executes them in p

Esko Luontola 112 Apr 5, 2022
Extremely flexible golang deep comparison, extends the go testing package and tests HTTP APIs

go-testdeep Extremely flexible golang deep comparison, extends the go testing package. Latest news Synopsis Description Installation Functions Availab

Maxime Soulé 312 Aug 4, 2022
Snapshot - snapshot provides a set of utility functions for creating and loading snapshot files for using snapshot tests.

Snapshot - snapshot provides a set of utility functions for creating and loading snapshot files for using snapshot tests.

Daniel J. Rollins 2 Jan 27, 2022
Record and replay your HTTP interactions for fast, deterministic and accurate tests

go-vcr go-vcr simplifies testing by recording your HTTP interactions and replaying them in future runs in order to provide fast, deterministic and acc

Marin Atanasov Nikolov 893 Jul 27, 2022
Automatically update your Go tests

autogold - automatically update your Go tests autogold makes go test -update automatically update your Go tests (golden files and Go values in e.g. fo

Hexops 123 Jun 30, 2022
siusiu (suite-suite harmonics) a suite used to manage the suite, designed to free penetration testing engineers from learning and using various security tools, reducing the time and effort spent by penetration testing engineers on installing tools, remembering how to use tools.

siusiu (suite-suite harmonics) a suite used to manage the suite, designed to free penetration testing engineers from learning and using various security tools, reducing the time and effort spent by penetration testing engineers on installing tools, remembering how to use tools.

Re 261 Jul 24, 2022
Package has tool to generate workload for vegeta based kube-api stress tests.

Package has tool to generate workload for vegeta based kube-api stress tests.

Mikhail Sakhnov 0 Nov 22, 2021
A yaml data-driven testing format together with golang testing library

Specimen Yaml-based data-driven testing Specimen is a yaml data format for data-driven testing. This enforces separation between feature being tested

Design it, Run it 0 Jan 31, 2022
testtime provides time.Now for testing.

testtime provides time.Now for testing.

Takuya Ueda 89 Aug 2, 2022
Robust framework for running complex workload scenarios in isolation, using Go; for integration, e2e tests, benchmarks and more! 💪

e2e Go Module providing robust framework for running complex workload scenarios in isolation, using Go and Docker. For integration, e2e tests, benchma

null 105 Jul 20, 2022
A simple and expressive HTTP server mocking library for end-to-end tests in Go.

mockhttp A simple and expressive HTTP server mocking library for end-to-end tests in Go. Installation go get -d github.com/americanas-go/mockhttp Exa

Americanas Go 6 Dec 19, 2021
How we can run unit tests in parallel mode with failpoint injection taking effect and without injection race

This is a simple demo to show how we can run unit tests in parallel mode with failpoint injection taking effect and without injection race. The basic

amyangfei 1 Oct 31, 2021
Package for comparing Go values in tests

Package for equality of Go values This package is intended to be a more powerful and safer alternative to reflect.DeepEqual for comparing whether two

Google 3k Jul 28, 2022