-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.ts
More file actions
90 lines (74 loc) · 3.17 KB
/
test.ts
File metadata and controls
90 lines (74 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/**
* Test script for Patchright MCP session inheritance
*/
import { launchBrowser, getPage, closeBrowser } from "./src/browser/manager.js";
import { getDefaultUserDataDir } from "./src/utils/paths.js";
async function main() {
console.log("Starting test...\n");
// Get default Chrome user data directory
const userDataDir = getDefaultUserDataDir("chrome");
console.log(`Chrome User Data Dir: ${userDataDir}\n`);
try {
// Launch browser with session inheritance
console.log("Launching browser with session inheritance...");
const { browserId, pageId, session } = await launchBrowser({
headless: false,
userDataDir,
browserType: "chrome",
profile: "Default",
inheritSession: true,
});
console.log(`Browser ID: ${browserId}`);
console.log(`Page ID: ${pageId}`);
if (session) {
console.log("\nSession inherited:");
console.log(`- Cookies: ${session.result.cookies.decrypted.length}`);
console.log(`- LocalStorage entries: ${session.result.localStorage.total}`);
console.log(`- IndexedDB databases: ${session.result.indexedDB.databases.length}`);
console.log(`- SessionStorage entries: ${session.result.sessionStorage.entryCount}`);
}
// Navigate to GitHub
console.log("\nNavigating to GitHub...");
const page = getPage(browserId, pageId);
await page.goto("https://github.com");
await page.waitForTimeout(3000);
// Get page title
const title = await page.title();
console.log(`\nPage title: ${title}`);
// Check if logged in by looking for user menu
const loginInfo = await page.evaluate(`
(function() {
const signInButton = document.querySelector('a[href="/login"]');
const signUpButton = document.querySelector('a[href="/signup"]');
const userAvatar = document.querySelector('img.avatar');
const userMenu = document.querySelector('[aria-label="Open user navigation menu"]');
const dashboardLink = document.querySelector('a[href="/dashboard"]');
return {
hasSignIn: !!signInButton,
hasSignUp: !!signUpButton,
hasAvatar: !!userAvatar,
hasUserMenu: !!userMenu,
hasDashboard: !!dashboardLink,
};
})()
`) as any;
console.log(`\nLogin detection:`);
console.log(`- Sign In button: ${loginInfo.hasSignIn ? "Found (NOT logged in)" : "Not found"}`);
console.log(`- Sign Up button: ${loginInfo.hasSignUp ? "Found (NOT logged in)" : "Not found"}`);
console.log(`- User Avatar: ${loginInfo.hasAvatar ? "Found (logged in)" : "Not found"}`);
console.log(`- User Menu: ${loginInfo.hasUserMenu ? "Found (logged in)" : "Not found"}`);
const isLoggedIn = !loginInfo.hasSignIn && (loginInfo.hasAvatar || loginInfo.hasUserMenu);
console.log(`\nLogged in: ${isLoggedIn ? "Yes" : "No"}`);
// Wait for user to see the result
console.log("\nBrowser will stay open for 30 seconds...");
await page.waitForTimeout(30000);
// Close browser
console.log("\nClosing browser...");
await closeBrowser(browserId, true);
console.log("\nTest completed!");
} catch (error) {
console.error("Test failed:", error);
process.exit(1);
}
}
main();