parent
e29c36fb5c
commit
831b5ea762
@ -0,0 +1,25 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8" /> |
||||||
|
<link rel="stylesheet" href="/global.css"> |
||||||
|
<link rel="stylesheet" href="/color.css"> |
||||||
|
<link rel="stylesheet" href="/blockstart.css"> |
||||||
|
<title>ZedShaw's Game Thing</title> |
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
<body> |
||||||
|
<header> |
||||||
|
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span> |
||||||
|
</header> |
||||||
|
|
||||||
|
<blockstart> |
||||||
|
|
||||||
|
</blockstart> |
||||||
|
|
||||||
|
<footer> |
||||||
|
<h1>Footer</h1> |
||||||
|
</footer> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,26 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8" /> |
||||||
|
<link rel="stylesheet" href="/global.css"> |
||||||
|
<link rel="stylesheet" href="/color.css"> |
||||||
|
<link rel="stylesheet" href="/blockstart.css"> |
||||||
|
<title>ZedShaw's Game Thing</title> |
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
<body> |
||||||
|
<header> |
||||||
|
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span> |
||||||
|
</header> |
||||||
|
|
||||||
|
<blockstart> |
||||||
|
<h1>ERROR</h1> |
||||||
|
<p>You have an error.</p> |
||||||
|
</blockstart> |
||||||
|
|
||||||
|
<footer> |
||||||
|
<h1>Footer</h1> |
||||||
|
</footer> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,44 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8" /> |
||||||
|
<link rel="stylesheet" href="/global.css"> |
||||||
|
<link rel="stylesheet" href="/color.css"> |
||||||
|
<link rel="stylesheet" href="/blockstart.css"> |
||||||
|
<title>ZedShaw's Game Thing</title> |
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
<body data-testid="login-page"> |
||||||
|
<header> |
||||||
|
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span> |
||||||
|
</header> |
||||||
|
|
||||||
|
<blockstart style="min-height: 90vw"> |
||||||
|
<h1>Login</h1> |
||||||
|
<block class="center-self" style="--w: 500px; --h: 500px;"> |
||||||
|
<form action="/api/login" method="POST"> |
||||||
|
<card> |
||||||
|
<top><h2 style="color: white">Login</h2></top> |
||||||
|
<middle> |
||||||
|
<label for="username">Username</label> |
||||||
|
<input id="username" name="username" placeholder="Username" type="text"> |
||||||
|
<label for="password">Password</label> |
||||||
|
<input id="password" name="password" placeholder="Password" type="text"> |
||||||
|
</middle> |
||||||
|
<bottom> |
||||||
|
<button-group> |
||||||
|
<button type="button">Cancel</button> |
||||||
|
<button id="login-submit" type="submit">Login</button> |
||||||
|
</button-group> |
||||||
|
</bottom> |
||||||
|
</card> |
||||||
|
</form> |
||||||
|
</block> |
||||||
|
</blockstart> |
||||||
|
|
||||||
|
<footer> |
||||||
|
<h1>Footer</h1> |
||||||
|
</footer> |
||||||
|
</body> |
||||||
|
</html> |
@ -1,36 +1,59 @@ |
|||||||
package tests |
package tests |
||||||
|
|
||||||
import ( |
import ( |
||||||
"testing" |
"testing" |
||||||
"context" |
"context" |
||||||
"time" |
"log" |
||||||
"github.com/stretchr/testify/assert" |
"time" |
||||||
browser "github.com/chromedp/chromedp" |
"github.com/stretchr/testify/assert" |
||||||
|
browser "github.com/chromedp/chromedp" |
||||||
) |
) |
||||||
|
|
||||||
func Run(assert *assert.Assertions, ctx context.Context, actions ...browser.Action) { |
func Run(assert *assert.Assertions, ctx context.Context, actions ...browser.Action) { |
||||||
err := browser.Run(ctx, actions...) |
err := browser.Run(ctx, actions...) |
||||||
assert.NoError(err) |
assert.NoError(err) |
||||||
} |
} |
||||||
|
|
||||||
func Setup(timeout time.Duration) (context.Context, context.CancelFunc) { |
func Setup(timeout time.Duration) (context.Context, context.CancelFunc) { |
||||||
ctx, _ := browser.NewContext(context.Background()) |
|
||||||
|
|
||||||
return context.WithTimeout(ctx, timeout * time.Second) |
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) { |
func TestStreamPage(t *testing.T) { |
||||||
assert := assert.New(t) |
assert := assert.New(t) |
||||||
|
|
||||||
ctx, cancel := Setup(20); defer cancel() |
ctx, cancel := Setup(20); defer cancel() |
||||||
|
|
||||||
var example string |
var example string |
||||||
|
|
||||||
Run(assert, ctx, |
Run(assert, ctx, |
||||||
browser.Navigate(`http://127.0.0.1:5002`), |
browser.Navigate(`http://127.0.0.1:5002`), |
||||||
browser.WaitVisible(`body > footer`), |
browser.WaitVisible(`body > footer`), |
||||||
browser.Click(`#streams`, browser.NodeVisible), |
browser.Click(`#streams`, browser.NodeVisible), |
||||||
browser.Text(`#streams-title`, &example)) |
browser.Text(`#streams-title`, &example)) |
||||||
|
|
||||||
assert.Equal(example, "Past Streams") |
assert.Equal(example, "Past Streams") |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue