headless

package
v0.27.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNilWriter = errors.New("headless: nil writer")

Functions

func IsUsageError

func IsUsageError(err error) bool

Types

type Compare

type Compare struct {
	Baseline string `json:"baseline,omitempty"`
}

type EnvSet

type EnvSet map[string]map[string]string

type ErrUsage

type ErrUsage struct {
	// contains filtered or unexported fields
}

ErrUsage reports invalid input or options passed to the headless API.

func (ErrUsage) Error

func (e ErrUsage) Error() string

func (ErrUsage) Unwrap

func (e ErrUsage) Unwrap() error

type GRPC

type GRPC struct {
	Code          string `json:"code,omitempty"`
	StatusCode    int    `json:"statusCode,omitempty"`
	StatusMessage string `json:"statusMessage,omitempty"`
}

type GRPCOpt

type GRPCOpt struct {
	Plaintext *bool `json:"plaintext,omitempty"`
}

type HTTP

type HTTP struct {
	Status     string `json:"status,omitempty"`
	StatusCode int    `json:"statusCode,omitempty"`
	Protocol   string `json:"protocol,omitempty"`
}

type HTTPOpt

type HTTPOpt struct {
	Timeout  time.Duration `json:"timeout,omitempty"`
	Follow   *bool         `json:"follow,omitempty"`
	Insecure bool          `json:"insecure,omitempty"`
	Proxy    string        `json:"proxy,omitempty"`
}

type HistBin

type HistBin struct {
	From  time.Duration `json:"from,omitempty"`
	To    time.Duration `json:"to,omitempty"`
	Count int           `json:"count,omitempty"`
}

type Kind

type Kind string
const (
	KindRequest  Kind = "request"
	KindWorkflow Kind = "workflow"
	KindForEach  Kind = "for-each"
	KindCompare  Kind = "compare"
	KindProfile  Kind = "profile"
)

type Latency

type Latency struct {
	Count  int           `json:"count,omitempty"`
	Min    time.Duration `json:"min,omitempty"`
	Max    time.Duration `json:"max,omitempty"`
	Mean   time.Duration `json:"mean,omitempty"`
	Median time.Duration `json:"median,omitempty"`
	StdDev time.Duration `json:"stdDev,omitempty"`
}

type Opt

type Opt struct {
	Version        string   `json:"version,omitempty"`
	FilePath       string   `json:"filePath,omitempty"`
	FileContent    []byte   `json:"-"`
	Workspace      string   `json:"workspace,omitempty"`
	Recursive      bool     `json:"recursive,omitempty"`
	ArtifactDir    string   `json:"artifactDir,omitempty"`
	StateDir       string   `json:"stateDir,omitempty"`
	PersistGlobals bool     `json:"persistGlobals,omitempty"`
	PersistAuth    bool     `json:"persistAuth,omitempty"`
	History        bool     `json:"history,omitempty"`
	Envs           EnvSet   `json:"envs,omitempty"`
	EnvName        string   `json:"envName,omitempty"`
	EnvFile        string   `json:"envFile,omitempty"`
	CompareTargets []string `json:"compareTargets,omitempty"`
	CompareBase    string   `json:"compareBase,omitempty"`
	Profile        bool     `json:"profile,omitempty"`
	HTTP           HTTPOpt  `json:"http,omitempty"`
	GRPC           GRPCOpt  `json:"grpc,omitempty"`
	Select         Select   `json:"select,omitempty"`
}

type Percentile

type Percentile struct {
	Percentile int           `json:"percentile"`
	Value      time.Duration `json:"value,omitempty"`
}

type Profile

type Profile struct {
	Count          int           `json:"count,omitempty"`
	Warmup         int           `json:"warmup,omitempty"`
	Delay          time.Duration `json:"delay,omitempty"`
	TotalRuns      int           `json:"totalRuns,omitempty"`
	WarmupRuns     int           `json:"warmupRuns,omitempty"`
	SuccessfulRuns int           `json:"successfulRuns,omitempty"`
	FailedRuns     int           `json:"failedRuns,omitempty"`
	Latency        *Latency      `json:"latency,omitempty"`
	Percentiles    []Percentile  `json:"percentiles,omitempty"`
	Histogram      []HistBin     `json:"histogram,omitempty"`
	Failures       []ProfileFail `json:"failures,omitempty"`
}

type ProfileFail

type ProfileFail struct {
	Iteration  int           `json:"iteration,omitempty"`
	Warmup     bool          `json:"warmup,omitempty"`
	Reason     string        `json:"reason,omitempty"`
	Status     string        `json:"status,omitempty"`
	StatusCode int           `json:"statusCode,omitempty"`
	Duration   time.Duration `json:"duration,omitempty"`
}

type Report

type Report struct {
	Version   string        `json:"version,omitempty"`
	FilePath  string        `json:"filePath"`
	EnvName   string        `json:"envName,omitempty"`
	StartedAt time.Time     `json:"startedAt"`
	EndedAt   time.Time     `json:"endedAt"`
	Duration  time.Duration `json:"duration,omitempty"`
	Results   []Result      `json:"results,omitempty"`
	Total     int           `json:"total"`
	Passed    int           `json:"passed"`
	Failed    int           `json:"failed"`
	Skipped   int           `json:"skipped"`
}

