You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright如何获取Chart.js图表数据并验证数据渲染正确性?

验证Chart.js图表数据渲染的E2E测试方案(Playwright)

1. 直接读取Chart.js实例的原始数据

Chart.js的getChart('id')必须在页面上下文内执行才能拿到完整实例。你可以通过Playwright的page.evaluate()方法访问页面中的Chart对象,直接提取核心数据和预期值对比:

// Playwright测试代码
const chartData = await page.evaluate(() => {
  const chart = Chart.getChart('your-chart-id');
  if (!chart) return null;
  // 返回需要验证的关键数据
  return {
    labels: chart.data.labels,
    datasets: chart.data.datasets.map(ds => ({
      label: ds.label,
      data: ds.data
    }))
  };
});

// 断言数据匹配预期
expect(chartData.labels).toEqual(['一月', '二月', '三月']);
expect(chartData.datasets[0].data).toEqual([15, 28, 36]);

2. 验证数据点的视觉位置与提示框内容

如果要确认数据实际渲染的视觉表现,可以通过以下两种方式:

  • 触发hover读取tooltip内容:
// 获取第一个数据点的坐标
const firstPoint = await page.evaluate(() => {
  const chart = Chart.getChart('your-chart-id');
  const point = chart.getDatasetMeta(0).data[0];
  return { x: point.x, y: point.y };
});

// 模拟鼠标hover到数据点
await page.mouse.move(firstPoint.x, firstPoint.y);

// 读取tooltip文本并断言
const tooltipText = await page.locator('.chartjs-tooltip').textContent();
expect(tooltipText).toContain('一月: 15');
  • 验证数据点坐标:根据图表尺寸、坐标轴范围计算数据点应处的位置,再和point.x/point.y对比,确认渲染位置正确。

3. 全局暴露图表数据(简化测试)

如果页面中直接访问Chart实例有阻碍,可以在应用代码里把核心数据挂载到全局对象,方便测试直接读取:

// 应用初始化图表后添加
const chart = new Chart('your-chart-id', chartConfig);
window.chartTestData = {
  labels: chart.data.labels,
  datasetValues: chart.data.datasets[0].data
};

// Playwright测试中直接读取
const testData = await page.evaluate(() => window.chartTestData);
expect(testData.datasetValues).toEqual([15,28,36]);

4. 数据断言+视觉快照(双重验证)

如果需要兼顾数据准确性和视觉渲染效果,可以结合数据断言与Playwright的视觉快照:

// 先验证数据正确性
const chartData = await page.evaluate(() => Chart.getChart('your-chart-id').data);
expect(chartData.datasets[0].data).toEqual([15,28,36]);

// 再验证整体视觉渲染
await expect(page.locator('#your-chart-id')).toHaveScreenshot();

内容的提问来源于stack exchange,提问作者Clara Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:52:49