42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
|
|
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())
|
||
|
|
}
|
||
|
|
}
|