Playwright mcp - navigate fails on localhost
- Dominant language
- Shell
- Stars
- 11.2k
- Forks
- 1.9k
- Avg merge
- 14h 16m
- Merged PRs (30d)
- 6
Description
### Describe the bug
In the agents tab, Playwright MCP browser_navigate never reaches a web server running on localhost. This might be a regression as I have seen this work.
Apologies if this is the wrong place to report this!
### Affected version
cloud
### Steps to reproduce the behavior
1. Create a new repo
2. Include test-ui.js
3. Start new agents tab. Ask co-pilot to start the app and take a screenshot
### Expected behavior
Co-pilot uses browser_navigate tool to access UI on localhost
### Additional context
test-ui.js:
```
#!/usr/bin/env node
/*
* test-ui.js — a minimal, zero-dependency, NO-AUTH frontend.
*
* Purpose: isolate whether the Copilot screenshot problem is Backstage-specific
* or lives in the MCP/screenshot pipeline. This serves a single static page with
* no sign-in, no catalog, no build step, no framework — just Node's built-in http.
*
* Run from the repo root: node test-ui.js
* Then open: http://127.0.0.1:8080 (also http://localhost:8080)
* Override the port with: PORT=1234 node test-ui.js
*/
const http = require('http');
const PORT = Number(process.env.PORT) || 8080;
// Loopback by default: a "normal" app that does NOT do the all-interfaces workaround.
// Flip to all-interfaces for comparison with: HOST=0.0.0.0 node test-ui.js
const HOST = process.env.HOST || '127.0.0.1';
const html = `
Test UI
TEST UI OK
No auth. Static page served by test-ui.js on port ${PORT}.
Screenshot me
`;
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(html);
});
server.listen(PORT, HOST, () => {
console.log(`test-ui listening on http://${HOST}:${PORT}`);
console.log(`open http://127.0.0.1:${PORT} or http://localhost:${PORT}`);
});
```
Contributor guide
Research direction
Start from the browser_navigate entry point and run node test-ui.js from the repository root. Compare access to localhost and 127.0.0.1, then repeat with HOST=0.0.0.0 node test-ui.js in a new agents tab. Done means Playwright MCP reaches the local page and Copilot can take its screenshot.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js, playwright
- Domain
- devtools, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100