Playwright + residential proxies
Stop wiring proxy config into every browser context
Open a proxied shell. Run your Playwright tests. The proxy is at the shell level — your test code stays clean.
Without shellroute
const browser = await chromium.launch({
proxy: {
server: 'http://proxy:8080',
username: 'user',
password: 'pass'
}
});
// credentials in code
// different config per provider
// every context needs it
// no country selection
// no IP rotation With shellroute
$ shellroute
$ /connect US
✓ Connected — 45.12.67.89
$ npx playwright test
8 passed (12s)
$ /rotate
✓ New IP: 98.34.12.56
$ npx playwright test
8 passed (11s) Your test code doesn't change. Playwright picks up the proxy from the shell automatically.
How it works
Open a proxied shell
Run shellroute and connect to a country. Your test environment, aliases, and PATH all work inside.
shellroute /connect US
Run your tests normally
Playwright reads HTTP_PROXY from the shell. All browser traffic routes through the US residential exit. No proxy config in your test code.
npx playwright test
Switch countries or rotate IPs
Need a different country? /connect DE. New IP? /rotate. Run your tests again. No config changes.
/connect DE npx playwright test /rotate npx playwright test
A real session
Test your app from the US, then from Germany, in the same terminal session.
$ shellroute
● shellroute · not connected
~ ❯ /connect US
✓ Connected to US — New IP: 45.12.67.89
● shellroute us · 45.12.67.89
~ ❯ npx playwright test geo-pricing.spec.ts
✓ US pricing page shows $49.99
✓ US checkout accepts USD
2 passed (4s)
~ ❯ /connect DE
✓ Connected to DE — New IP: 78.46.91.23
● shellroute de · 78.46.91.23
~ ❯ npx playwright test geo-pricing.spec.ts
✓ DE pricing page shows €44.99
✓ DE checkout accepts EUR
2 passed (3s)
~ ❯ /disconnect Why Playwright developers use shellroute
Your Playwright config stays clean. No proxy server, username, or password in your codebase.
Test with real residential connections from 120+ countries. See what actual users see.
/connect DE and run tests again. No reconfiguration.
/rotate gives you a fresh IP from a different provider. One command.
Frequently asked questions
Does Playwright automatically use the proxy?
Yes. When you launch Playwright inside a shellroute session, it reads HTTP_PROXY from the environment. All browser traffic routes through the proxy without any Playwright proxy config.
Can I test from multiple countries in one session?
Yes. Use /connect US, run tests, then /connect DE and run them again. Or open multiple shellroute sessions in different terminals for parallel testing.
What about Playwright's built-in proxy option?
You can still use it. But with shellroute you don't need to — the proxy is set at the shell level, so your test code stays clean and you can switch countries without changing config.
Does it work with Puppeteer too?
Yes. Puppeteer reads proxy settings the same way. Any browser automation tool that runs inside the shellroute session is proxied.
How much does it cost?
Residential from $3/GB, datacenter from $1/GB. Pay per use, no subscriptions. A typical Playwright test suite uses minimal bandwidth.
Open-source CLI · Prepaid usage · Residential + datacenter proxies · macOS + Linux
Start proxying your shell.
Open a session, connect a proxy, and run commands normally
Prepaid usage · Open-source CLI · No contracts