You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
setup: add GSTACK_SKIP_PLAYWRIGHT to skip Chromium install #913
On NixOS (and other non-FHS distros), ./setup fails at the Playwright Chromium check because the downloaded binary can't find system libraries like libglib-2.0.so.0:
error while loading shared libraries: libglib-2.0.so.0: cannot open shared object file
gstack setup failed: Playwright Chromium could not be launched
Users on these systems typically have a system-installed Chrome/Chromium that works fine.
Proposed fix
Add a GSTACK_SKIP_PLAYWRIGHT=1 env var check that skips the Playwright browser install/verification. The browse tool already supports GSTACK_CHROMIUM_PATH to point at a system browser, so setup just needs to get out of the way.
# 2. Ensure Playwright's Chromium is available
-if ! ensure_playwright_browser; then+# Skip with GSTACK_SKIP_PLAYWRIGHT=1 if using a system-installed Chrome/Chromium+# (set GSTACK_CHROMIUM_PATH to point the browse tool at your system browser)+if [ "${GSTACK_SKIP_PLAYWRIGHT:-0}" = "1" ]; then+ log "Skipping Playwright browser check (GSTACK_SKIP_PLAYWRIGHT=1)"+elif ! ensure_playwright_browser; then
Usage: GSTACK_SKIP_PLAYWRIGHT=1 ./setup
Workaround
Until this is merged, users can patch setup locally or auto-detect a system Chrome before the Playwright check.
🚀 Complete Working Solution for Arch Linux & Bun (Fixing both the script flow and the Smoke Test)
Building upon the proposed fix, just adding a flag to skip the download isn't enough. The ./setup script performs a mandatory execution test immediately after (ensure_playwright_browser), which crashes on Arch with a Cannot find package 'playwright' error because Bun evaluates the test code in an isolated manner where nested workspace modules aren't resolved.
To fix this completely, we need to modify two parts of the ./setup script to fully support a system-installed Chromium (via Pacman), and then export the correct environment variables.
1. Update the install flow in ./setup
Find where ensure_playwright_browser is called in the main execution block of the script, and wrap it around the new environment variable check:
if [ "\${GSTACK_SKIP_PLAYWRIGHT:-0}"="1" ];thenecho"Skipping Playwright browser check (GSTACK_SKIP_PLAYWRIGHT=1)"elif! ensure_playwright_browser;then
log_error "Playwright browser installation failed"exit 1
fi
2. Rewrite the ensure_playwright_browser() function
Replace your current function with this updated version. It forces Bun to inject the playwright package dependency locally into the workspace root right before building the temporary test script, allowing it to accurately test your system's native Chromium path:
ensure_playwright_browser() {
if [ "\${GSTACK_SKIP_PLAYWRIGHT:-0}"="1" ];then
log "Skipping download step. Testing system Chromium instead..."
(
cd"\$SOURCE_GSTACK_DIR"# Force local playwright dependency package without downloading Ubuntu binaries
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 bun add playwright --dev
echo" const { chromium } = require('playwright'); (async () => { try { const browser = await chromium.launch({ executablePath: '\${GSTACK_CHROMIUM_PATH:-/usr/bin/chromium}', args: ['--no-sandbox', '--disable-setuid-sandbox', '--headless'] }); await browser.close(); console.log('¡Smoke test completado con éxito!'); process.exit(0); } catch (e) { console.error('Fallo al lanzar Chromium del sistema:', e); process.exit(1); } })();"> test-chromium.js
bun test-chromium.js
local_exit_code=\$?
rm -f test-chromium.js
return\$local_exit_code
)
elif [ "\$IS_WINDOWS"-eq 1 ];then
(
cd"\$SOURCE_GSTACK_DIR"
node -e "const { chromium } = require('playwright'); (async () => { const b = await chromium.launch(); await b.close(); })()"
)
else
(
cd"\$SOURCE_GSTACK_DIR"
bun --eval 'import { chromium } from "playwright"; const browser = await chromium.launch(); await browser.close();'
) >/dev/null 2>&1fi
}
3. Setup your Environment Path Variables
For this to work during installation and later when using GStack commands inside Claude Code, you must persist the path of your native browser in your system shell.
First install Chromium via pacman:
sudo pacman -S chromium
Then append these to your ~/.bashrc or ~/.zshrc configuration files:
Hey everyone! I just opened a Pull Request that completely fixes this issue for Arch Linux, NixOS, and other non-Ubuntu distributions.
It implements the GSTACK_SKIP_PLAYWRIGHT=1 conditional bypass, fixes the isolated module resolution crash during the mandatory smoke test, and patches the test suite to properly inherit GSTACK_CHROMIUM_PATH in headless mode.
You can check out the implementation and review the code in the linked PR above! 🚀
setup now honors GSTACK_SKIP_PLAYWRIGHT=1: it skips the Chromium install and smoke test and reports the skip as a request rather than a failure (setup:1714 on main). Fixed in v1.80.0.0 (#2802).
If you still see this on the latest gstack, please reopen with details.
Activity
joseironchip commentedon May 12, 2026
🚀 Complete Working Solution for Arch Linux & Bun (Fixing both the script flow and the Smoke Test)
Building upon the proposed fix, just adding a flag to skip the download isn't enough. The
./setupscript performs a mandatory execution test immediately after (ensure_playwright_browser), which crashes on Arch with aCannot find package 'playwright'error because Bun evaluates the test code in an isolated manner where nested workspace modules aren't resolved.To fix this completely, we need to modify two parts of the
./setupscript to fully support a system-installed Chromium (via Pacman), and then export the correct environment variables.1. Update the install flow in
./setupFind where
ensure_playwright_browseris called in the main execution block of the script, and wrap it around the new environment variable check:2. Rewrite the
ensure_playwright_browser()functionReplace your current function with this updated version. It forces Bun to inject the
playwrightpackage dependency locally into the workspace root right before building the temporary test script, allowing it to accurately test your system's native Chromium path:3. Setup your Environment Path Variables
For this to work during installation and later when using GStack commands inside Claude Code, you must persist the path of your native browser in your system shell.
First install Chromium via pacman:
Then append these to your
~/.bashrcor~/.zshrcconfiguration files:Don't forget to reload your shell using
source ~/.zshrc(or.bashrc).4. Run the installer
Now, executing the script with the inline variables will pass smoothly and link all 47 skills perfectly:
GSTACK_SKIP_PLAYWRIGHT=1 GSTACK_CHROMIUM_PATH="/usr/bin/chromium" ./setupjoseironchip commentedon May 12, 2026
Hey everyone! I just opened a Pull Request that completely fixes this issue for Arch Linux, NixOS, and other non-Ubuntu distributions.
It implements the
GSTACK_SKIP_PLAYWRIGHT=1conditional bypass, fixes the isolated module resolution crash during the mandatory smoke test, and patches the test suite to properly inheritGSTACK_CHROMIUM_PATHin headless mode.You can check out the implementation and review the code in the linked PR above! 🚀
#1455
https://github.com/joseironchip/gstack-arch/
feat(pr-prep): pre-PR upstream duplicate audit skill
feat(pr-prep): pre-PR upstream duplicate audit skill
time-attack commentedon Jul 15, 2026
@sun617 Playwright still installs Chromium unconditionally. Skip behavior and complete custom Chromium path support remain unresolved.
v1.80.0.0 fix: setup survives a failed Chromium install, hooks share …
capy-ai commentedon Oct 3, 2026
setup now honors
GSTACK_SKIP_PLAYWRIGHT=1: it skips the Chromium install and smoke test and reports the skip as a request rather than a failure (setup:1714 on main). Fixed in v1.80.0.0 (#2802).If you still see this on the latest gstack, please reopen with details.