chromedp completely fails to reliably click on links when running in non-headless mode on Windows. About 50% of the time it just hangs thinking it clicked when it didn't. So, on Windows need headless only, and then design tests on Linux where it (maybe) works.
This commit is contained in:
parent
bac4472c3a
commit
fecfc8ee84
3 changed files with 83 additions and 61 deletions
|
@ -1,59 +0,0 @@
|
|||
package tests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"context"
|
||||
"log"
|
||||
"time"
|
||||
"github.com/stretchr/testify/assert"
|
||||
browser "github.com/chromedp/chromedp"
|
||||
)
|
||||
|
||||
func Run(assert *assert.Assertions, ctx context.Context, actions ...browser.Action) {
|
||||
err := browser.Run(ctx, actions...)
|
||||
assert.NoError(err)
|
||||
}
|
||||
|
||||
func Setup(timeout time.Duration) (context.Context, context.CancelFunc) {
|
||||
|
||||
opts := append(browser.DefaultExecAllocatorOptions[:],
|
||||
browser.Flag("headless", false),)
|
||||
|
||||
allocCtx, _ := browser.NewExecAllocator(context.Background(), opts...)
|
||||
|
||||
ctx, _ := browser.NewContext(allocCtx, browser.WithLogf(log.Printf))
|
||||
|
||||
return context.WithTimeout(ctx, timeout * time.Second)
|
||||
}
|
||||
|
||||
func TestLogin(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
ctx, cancel := Setup(5); defer cancel()
|
||||
|
||||
Run(assert, ctx,
|
||||
browser.Navigate(`http://127.0.0.1:5002/login/`),
|
||||
browser.WaitVisible(`body > footer`),
|
||||
browser.WaitVisible(`[data-testid="login-page"]`),
|
||||
browser.SendKeys(`#username`, `zedshaw`),
|
||||
browser.SendKeys(`#password`, `1234`),
|
||||
browser.Click(`#login-submit`, browser.NodeVisible),
|
||||
browser.WaitVisible(`body > footer`),
|
||||
browser.WaitVisible(`[data-testid="home-page"]`))
|
||||
}
|
||||
|
||||
func TestStreamPage(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
ctx, cancel := Setup(20); defer cancel()
|
||||
|
||||
var example string
|
||||
|
||||
Run(assert, ctx,
|
||||
browser.Navigate(`http://127.0.0.1:5002`),
|
||||
browser.WaitVisible(`body > footer`),
|
||||
browser.Click(`#streams`, browser.NodeVisible),
|
||||
browser.Text(`#streams-title`, &example))
|
||||
|
||||
assert.Equal(example, "Past Streams")
|
||||
}
|
74
tests/base_test.go
Normal file
74
tests/base_test.go
Normal file
|
@ -0,0 +1,74 @@
|
|||
package tests
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"context"
|
||||
"log"
|
||||
"time"
|
||||
"github.com/stretchr/testify/assert"
|
||||
browser "github.com/chromedp/chromedp"
|
||||
)
|
||||
|
||||
func Run(assert *assert.Assertions, ctx context.Context, actions ...browser.Action) {
|
||||
err := browser.Run(ctx, actions...)
|
||||
assert.NoError(err)
|
||||
}
|
||||
|
||||
func Setup(timeout time.Duration) (context.Context, context.CancelFunc) {
|
||||
opts := append(browser.DefaultExecAllocatorOptions[:],
|
||||
browser.Flag("headless", true),)
|
||||
|
||||
ctx, cancel := browser.NewExecAllocator(context.Background(), opts...)
|
||||
|
||||
ctx, _ = browser.NewContext(ctx, browser.WithLogf(log.Printf))
|
||||
|
||||
ctx, _ = context.WithTimeout(ctx, timeout * time.Second)
|
||||
|
||||
return ctx, cancel
|
||||
}
|
||||
|
||||
/*
|
||||
func TestLogin(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
ctx, cancel := Setup(5); defer cancel()
|
||||
|
||||
Run(assert, ctx,
|
||||
browser.Navigate(`http://127.0.0.1:5002/login/`),
|
||||
browser.WaitVisible(`body > footer`),
|
||||
browser.WaitVisible(`[data-testid="login-page"]`),
|
||||
browser.SendKeys(`#username`, `zedshaw`),
|
||||
browser.SendKeys(`#password`, `1234`),
|
||||
browser.Click(`#login-submit`, browser.NodeVisible),
|
||||
browser.WaitVisible(`body > footer`),
|
||||
browser.WaitVisible(`[data-testid="home-page"]`))
|
||||
}
|
||||
*/
|
||||
|
||||
func TestStreamPage(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
ctx, cancel := Setup(2);
|
||||
defer cancel();
|
||||
|
||||
var example string
|
||||
|
||||
err := browser.Run(ctx,
|
||||
browser.Navigate(`http://127.0.0.1:5002`),
|
||||
browser.WaitVisible(`body > footer`),
|
||||
browser.WaitVisible(`#streams`),
|
||||
)
|
||||
assert.NoError(err)
|
||||
|
||||
resp, err := browser.RunResponse(ctx, browser.Click(`#streams`, browser.ByID))
|
||||
assert.Equal(resp.Status, int64(200))
|
||||
assert.NoError(err)
|
||||
|
||||
err = browser.Run(ctx, browser.WaitVisible(`#streams-title`))
|
||||
assert.NoError(err)
|
||||
|
||||
err = browser.Run(ctx, browser.Text(`#streams-title`, &example))
|
||||
assert.NoError(err)
|
||||
|
||||
assert.Equal(example, "Past Streams")
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue