Orbital is a test framework which enables a developer to write end to end tests
just like one would writing unit tests. We do this by effectively copying the
testing.T
API and registering tests to be run periodically on a configured
schedule.
This package is not yet API stable. Use with the understanding that it might change as time goes on.
Writing tests should be easy. This includes oft-neglected end-to-end tests which provide arguably the most value. End to end tests can be used for functional verification before a release, alerts when your site isn't behaving correctly, or simply just providing metrics about your site or service.
The goal is to make writing end-to-end tests simple and to take the effort out of building these systems. To enable that, a number of packages are provided to aid in this effort. The webhook package provides a simple way to receive notifications of received events. With those packages together, we can write elegant tests like the following.
type Harness struct {
RouteLogger *webhook.RouteLogger
}
func (h *Harness) OrbitalSmoke(ctx context.Context, o *orbital.O) {
s := sender{APIKey: "super-private-api-key"}
// Send request to API for handling
id := s.send([]byte(tmpl))
// tell the webhook we're waiting to receive this message
err := h.RouteLogger.Sent(id)
if err != nil {
o.Errorf("%{error}v", err)
return
}
// Cleanup
defer h.RouteLogger.Delete(id)
// wait for this message to be received by the webhook
_, err = h.RouteLogger.Wait(ctx, id)
if err != nil {
o.Errorf("%{error}v", err)
return
}
}