full-ui-test.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. const { chromium } = require('playwright');
  2. (async () => {
  3. const browser = await chromium.launch({ headless: false }); // 显示浏览器
  4. const page = await browser.newPage();
  5. console.log('=== 完整UI测试 ===\n');
  6. try {
  7. // 1. 打开页面
  8. console.log('1. 打开创建视频页面...');
  9. await page.goto('http://localhost:5173/#/pages/video-generator/create', {
  10. waitUntil: 'networkidle',
  11. timeout: 30000
  12. });
  13. await page.waitForTimeout(3000);
  14. await page.screenshot({ path: 'ui-test-1-loaded.png', fullPage: true });
  15. console.log(' ✅ 页面已加载\n');
  16. // 2. 检查所有关键元素
  17. console.log('2. 检查页面元素:');
  18. const checks = [
  19. { name: '导航栏', selector: '.nav-bar' },
  20. { name: '页面标题', selector: '.page-title' },
  21. { name: '步骤导航', selector: '.step-nav' },
  22. { name: '基本信息区域', selector: 'text=基本信息' },
  23. { name: '视频标题标签', selector: 'text=视频标题' },
  24. { name: '添加图片按钮', selector: 'text=添加图片' },
  25. { name: '添加音频按钮', selector: 'text=添加音频' },
  26. { name: '下一步按钮', selector: 'text=下一步' },
  27. ];
  28. for (const check of checks) {
  29. const count = await page.locator(check.selector).count();
  30. console.log(` ${count > 0 ? '✅' : '❌'} ${check.name}`);
  31. }
  32. // 3. 测试输入框
  33. console.log('\n3. 测试输入框:');
  34. // 尝试查找并点击输入区域
  35. const textareas = await page.locator('textarea').all();
  36. console.log(` 找到 ${textareas.length} 个 textarea`);
  37. if (textareas.length > 0) {
  38. // 点击输入框
  39. await textareas[0].click();
  40. await page.waitForTimeout(500);
  41. // 输入文字
  42. await textareas[0].fill('测试视频标题123');
  43. await page.waitForTimeout(500);
  44. // 检查值
  45. const value = await textareas[0].inputValue();
  46. console.log(` ${value === '测试视频标题123' ? '✅' : '❌'} 输入框可编辑,当前值: "${value}"`);
  47. // 截图
  48. await page.screenshot({ path: 'ui-test-2-input.png', fullPage: true });
  49. } else {
  50. console.log(' ❌ 未找到输入框');
  51. }
  52. // 4. 测试按钮点击
  53. console.log('\n4. 测试按钮:');
  54. // 点击下一步
  55. const nextBtn = await page.locator('text=下一步').first();
  56. if (await nextBtn.isVisible()) {
  57. await nextBtn.click();
  58. await page.waitForTimeout(1000);
  59. console.log(' ✅ 点击下一步成功');
  60. await page.screenshot({ path: 'ui-test-3-step2.png', fullPage: true });
  61. // 检查第二步内容
  62. const step2Visible = await page.locator('text=视频尺寸').isVisible();
  63. console.log(` ${step2Visible ? '✅' : '❌'} 进入第二步(视频尺寸)`);
  64. }
  65. // 5. 截图保存
  66. console.log('\n5. 截图已保存:');
  67. console.log(' - ui-test-1-loaded.png - 页面加载后');
  68. console.log(' - ui-test-2-input.png - 输入测试');
  69. console.log(' - ui-test-3-step2.png - 第二步');
  70. console.log('\n✅ 测试完成!');
  71. // 等待5秒让用户查看
  72. console.log('\n等待5秒后关闭...');
  73. await page.waitForTimeout(5000);
  74. } catch (error) {
  75. console.error('\n❌ 测试失败:', error.message);
  76. await page.screenshot({ path: 'ui-test-error.png', fullPage: true });
  77. console.log('错误截图: ui-test-error.png');
  78. } finally {
  79. await browser.close();
  80. process.exit(0);
  81. }
  82. })();