Sentry 开发者贡献指南 - 浏览器 SDK 集成测试

简介: Sentry 开发者贡献指南 - 浏览器 SDK 集成测试

结构



测试按其范围分组,例如 breadcrumbsonunhandledrejection。在每组测试中,都有多个包含测试用例及其可选支持资源的文件夹。


每个用例组都有一个名为 template.hbs 的默认 HTML skeleton,以及一个名为 init.js 的默认初始化脚本,其中包含 Sentry.init() 调用。当特定的 template.hbsinit.js 未在用例文件夹中定义时,这些默认值用作后备。

subject.js 包含设置要测试的环境的逻辑。它也可以在本地定义并作为组后备。与 template.hbsinit.js 不同,它不需要为组定义,因为可能存在不需要 subject 的情况,而是使用 utils/helpers.ts 中的 injectScriptAndGetEvents 注入逻辑。


每个测试用例都需要 test.ts,其中包含断言(如果需要,还需要脚本注入逻辑)。对于每种情况,任何一组 init.jstemplate.hbssubject.js 都可以在本地定义,并且它们中的每一个都将优先于测试组的默认定义。


suites/
|---- breadcrumbs/
      |---- template.hbs [面包屑测试的 fallback 模板]
      |---- init.js [面包屑测试的 fallback init]
      |---- subject.js [面包屑测试的可选 fallback subject]
      |---- click_event_tree/
            |---- template.hbs [可选用例特定模板]
            |---- init.js [可选的特定于用例的 init]
            |---- subject.js [可选案例特定 subject]
            |---- test.ts [断言]


编写测试



Helpers


utils/helpers.ts 包含可以在断言中使用的 helpertest.ts)。这些 helper 定义了一个方便可靠的 API 来与 Playwright 的原生 API 进行交互。强烈建议在 helper 中定义所有常见的 Playwright 使用模式。


Fixtures


Fixtures 允许我们在断言组(test.ts 文件)中定义全局和特定于测试的信息。在当前状态下,fixtures.ts 包含对 Playwrighttest() 函数的 pure 版本的扩展。所有测试都应该从 utils/fixtures.ts 而不是 @playwright/test 导入 sentryTest 函数,以便能够访问额外的 fixtures


在本地运行测试



可以使用最新版本的 Chromium 在本地运行测试:

yarn test

要使用不同的浏览器(例如 firefoxwebkit)运行测试:

yarn test --browser='firefox'yarn test --browser='webkit'

或者在所有三个浏览器上运行:

yarn test --browser='all'

title 过滤测试:

yarn test -g "XMLHttpRequest without any handlers set"

您可以参考 Playwright 文档了解其他 CLI 选项。


故障排除


除了特定于 Playwright 的问题外,以下是为 Sentry Browser SDK 编写测试时可能出现的常见问题。


  • https://playwright.dev/docs/troubleshooting
  • 不稳定的测试
    如果测试随机失败,给出 Page ClosedTarget Closed 或类似错误,大多数情况下,原因是 subject 中定义的 page action 与 Sentry event/request 的侦听器之间存在竞争条件。建议首先检查 utils/helpers.ts 是否可以用其中一个 helper 替换异步逻辑。如果不是,是否可以由 Promise.all 编排等待(或在某些情况下故意非等待)的 Playwright 方法。不建议手动定义等待逻辑,例如超时,并且在大多数情况下不需要。
  • 构建错误
    在运行之前,每个测试用例的页面都会在 dist 内的 case 文件夹下构建。如果页面构建失败,建议检查:
  • 测试组是否定义了默认的 template.hbsinit.js
  • 测试用例是否定义了 subject.js
  • init.jssubject.js 中的任何一个是否包含非浏览器代码。
  • webpack 配置是否有效。


实战



进入 sentry-javascript 项目:


安装依赖


cd sentry-javascript
yarn
yarn lerna bootstrap
yarn build


Playwright 运行集成测试


进入集成测试软件包 sentry-javascript/packages/integration-tests


cd packages/integration-tests
# PWDEBUG=1 yarn test -> 打开 Playwright Inspector
yarn test


image.png

相关文章
|
2月前
|
Java API 开发工具
支付与银行业线上客户协议应用中的DocuSign集成方式选择——SDK和API
跨境支付公司和Docusign进行集成时,碰到问题时的解决方案。分别用SDK和API集成后的各自使用体验。
46 2
支付与银行业线上客户协议应用中的DocuSign集成方式选择——SDK和API
|
2月前
|
Web App开发 编解码 前端开发
面试题22:如何测试Web浏览器的兼容性?
面试题22:如何测试Web浏览器的兼容性?
|
3月前
|
人工智能 自然语言处理 安全
【AI 现况分析】AI 如何帮助开发者完成自动化测试
【1月更文挑战第27天】【AI 现况分析】AI 如何帮助开发者完成自动化测试
|
1月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
【2月更文挑战第13天】《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程) 上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下。
66 1
|
1月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程)
【2月更文挑战第12天】《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程) 前边宏哥已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动三大浏览器。按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome。因此宏哥这里主要介绍一下如何启动这三大浏览器即可,其他浏览器类似的方法,照猫画虎就可以了。
44 1
|
6月前
|
API 开发工具 Android开发
AppsFlyer 研究(一)AppsFlyer SDK 集成(1)
AppsFlyer 研究(一)AppsFlyer SDK 集成
862 0
|
10天前
|
Java 测试技术 定位技术
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
【4月更文挑战第15天】本文介绍了如何使用Selenium进行浏览器窗口切换以操作不同页面元素。首先,获取浏览器窗口句柄有两种方法:获取所有窗口句柄的集合和获取当前窗口句柄。然后,通过`switchTo().window()`方法切换到目标窗口句柄。在项目实战部分,给出了一个示例,展示了在百度首页、新闻页面和地图页面之间切换并输入文字的操作。最后,文章还探讨了在某些情况下可能出现的问题,并提供了一个简单的本地HTML页面示例来演示窗口切换的正确操作。
38 0
|
2月前
|
人工智能 Java 开发工具
阿里云视觉智能开放平台提供了多种SDK供开发者使用
阿里云视觉智能开放平台提供了多种SDK供开发者使用
32 6
|
2月前
|
Web App开发 前端开发 JavaScript
如何快速与呼叫中心系统CTI/API/SDK接口集成
由于呼叫中心系统涉及通信、CTI、终端设备、中继线路等技术与概念,从事信息管理系统、ERP、CRM、工单系统等的研发人员一般不是非常熟悉这部分技术,当需要提供具备呼叫中心能力的解决方案时,往往要用较多的时间来研究这些相对复杂的技术,对接过程比较长,开发调试有一定的阻力,基于此,我们提出一种更加简便高效的集成方法,可以零代码集成呼叫中心平台,实现项目快速上线。
如何快速与呼叫中心系统CTI/API/SDK接口集成
|
2月前
|
Java 测试技术 C#
常见浏览器兼容性测试工具
常见浏览器兼容性测试工具

热门文章

最新文章