Use when testing a local or public URL on a real device via BrowserStack, opening a live browser session on Android, iOS, or desktop browsers, or when the user mentions BrowserStack, real device testing, mobile testing, cross-browser testing, touch testing, or wants to verify behavior on a specific phone, tablet, or browser version. Also trigger when the user says "test this on Android/iPhone/Safari/Chrome mobile", asks to open a live session, or mentions demo-mobile.html, even if they don't mention BrowserStack by name.
Open a live browser session on a real device (phone, tablet, or desktop) using BrowserStack. Because BrowserStack devices cannot reach localhost, this skill tunnels the local dev server through Cloudflare to produce a temporary public URL.
Local server --> Cloudflare tunnel --> BrowserStack Live
(any port) (public trycloudflare.com URL) (real device)
If the user wants to test Handsontable behavior (bug fix, feature, plugin, editor, etc.), use the demo-page skill to generate handsontable/dev-generated.html. That skill builds a two-tab HTML page (Released vs PR Build) with test-specific config and reproduction steps.
After the demo page is generated, serve it:
python3 -m http.server 8767 --directory handsontable &
Verify it works:
curl -s -o /dev/null -w "%{http_code}" http://localhost:8767/dev-generated.html
The tunnel URL path will be /dev-generated.html.
If the user wants to test the docs site, a recipe page, or any other already-running server, just confirm reachability:
curl -s -o /dev/null -w "%{http_code}" <URL>
Common servers in this repo:
| Server | Start command | Default port |
|---|---|---|
| Docs (Astro) | npm run dev --prefix docs | 4321 |
| Handsontable static files | python3 -m http.server 8767 --directory handsontable | 8767 |
For Vite-based dev servers (like Astro docs), tunnel hostnames get blocked by default. If the tunnel URL returns a "Blocked request" error, add this to the Vite config (inside astro.config.mjs):