household-province-chart-validation.spec.ts 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import { TIMEOUTS } from '../../utils/timeouts';
  2. import { test, expect } from '../../utils/test-setup';
  3. /**
  4. * 户籍省份分布图 Y 轴显示验证 (Story 13.22 修复)
  5. * 验证 Y 轴显示省份名称而非数字
  6. */
  7. const TEST_USER_PHONE = '13800138002'; // 使用有数据的测试账号
  8. const TEST_USER_PASSWORD = '123123';
  9. const _STATISTICS_PAGE_URL = '/pages/yongren/statistics/index';
  10. test.describe('户籍省份分布图 Y 轴显示验证', () => {
  11. test.use({ storageState: undefined });
  12. test('户籍省份分布图 Y 轴应显示省份名称而非数字', async ({ enterpriseMiniPage: miniPage }) => {
  13. await miniPage.goto();
  14. await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
  15. await miniPage.expectLoginSuccess();
  16. await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
  17. await miniPage.navigateToStatisticsPage();
  18. // 等待页面加载完成,而不是使用 waitForStatisticsDataLoaded
  19. await miniPage.page.waitForTimeout(TIMEOUTS.LONG);
  20. // 检查页面是否包含"户籍省份分布"标题
  21. const householdChartTitle = miniPage.page.getByText('户籍省份分布');
  22. await expect(householdChartTitle).toBeVisible();
  23. console.debug('[户籍省份分布] 图表标题显示 ✓');
  24. // 滚动到户籍省份分布图表位置
  25. await miniPage.page.getByText('户籍省份分布').scrollIntoViewIfNeeded();
  26. await miniPage.page.waitForTimeout(2000);
  27. // 截图保存到 test-results(使用全页截图以捕获下方图表)
  28. await miniPage.page.screenshot({
  29. path: 'test-results/household-province-chart.png',
  30. fullPage: true
  31. });
  32. console.debug('[户籍省份分布] 截图已保存到 test-results/household-province-chart.png');
  33. // 验证图表渲染 - 检查是否有 canvas 元素
  34. const canvasElements = await miniPage.page.locator('canvas').all();
  35. expect(canvasElements.length).toBeGreaterThan(0);
  36. console.debug(`[户籍省份分布] 检测到 ${canvasElements.length} 个 canvas 元素 ✓`);
  37. // 检查控制台日志中的调试信息
  38. const logs: string[] = [];
  39. miniPage.page.on('console', msg => {
  40. if (msg.text().includes('convertToColumnData')) {
  41. logs.push(msg.text());
  42. console.debug(`[控制台日志] ${msg.text()}`);
  43. }
  44. });
  45. // 给一些时间让控制台日志输出
  46. await miniPage.page.waitForTimeout(2000);
  47. // 验证调试日志中包含省份信息
  48. const hasProvinceLog = logs.some(log => log.includes('Output categories'));
  49. if (hasProvinceLog) {
  50. console.debug('[户籍省份分布] 找到 convertToColumnData 调试日志 ✓');
  51. }
  52. console.debug('[户籍省份分布] 测试完成');
  53. });
  54. test('验证户籍省份分布图数据格式', async ({ enterpriseMiniPage: miniPage }) => {
  55. await miniPage.goto();
  56. await miniPage.login(TEST_USER_PHONE, TEST_USER_PASSWORD);
  57. await miniPage.expectLoginSuccess();
  58. await miniPage.page.waitForTimeout(TIMEOUTS.MEDIUM);
  59. await miniPage.navigateToStatisticsPage();
  60. // 等待页面加载完成
  61. await miniPage.page.waitForTimeout(TIMEOUTS.LONG);
  62. // 获取页面内容以检查数据
  63. const pageContent = await miniPage.page.content();
  64. expect(pageContent).toContain('户籍省份分布');
  65. console.debug('[户籍省份分布] 页面包含户籍省份分布内容 ✓');
  66. // 检查是否有中文省份名称模式(江苏、浙江、安徽等)
  67. const provincePattern = /(江苏|浙江|安徽|上海|北京|天津|重庆|广东|福建|山东|河南|湖北|湖南|江西|河北|山西|内蒙古|辽宁|吉林|黑龙江|四川|云南|贵州|陕西|甘肃|青海|广西|海南|西藏|宁夏|新疆|台湾|香港|澳门)/;
  68. const hasProvinceName = provincePattern.test(pageContent);
  69. if (hasProvinceName) {
  70. console.debug('[户籍省份分布] 检测到省份名称模式 ✓');
  71. } else {
  72. console.debug('[户籍省份分布] 未检测到常见省份名称(可能数据为空或省份名称不常见)');
  73. }
  74. // 最终验证:图表应该可见且没有 JavaScript 错误
  75. const chartContainer = miniPage.page.getByText('户籍省份分布');
  76. await expect(chartContainer).toBeVisible();
  77. console.debug('[户籍省份分布] 图表容器可见性验证通过 ✓');
  78. });
  79. });