Skip to content

Getting Started

Install sinq, write one scenario, run it.

Installation

Pre-compiled binaries for each platform are on the Releases page (Windows .zip, Debian .deb, Fedora .rpm), along with Docker images and Nix flakes.

Or via a package manager:

# Build natively
brew install Veitangie/tap/sinq
scoop bucket add veitangie https://github.com/Veitangie/scoop-bucket
scoop install sinq
nix run github:Veitangie/sinq-nix
yay -S sinq-bin
curl -sL https://raw.githubusercontent.com/Veitangie/sinq/refs/heads/main/install.sh | bash
go install veitangie.dev/sinq/cmd/sinq@latest
Setting up shell auto-completion

(Note: If you installed sinq via native Linux packages (.deb, .rpm, .apk), the AUR, or the Homebrew Formula (brew install Veitangie/tap/sinq), completions are installed automatically and you can skip this step. For all other methods like the Homebrew Cask (sinq-bin), scoop, the install script, or go install, you'll need to set them up manually).

sinq supports auto-completion for Bash, Zsh, Fish, and PowerShell.

To load completions dynamically in your current session:

  • Bash/Zsh: source <(sinq --completion)
  • Fish: sinq --completion | source
  • PowerShell: sinq --completion | Invoke-Expression

To install completions permanently, save the output to your shell's completions directory:

  • Bash: sinq --completion > ~/.local/share/bash-completion/completions/sinq
  • Zsh: sinq --completion > ~/.zfunc/_sinq (and add fpath+=~/.zfunc before compinit in .zshrc)
  • Fish: sinq --completion > ~/.config/fish/completions/sinq.fish
  • PowerShell: Add sinq --completion | Invoke-Expression to your PowerShell profile.

IDE Integration

To get syntax highlighting and better editor support, check out the community extensions:

Your First Test

sinq builds scenarios from your directory layout. Here is a one-request health check.

  1. Make a directory for it:

    mkdir -p my-tests/health
    cd my-tests/health
    

  2. Create 01_healthcheck.sinq:

    ### Check API Health
    GET https://httpbin.org/get
    
    $ASSERT{
        sinq.assert.code(200, "Healthcheck failed")
    }
    

Running sinq

Point sinq at the directory:

sinq ./my-tests

sinq finds one scenario (health), sends its single request, and prints a pass line for it. The process exits 0. If the assertion fails, the line is red and the exit code is 1.

Next

  • CLI Reference: flags, scenario filters, environment variables.
  • Scenarios & Config: chaining requests, passing values between them, .scenario files.
  • Lua API: assertions, JSON, request lifecycle control.