test-login-flow.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const { chromium } = require('playwright');
  2. (async () => {
  3. const browser = await chromium.launch({ headless: true });
  4. const context = await browser.newContext();
  5. const page = await context.newPage();
  6. // 收集控制台日志
  7. const logs = [];
  8. page.on('console', msg => {
  9. logs.push(`[${msg.type()}] ${msg.text()}`);
  10. });
  11. // 收集网络请求
  12. page.on('request', request => {
  13. if (request.url().includes('api')) {
  14. console.log('Request:', request.method(), request.url());
  15. }
  16. });
  17. page.on('response', response => {
  18. if (response.url().includes('api')) {
  19. console.log('Response:', response.status(), response.url());
  20. }
  21. });
  22. try {
  23. // 1. 打开登录页
  24. console.log('=== 1. 打开登录页 ===');
  25. await page.goto('http://localhost:5173/pages/login/index', { waitUntil: 'networkidle', timeout: 30000 });
  26. await page.waitForTimeout(2000);
  27. // 2. 截图登录页
  28. await page.screenshot({ path: 'test-login-page.png' });
  29. console.log('登录页截图已保存: test-login-page.png');
  30. // 3. 输入手机号
  31. console.log('=== 2. 输入手机号 ===');
  32. await page.fill('input[type="number"]', '13812341234');
  33. await page.waitForTimeout(500);
  34. await page.screenshot({ path: 'test-phone-filled.png' });
  35. // 4. 点击登录按钮(开发环境验证码可为空)
  36. console.log('=== 3. 点击登录 ===');
  37. const loginBtn = await page.locator('button.login-btn');
  38. await loginBtn.click();
  39. // 等待登录结果
  40. await page.waitForTimeout(3000);
  41. await page.screenshot({ path: 'test-after-login.png' });
  42. // 5. 打印控制台日志
  43. console.log('=== 控制台日志 ===');
  44. logs.forEach(log => console.log(log));
  45. // 6. 获取当前 URL
  46. console.log('当前 URL:', page.url());
  47. // 7. 检查 localStorage
  48. const storage = await page.evaluate(() => {
  49. return {
  50. token: localStorage.getItem('token'),
  51. userInfo: localStorage.getItem('userInfo')
  52. };
  53. });
  54. console.log('LocalStorage:', JSON.stringify(storage));
  55. } catch (error) {
  56. console.error('测试失败:', error.message);
  57. await page.screenshot({ path: 'test-error.png' });
  58. }
  59. await browser.close();
  60. })();