thread-master/apps/backend/internal/module/studio/usecase/profile_scrape_test.go

42 lines
1.2 KiB
Go
Raw Permalink Normal View History

2026-07-20 06:33:14 +00:00
package usecase
import (
"os"
"os/exec"
"path/filepath"
"testing"
)
func TestPlaywrightBrowsersPathExtractsBundledBrowser(t *testing.T) {
tmp := t.TempDir()
scriptDir := filepath.Join(tmp, "scripts")
sourceDir := filepath.Join(tmp, "source")
browser := filepath.Join(sourceDir, "chromium_headless_shell-1193", "chrome-headless-shell")
if err := os.MkdirAll(filepath.Dir(browser), 0o750); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(browser, []byte("browser"), 0o750); err != nil {
t.Fatal(err)
}
if err := os.MkdirAll(scriptDir, 0o750); err != nil {
t.Fatal(err)
}
archive := filepath.Join(scriptDir, "playwright-browsers.tar.gz")
if output, err := exec.Command("tar", "-czf", archive, "-C", sourceDir, ".").CombinedOutput(); err != nil {
t.Fatalf("create browser archive: %v: %s", err, output)
}
t.Setenv("PLAYWRIGHT_RUNTIME_BROWSERS_PATH", filepath.Join(tmp, "runtime"))
got, err := playwrightBrowsersPath(filepath.Join(scriptDir, "scrape.mjs"))
if err != nil {
t.Fatal(err)
}
info, err := os.Stat(filepath.Join(got, "chromium_headless_shell-1193", "chrome-headless-shell"))
if err != nil {
t.Fatal(err)
}
if info.Mode()&0o111 == 0 {
t.Fatalf("browser is not executable: mode %s", info.Mode())
}
}