> ## Documentation Index
> Fetch the complete documentation index at: https://docs.molesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RUM 测试流量

> 拨测和 CI 测试产生的会话和真实用户分开记录，并能从产生它的那次运行找到。

会话的类型是 `user`、`synthetics` 或 `ci_test`。浏览器[拨测](https://docs.molesignal.com/zh-Hans/synthetics.md)打开运行浏览器 SDK 的页面时，会产生 `synthetics` 类型的会话，不需要配置。事件在 `synthetics.test_id`、`synthetics.result_id`、`synthetics.location_id` 里写明拨测、这次运行和位置。

## 对数字的影响

应用的数字说的是真实用户，所以测试驱动的会话不计入：

* 概览、性能、受挫、错误、分析、热力图、功能开关页面和内置大盘；
* [RUM 指标告警规则](https://docs.molesignal.com/zh-Hans/rum/alerts.md)；
* 探索页的行和 Mole Agent 的 RUM 工具。

它的错误不会打开[问题](https://docs.molesignal.com/zh-Hans/rum/errors.md)，所以失败的拨测不会被算成新问题。页面排除了这样的会话时会写 **未计入 N 个拨测会话**，点开就是它们。

这样的会话也不会被采样掉：应用的[保留设置](https://docs.molesignal.com/zh-Hans/rum/sampling.md)会完整保留它。应用的某个过滤器写了 `session.type` 时，说明应用已经决定了测试运行的去留，它们就和其他会话一样按过滤器和比例处理。不管 SDK 自身的 `sessionSampleRate` 是多少，SDK 都保留这样的会话。

## 怎么找到

* 从一次运行：浏览器拨测结果的尝试里点 **打开这次拨测的 RUM 会话**。
* 从会话：会话页写明会话类型，并能跳到拨测的结果。
* 在探索页：查询里写了 `session.type`、`synthetics.*` 或 `ci_test.*` 时按查询返回，所以 `session.type = 'synthetics'` 能找到它们。没写时只显示真实用户。`session.type` 的取值列表覆盖所有类型的会话。
* 通过 API：`search`、`aggregate`、`facets`、`histogram` 的过滤条件同样如此。

## 应用自己的测试

在页面的任何脚本运行之前设置同一个全局变量。Playwright 里这样写：

```ts theme={null}
await page.addInitScript((id) => {
  window.__MOLESIGNAL_TEST_CONTEXT__ = { type: 'ci_test', test_execution_id: id };
}, process.env.GITHUB_RUN_ID);
```

SDK 把录到的会话 ID 写到 `window.__MOLESIGNAL_RUM_SESSION__`。拨测读它来关联会话，并在旅程结束时离开页面，让 SDK 把手上的数据发出去。

> [!NOTE]
>
> 页面运行的浏览器 SDK 要比 0.2.0 新，会话才会写明是谁驱动的。SDK 的请求和其他请求一样要过拨测的出口策略，策略不允许访问 MoleSignal 时拨测会失败。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.