Files
PixivFE/main_test.go
2024-08-24 08:45:37 +07:00

121 lines
2.5 KiB
Go

package main
import (
"log"
"testing"
"github.com/playwright-community/playwright-go"
)
var pw *playwright.Playwright
var browser playwright.Browser
func setup() {
var err error
if err = playwright.Install(); err != nil {
log.Fatalf("could not install playwright dependencies")
}
pw, err = playwright.Run()
if err != nil {
log.Fatalf("could not start playwright")
}
browser, err = pw.Chromium.Launch()
if err != nil {
log.Fatalf("could not launch browser: %v", err)
}
log.Println("Setup is complete")
}
func teardown() {
if err := browser.Close(); err != nil {
log.Fatalf("could not close browser: %v", err)
}
if err := pw.Stop(); err != nil {
log.Fatalf("could not stop Playwright: %v", err)
}
log.Println("Teardown is complete")
}
// TestMain can be used for global setup and teardown
func TestMain(m *testing.M) {
setup()
_ = m.Run()
teardown()
}
func getBaseURL() string {
return "http://0.0.0.0:8282"
// return "https://pixivfe.exozy.me"
}
func checkIfPageHasError(page playwright.Page) bool {
hasErr, _ := page.Locator(".error").IsVisible()
return hasErr
}
func TestBasicGetHomepage(t *testing.T) {
page, err := browser.NewPage()
if err != nil {
t.Errorf("could not create page: %v", err)
}
if _, err = page.Goto(getBaseURL() + "/"); err != nil {
t.Errorf("could not goto: %v", err)
}
artworks, err := page.Locator(".artwork-small").All()
if err != nil {
t.Errorf("could not get entries: %v", err)
}
if len(artworks) != 50 {
t.Errorf("number of daily ranking artworks is %d. expected: 50", len(artworks))
}
}
func TestBasicAllRoutes(t *testing.T) {
page, err := browser.NewPage()
if err != nil {
t.Errorf("could not create page: %v", err)
}
testPositiveURLs := []string{
// Discovery pages
"/discovery",
"/discovery?mode=r18",
"/discovery/novel",
"/discovery/novel?mode=r18",
// Ranking pages
"/ranking",
"/ranking?content=all&date=20230212&page=1&mode=male",
"/ranking?content=mangas&date=20221022&page=3&mode=weekly_r18",
"/ranking?content=ugoira&date=&page=1&mode=daily_r18",
"/rankingCalendar?mode=daily_r18&date=2018-08-01",
// Artwork page
"/artworks/121247335",
"/artworks/120131626", // NSFW
"/artworks-multi/121289276,121247331,121200724",
// Users page
"/users/810305",
"/users/810305/novels",
"/users/810305/bookmarks",
}
for _, url := range testPositiveURLs {
if _, err = page.Goto(getBaseURL() + url); err != nil {
t.Errorf("could not goto: %v", err)
}
if checkIfPageHasError(page) {
log.Fatalf("Path's response NOT OK: %s", url)
}
}
}