real-test.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // 真实浏览器测试 - 不跳过任何步骤
  2. const { chromium } = require('playwright');
  3. const fs = require('fs');
  4. const out = (m) => fs.appendFileSync('real-test.log', m + '\n');
  5. (async () => {
  6. fs.writeFileSync('real-test.log', '');
  7. out('真实浏览器测试开始\n');
  8. // 完全真实的 Chromium(不用 fake audio)
  9. const browser = await chromium.launch({
  10. headless: false, // 可见模式,让用户能看到
  11. });
  12. const page = await browser.newPage({ viewport: { width: 800, height: 1200 } });
  13. page.on('console', msg => {
  14. if (!msg.text().includes('KeyVault') && !msg.text().includes('favicon')) {
  15. out(`[CONSOLE ${msg.type()}] ${msg.text()}`);
  16. }
  17. });
  18. page.on('pageerror', err => out(`[PAGE ERROR] ${err.message}`));
  19. page.on('requestfailed', req => out(`[REQUEST FAILED] ${req.url()} - ${req.failure().errorText}`));
  20. await page.goto('http://localhost:3000/test/');
  21. await page.waitForTimeout(3000);
  22. out('页面加载\n');
  23. // 不录音,模拟用户的"手动输入文字 + 点完整流程"
  24. out('\n【测试】手动输入文字 + 点完整流程\n');
  25. await page.evaluate(() => {
  26. document.getElementById('at').textContent = '你好';
  27. document.getElementById('at').classList.remove('e');
  28. });
  29. out('✅ 文字已填入 ASR 框');
  30. await page.click('#bf');
  31. out('✅ 已点击完整流程按钮');
  32. await page.waitForTimeout(5000);
  33. const logContent = await page.locator('#log').textContent();
  34. out(`\n📋 页面日志:\n${logContent}`);
  35. const ltContent = await page.locator('#lt').textContent();
  36. out(`\n🤖 LLM 框: "${ltContent.substring(0, 200)}"`);
  37. await page.waitForTimeout(15000);
  38. const finalLog = await page.locator('#log').textContent();
  39. out(`\n📋 最终日志:\n${finalLog}`);
  40. await page.screenshot({ path: 'real-test-result.png', fullPage: true });
  41. out('\n📸 截图保存');
  42. await browser.close();
  43. out('\n✅ 测试结束');
  44. })().catch(err => {
  45. out('❌ 错误: ' + err.message);
  46. });