mirror of
https://codeberg.org/VnPower/PixivFE
synced 2024-12-06 19:16:23 +01:00
121 lines
2.5 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|