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  }