github.com/bazelbuild/rules_webtesting@v0.2.0/go/wtl/environment/local/local.go (about) 1 // Package local provides a basic environment for web tests locally. 2 package local 3 4 import ( 5 "context" 6 "fmt" 7 8 "github.com/bazelbuild/rules_webtesting/go/metadata" 9 "github.com/bazelbuild/rules_webtesting/go/wtl/diagnostics" 10 "github.com/bazelbuild/rules_webtesting/go/wtl/environment" 11 "github.com/bazelbuild/rules_webtesting/go/wtl/service" 12 "github.com/bazelbuild/rules_webtesting/go/wtl/service/wsl" 13 ) 14 15 const ( 16 compName = "local environment" 17 ) 18 19 type local struct { 20 *environment.Base 21 wsl *service.Server 22 } 23 24 // NewEnv creates a new environment for launching a local browser using WSL. 25 func NewEnv(m *metadata.Metadata, d diagnostics.Diagnostics) (environment.Env, error) { 26 base, err := environment.NewBase(compName, m, d) 27 if err != nil { 28 return nil, err 29 } 30 wsl, err := wsl.New(d, m) 31 if err != nil { 32 return nil, err 33 } 34 35 return &local{ 36 Base: base, 37 wsl: wsl, 38 }, nil 39 } 40 41 func (l *local) SetUp(ctx context.Context) error { 42 if err := l.Base.SetUp(ctx); err != nil { 43 return err 44 } 45 return l.wsl.Start(ctx) 46 } 47 48 func (l *local) TearDown(ctx context.Context) error { 49 if err := l.Base.TearDown(ctx); err != nil { 50 return err 51 } 52 return l.wsl.Stop(ctx) 53 } 54 55 func (l *local) WDAddress(context.Context) string { 56 return fmt.Sprintf("http://%s/", l.wsl.Address()) 57 } 58 59 func (l *local) Healthy(ctx context.Context) error { 60 if err := l.Base.Healthy(ctx); err != nil { 61 return err 62 } 63 return l.wsl.Healthy(ctx) 64 }