dina1 commited on
Commit
2932b2d
·
verified ·
1 Parent(s): c0cbe94

Update playwright_model.py

Browse files
Files changed (1) hide show
  1. playwright_model.py +31 -0
playwright_model.py CHANGED
@@ -16,6 +16,30 @@ async def capture_workflows(public_url: str, pdf_filename: str = "workflow_scree
16
  print(f"Opening page: {public_url}")
17
  await page.goto(public_url, wait_until="load")
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  # ✅ Inject workflow traversal + sub-screen logic
20
  js_logic = """
21
  (function(){
@@ -106,6 +130,9 @@ async def capture_workflows(public_url: str, pdf_filename: str = "workflow_scree
106
  screen_name
107
  )
108
 
 
 
 
109
  await asyncio.sleep(1.2)
110
  await page.screenshot(path=screenshot_path, full_page=True)
111
  screenshots.append(screenshot_path)
@@ -131,7 +158,11 @@ async def capture_workflows(public_url: str, pdf_filename: str = "workflow_scree
131
 
132
  print(f" ↳ Capturing sub-screen: {sub}")
133
  await page.evaluate(f"window.__clickSubScreen('{sub}')")
 
 
 
134
  await asyncio.sleep(1.0)
 
135
  sub_name_clean = sub.replace(" ", "_").lower()
136
  sub_path = os.path.join(OUTPUT_DIR, f"{screen_name}_{sub_name_clean}.png")
137
 
 
16
  print(f"Opening page: {public_url}")
17
  await page.goto(public_url, wait_until="load")
18
 
19
+ # ✅ Helper JS to wait until sidebar finishes sliding
20
+ async def wait_for_sidebar_stable():
21
+ await page.evaluate("""
22
+ return new Promise(resolve => {
23
+ const sidebar = document.querySelector('.sidebar, .side-nav, .menu-panel, .navigation, .drawer');
24
+ if (!sidebar) return resolve();
25
+ let lastPos = sidebar.getBoundingClientRect().left;
26
+ let stableCount = 0;
27
+
28
+ const check = () => {
29
+ const newPos = sidebar.getBoundingClientRect().left;
30
+ if (Math.abs(newPos - lastPos) < 0.5) {
31
+ stableCount++;
32
+ } else {
33
+ stableCount = 0;
34
+ lastPos = newPos;
35
+ }
36
+ if (stableCount > 5) return resolve();
37
+ requestAnimationFrame(check);
38
+ };
39
+ check();
40
+ });
41
+ """)
42
+
43
  # ✅ Inject workflow traversal + sub-screen logic
44
  js_logic = """
45
  (function(){
 
130
  screen_name
131
  )
132
 
133
+ # ✅ Wait until sidebar (if any) has finished sliding
134
+ await wait_for_sidebar_stable()
135
+
136
  await asyncio.sleep(1.2)
137
  await page.screenshot(path=screenshot_path, full_page=True)
138
  screenshots.append(screenshot_path)
 
158
 
159
  print(f" ↳ Capturing sub-screen: {sub}")
160
  await page.evaluate(f"window.__clickSubScreen('{sub}')")
161
+
162
+ # ✅ Wait until sidebar (if any) is stable again
163
+ await wait_for_sidebar_stable()
164
  await asyncio.sleep(1.0)
165
+
166
  sub_name_clean = sub.replace(" ", "_").lower()
167
  sub_path = os.path.join(OUTPUT_DIR, f"{screen_name}_{sub_name_clean}.png")
168