66 lines
3.7 KiB
Python
66 lines
3.7 KiB
Python
from pathlib import Path
|
|
import os
|
|
|
|
extra = '''
|
|
def test_real_queue_snapshot_renders_review_and_handoff_in_embedded_browser(self):
|
|
from PySide6.QtCore import QEventLoop, QTimer
|
|
from PySide6.QtWidgets import QMainWindow
|
|
self.seed()
|
|
owner=QMainWindow();owner._push_console_state=mock.Mock()
|
|
shell=qt.ConsoleShell(owner);shell.resize(1440,900);shell.show()
|
|
self.addCleanup(owner.deleteLater);self.addCleanup(shell.deleteLater);self.addCleanup(shell.close)
|
|
if not shell.page_ready:
|
|
loaded=[];loop=QEventLoop()
|
|
def finished(ok):
|
|
loaded.append(bool(ok));loop.quit()
|
|
shell.loadFinished.connect(finished);QTimer.singleShot(10000,loop.quit);loop.exec()
|
|
shell.loadFinished.disconnect(finished);self.assertEqual(loaded,[True])
|
|
|
|
def evaluate(script):
|
|
values=[];loop=QEventLoop()
|
|
def completed(value):
|
|
values.append(value);loop.quit()
|
|
shell.page().runJavaScript(script,completed);QTimer.singleShot(5000,loop.quit);loop.exec()
|
|
self.assertEqual(len(values),1)
|
|
return values[0]
|
|
|
|
for key,filter_name in (('review','待审核'),('uncertain','需人工')):
|
|
self.page._set_task_filter(filter_name);self.host._console_selected_key=key
|
|
people=self.host._console_people();task=self.host._console_task(people)
|
|
payload={'view':'queue','demo':False,'ready':True,'people':people,'task':task,
|
|
'selectedKey':key,'queueFilter':filter_name,'system':{'scale':'自动'},
|
|
'metrics':self.host._console_metrics(people,[])}
|
|
encoded=json.dumps(payload,ensure_ascii=False)
|
|
rendered=json.loads(evaluate(f"""
|
|
window.applyState({encoded});
|
|
JSON.stringify({{
|
|
approve:!!document.querySelector('[data-action="approve-task"]'),
|
|
cancel:!!document.querySelector('[data-action="cancel-task"]'),
|
|
handoff:document.querySelector('[data-action="handoff-task"]')?.textContent||'',
|
|
detail:document.querySelector('.queue-task-detail')?.textContent||''
|
|
}});
|
|
"""))
|
|
if key=='review':
|
|
self.assertTrue(rendered['approve']);self.assertIn('测试规则',rendered['detail'])
|
|
self.assertIn('待审核合成回复',rendered['detail'])
|
|
else:
|
|
self.assertFalse(rendered['approve']);self.assertFalse(rendered['cancel'])
|
|
self.assertIn('核对后转人工',rendered['handoff'])
|
|
self.assertIn('不会自动重发',rendered['detail'])
|
|
'''
|
|
|
|
for root in (Path(r'C:\kefu\wechat_rpa'), Path(r'C:\wechat_rpa')):
|
|
for name in ('test_desktop_review_visibility.py','wechat_gui_qt.py','review_state.py'):
|
|
path=root/name;text=path.read_text(encoding='utf-8')
|
|
if name.startswith('test_'):
|
|
text+=extra
|
|
elif name=='review_state.py':
|
|
text=text.replace("or stage in {'manual_takeover', 'error', 'failed'}", "or send_state == 'failed' or stage in {'manual_takeover', 'error', 'failed'}")
|
|
else:
|
|
old='pending = raw.get("pending", raw) if isinstance(raw, dict) else {}\n rows = sorted('
|
|
new='pending = raw.get("pending", raw) if isinstance(raw, dict) else {}\n pending = {key: value for key, value in pending.items() if key != "manual_handoffs"} if isinstance(pending, dict) else {}\n rows = sorted('
|
|
assert old in text
|
|
text=text.replace(old,new,1)
|
|
temp=path.with_suffix('.audit-tmp');temp.write_text(text,encoding='utf-8');os.replace(temp,path)
|
|
print(str(root)+': added real Qt render regression')
|