init
This commit is contained in:
107
.opencode/skills/chrome-devtools/scripts/ws-full-debug.js
Normal file
107
.opencode/skills/chrome-devtools/scripts/ws-full-debug.js
Normal file
@@ -0,0 +1,107 @@
|
||||
import { getBrowser, getPage, disconnectBrowser, outputJSON } from './lib/browser.js';
|
||||
|
||||
async function debugWsFull() {
|
||||
const browser = await getBrowser({ headless: false });
|
||||
const page = await getPage(browser);
|
||||
|
||||
const logs = [];
|
||||
const wsEvents = [];
|
||||
const networkErrors = [];
|
||||
|
||||
// Capture ALL console messages
|
||||
page.on('console', msg => {
|
||||
logs.push({
|
||||
type: msg.type(),
|
||||
text: msg.text(),
|
||||
location: msg.location()
|
||||
});
|
||||
});
|
||||
|
||||
// Capture page errors
|
||||
page.on('pageerror', err => {
|
||||
logs.push({ type: 'pageerror', text: err.message });
|
||||
});
|
||||
|
||||
// Monitor WebSocket via CDP
|
||||
const client = await page.createCDPSession();
|
||||
await client.send('Network.enable');
|
||||
|
||||
client.on('Network.webSocketCreated', e => {
|
||||
console.log('WS Created:', e.url);
|
||||
wsEvents.push({ event: 'created', url: e.url, requestId: e.requestId });
|
||||
});
|
||||
|
||||
client.on('Network.webSocketWillSendHandshakeRequest', e => {
|
||||
console.log('WS Handshake Request:', e.requestId);
|
||||
wsEvents.push({ event: 'handshake_request', requestId: e.requestId, request: e.request });
|
||||
});
|
||||
|
||||
client.on('Network.webSocketHandshakeResponseReceived', e => {
|
||||
console.log('WS Handshake Response:', e.response?.status);
|
||||
wsEvents.push({
|
||||
event: 'handshake_response',
|
||||
requestId: e.requestId,
|
||||
status: e.response?.status,
|
||||
headers: e.response?.headers
|
||||
});
|
||||
});
|
||||
|
||||
client.on('Network.webSocketClosed', e => {
|
||||
console.log('WS Closed:', e.requestId);
|
||||
wsEvents.push({ event: 'closed', requestId: e.requestId });
|
||||
});
|
||||
|
||||
client.on('Network.webSocketFrameError', e => {
|
||||
console.log('WS Frame Error:', e.errorMessage);
|
||||
wsEvents.push({ event: 'frame_error', requestId: e.requestId, error: e.errorMessage });
|
||||
});
|
||||
|
||||
client.on('Network.webSocketFrameReceived', e => {
|
||||
wsEvents.push({ event: 'frame_received', requestId: e.requestId, data: e.response?.payloadData?.substring(0, 200) });
|
||||
});
|
||||
|
||||
client.on('Network.webSocketFrameSent', e => {
|
||||
wsEvents.push({ event: 'frame_sent', requestId: e.requestId, data: e.response?.payloadData?.substring(0, 200) });
|
||||
});
|
||||
|
||||
// Track failed requests
|
||||
client.on('Network.loadingFailed', e => {
|
||||
if (e.type === 'WebSocket') {
|
||||
networkErrors.push({ requestId: e.requestId, error: e.errorText, canceled: e.canceled });
|
||||
}
|
||||
});
|
||||
|
||||
console.log('Navigating to app...');
|
||||
await page.goto('http://localhost:5173', { waitUntil: 'networkidle0', timeout: 20000 });
|
||||
|
||||
console.log('Current URL:', page.url());
|
||||
|
||||
// Wait longer and collect events
|
||||
console.log('Waiting 10s to collect WebSocket events...');
|
||||
await new Promise(r => setTimeout(r, 10000));
|
||||
|
||||
// Filter for /ws connections only (not vite-hmr)
|
||||
const appWsEvents = wsEvents.filter(e => e.url?.includes('/ws') && !e.url?.includes('token='));
|
||||
|
||||
outputJSON({
|
||||
success: true,
|
||||
url: page.url(),
|
||||
appWsEvents,
|
||||
allWsEvents: wsEvents,
|
||||
networkErrors,
|
||||
logs: logs.filter(l =>
|
||||
l.text?.toLowerCase().includes('websocket') ||
|
||||
l.text?.toLowerCase().includes('unauthorized') ||
|
||||
l.text?.toLowerCase().includes('error') ||
|
||||
l.type === 'error'
|
||||
).slice(0, 20)
|
||||
});
|
||||
|
||||
await disconnectBrowser();
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
debugWsFull().catch(e => {
|
||||
console.error(JSON.stringify({ success: false, error: e.message, stack: e.stack }));
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user