chromedp/chromedp_test.go

70 lines
1.6 KiB
Go
Raw Normal View History

2017-02-09 15:01:40 +00:00
package chromedp
import (
"context"
"fmt"
2017-02-09 15:01:40 +00:00
"os"
2017-12-27 02:30:28 +00:00
"path"
2017-02-09 15:01:40 +00:00
"testing"
)
var (
testdataDir string
browserCtx context.Context
allocOpts = []ExecAllocatorOption{
NoFirstRun,
NoDefaultBrowserCheck,
Headless,
DisableGPU,
}
)
2017-02-09 15:01:40 +00:00
func testAllocate(t *testing.T, path string) (_ context.Context, cancel func()) {
// Same browser, new tab; not needing to start new chrome browsers for
// each test gives a huge speed-up.
ctx, cancel := NewContext(browserCtx)
2017-02-09 15:01:40 +00:00
// Only navigate if we want a path, otherwise leave the blank page.
if path != "" {
if err := Run(ctx, Navigate(testdataDir+"/"+path)); err != nil {
t.Fatal(err)
}
}
return ctx, cancel
2017-02-09 15:01:40 +00:00
}
func TestMain(m *testing.M) {
2017-12-27 02:30:28 +00:00
wd, err := os.Getwd()
if err != nil {
panic(fmt.Sprintf("could not get working directory: %v", err))
2017-12-27 02:30:28 +00:00
}
testdataDir = "file://" + path.Join(wd, "testdata")
// it's worth noting that newer versions of chrome (64+) run much faster
// than older ones -- same for headless_shell ...
if execPath := os.Getenv("CHROMEDP_TEST_RUNNER"); execPath != "" {
allocOpts = append(allocOpts, ExecPath(execPath))
}
// not explicitly needed to be set, as this vastly speeds up unit tests
if noSandbox := os.Getenv("CHROMEDP_NO_SANDBOX"); noSandbox != "false" {
allocOpts = append(allocOpts, NoSandbox)
}
allocCtx, cancel := NewAllocator(context.Background(), WithExecAllocator(allocOpts...))
// start the browser
browserCtx, _ = NewContext(allocCtx)
if err := Run(browserCtx); err != nil {
panic(err)
}
code := m.Run()
cancel()
FromContext(allocCtx).Allocator.Wait()
os.Exit(code)
}