Test can now attempt a login and the browser is shown rather than headless.

main
Zed A. Shaw 1 week ago
parent e29c36fb5c
commit 831b5ea762
  1. 19
      main.go
  2. 25
      public/base.html
  3. 26
      public/error/index.html
  4. 2
      public/index.html
  5. 44
      public/login/index.html
  6. 25
      tests/chromedp_test.go

@ -14,6 +14,11 @@ import (
"github.com/gofiber/fiber/v2/middleware/session"
)
type Login struct {
Username string `db:"username" validate:"required"`
Password string `db:"password" validate:"required"`
}
type Link struct {
Id int `db:"id" json:"id"`
StreamId int `db:"stream_id" json:"stream_id" form:"stream_id" validate:"required,numeric"`
@ -65,6 +70,20 @@ func main() {
return tools.SelectJson[Link](db, c, err, sql, args...)
})
app.Post("/api/login", func (c *fiber.Ctx) error {
login, err := tools.ReceivePost[Login](c)
if(err != nil) {
log.Println(err)
c.Redirect("/error/")
}
log.Printf("username: %s; password: %s", login.Username, login.Password);
return c.Redirect("/")
})
app.Post("/api/link", func (c *fiber.Ctx) error {
link, err := tools.ReceivePost[Link](c)
if(err != nil) {

@ -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>

@ -9,7 +9,7 @@
</head>
<body>
<body data-testid="home-page">
<header>
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span>
</header>

@ -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>

@ -3,6 +3,7 @@ package tests
import (
"testing"
"context"
"log"
"time"
"github.com/stretchr/testify/assert"
browser "github.com/chromedp/chromedp"
@ -14,11 +15,33 @@ func Run(assert *assert.Assertions, ctx context.Context, actions ...browser.Acti
}
func Setup(timeout time.Duration) (context.Context, context.CancelFunc) {
ctx, _ := browser.NewContext(context.Background())
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)

Loading…
Cancel
Save