func Run

func Run(ctx context.Context, opt Opt) (*Report, error)

func (*Report) HasFailures

func (r *Report) HasFailures() bool

HasFailures reports whether the report contains any failed results.

func (*Report) WriteJSON

func (r *Report) WriteJSON(w io.Writer) error

WriteJSON writes r as indented JSON. If r is nil, WriteJSON is a no-op. If w is nil, WriteJSON returns ErrNilWriter.

func (*Report) WriteJUnit

func (r *Report) WriteJUnit(w io.Writer) error

WriteJUnit writes r as JUnit XML. If r is nil, WriteJUnit is a no-op. If w is nil, WriteJUnit returns ErrNilWriter.

func (*Report) WriteText

func (r *Report) WriteText(w io.Writer) error

WriteText writes r as a text report. If r is nil, WriteText is a no-op. If w is nil, WriteText returns ErrNilWriter.

type Result

type Result struct {
	Kind        Kind          `json:"kind,omitempty"`
	Name        string        `json:"name,omitempty"`
	Method      string        `json:"method,omitempty"`
	Target      string        `json:"target,omitempty"`
	Environment string        `json:"environment,omitempty"`
	Status      Status        `json:"status"`
	Summary     string        `json:"summary,omitempty"`
	Duration    time.Duration `json:"duration,omitempty"`
	Canceled    bool          `json:"canceled,omitempty"`
	SkipReason  string        `json:"skipReason,omitempty"`
	Error       string        `json:"error,omitempty"`
	ScriptError string        `json:"scriptError,omitempty"`
	HTTP        *HTTP         `json:"http,omitempty"`
	GRPC        *GRPC         `json:"grpc,omitempty"`
	Stream      *Stream       `json:"stream,omitempty"`
	Trace       *Trace        `json:"trace,omitempty"`
	Tests       []Test        `json:"tests,omitempty"`
	Compare     *Compare      `json:"compare,omitempty"`
	Profile     *Profile      `json:"profile,omitempty"`
	Steps       []Step        `json:"steps,omitempty"`
}

func (Result) Failed

func (r Result) Failed() bool

Failed reports whether the result represents a failure.

type Select

type Select struct {
	Request  string `json:"request,omitempty"`
	Workflow string `json:"workflow,omitempty"`
	Tag      string `json:"tag,omitempty"`
	All      bool   `json:"all,omitempty"`
}

type Status

type Status string
const (
	StatusPass Status = "pass"
	StatusFail Status = "fail"
	StatusSkip Status = "skip"
)

func (Status) Valid

func (s Status) Valid() bool

type Step

type Step struct {
	Name        string        `json:"name,omitempty"`
	Method      string        `json:"method,omitempty"`
	Target      string        `json:"target,omitempty"`
	Environment string        `json:"environment,omitempty"`
	Branch      string        `json:"branch,omitempty"`
	Iteration   int           `json:"iteration,omitempty"`
	Total       int           `json:"total,omitempty"`
	Status      Status        `json:"status"`
	Summary     string        `json:"summary,omitempty"`
	Duration    time.Duration `json:"duration,omitempty"`
	Canceled    bool          `json:"canceled,omitempty"`
	SkipReason  string        `json:"skipReason,omitempty"`
	Error       string        `json:"error,omitempty"`
	ScriptError string        `json:"scriptError,omitempty"`
	HTTP        *HTTP         `json:"http,omitempty"`
	GRPC        *GRPC         `json:"grpc,omitempty"`
	Stream      *Stream       `json:"stream,omitempty"`
	Trace       *Trace        `json:"trace,omitempty"`
	Tests       []Test        `json:"tests,omitempty"`
}

func (Step) Failed

func (s Step) Failed() bool

Failed reports whether the step represents a failure.

type Stream

type Stream struct {
	Kind           string         `json:"kind,omitempty"`
	EventCount     int            `json:"eventCount,omitempty"`
	Summary        map[string]any `json:"summary,omitempty"`
	TranscriptPath string         `json:"transcriptPath,omitempty"`
}

type Test

type Test struct {
	Name    string        `json:"name,omitempty"`
	Message string        `json:"message,omitempty"`
	Passed  bool          `json:"passed"`
	Elapsed time.Duration `json:"elapsed,omitempty"`
}

type Trace

type Trace struct {
	Duration     time.Duration `json:"duration,omitempty"`
	Error        string        `json:"error,omitempty"`
	Budget       *TraceBudget  `json:"budget,omitempty"`
	Breaches     []TraceBreach `json:"breaches,omitempty"`
	ArtifactPath string        `json:"artifactPath,omitempty"`
}

type TraceBreach

type TraceBreach struct {
	Kind   string        `json:"kind,omitempty"`
	Limit  time.Duration `json:"limit,omitempty"`
	Actual time.Duration `json:"actual,omitempty"`
	Over   time.Duration `json:"over,omitempty"`
}

type TraceBudget

type TraceBudget struct {
	Total     time.Duration            `json:"total,omitempty"`
	Tolerance time.Duration            `json:"tolerance,omitempty"`
	Phases    map[string]time.Duration `json:"phases,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL