自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Sentry 開發(fā)者貢獻(xiàn)指南 - 瀏覽器 SDK 集成測(cè)試

系統(tǒng) 瀏覽器
Sentry 的瀏覽器 SDK 的集成測(cè)試在內(nèi)部使用 Playwright。這些測(cè)試在 Chromium、Firefox 和 Webkit 的最新穩(wěn)定版本上運(yùn)行。

Sentry 的瀏覽器 SDK 的集成測(cè)試在內(nèi)部使用 Playwright。這些測(cè)試在 Chromium、Firefox 和 Webkit 的最新穩(wěn)定版本上運(yùn)行。

https://playwright.dev/

結(jié)構(gòu)

測(cè)試按其范圍分組,例如 breadcrumbs 或 onunhandledrejection。在每組測(cè)試中,都有多個(gè)包含測(cè)試用例及其可選支持資源的文件夾。

每個(gè)用例組都有一個(gè)名為 template.hbs 的默認(rèn) HTML skeleton,以及一個(gè)名為 init.js 的默認(rèn)初始化腳本,其中包含 Sentry.init() 調(diào)用。當(dāng)特定的 template.hbs 或 init.js 未在用例文件夾中定義時(shí),這些默認(rèn)值用作后備。

subject.js 包含設(shè)置要測(cè)試的環(huán)境的邏輯。它也可以在本地定義并作為組后備。與 template.hbs 和 init.js 不同,它不需要為組定義,因?yàn)榭赡艽嬖诓恍枰?subject 的情況,而是使用 utils/helpers.ts 中的 injectScriptAndGetEvents 注入邏輯。

每個(gè)測(cè)試用例都需要 test.ts,其中包含斷言(如果需要,還需要腳本注入邏輯)。對(duì)于每種情況,任何一組 init.js、template.hbs 和 subject.js 都可以在本地定義,并且它們中的每一個(gè)都將優(yōu)先于測(cè)試組的默認(rèn)定義。

suites/
|---- breadcrumbs/
|---- template.hbs [面包屑測(cè)試的 fallback 模板]
|---- init.js [面包屑測(cè)試的 fallback init]
|---- subject.js [面包屑測(cè)試的可選 fallback subject]
|---- click_event_tree/
|---- template.hbs [可選用例特定模板]
|---- init.js [可選的特定于用例的 init]
|---- subject.js [可選案例特定 subject]
|---- test.ts [斷言]

編寫測(cè)試

Helpers

utils/helpers.ts 包含可以在斷言中使用的 helper(test.ts)。這些 helper 定義了一個(gè)方便可靠的 API 來(lái)與 Playwright 的原生 API 進(jìn)行交互。強(qiáng)烈建議在 helper 中定義所有常見(jiàn)的 Playwright 使用模式。

Fixtures

Fixtures 允許我們?cè)跀嘌越M(test.ts 文件)中定義全局和特定于測(cè)試的信息。在當(dāng)前狀態(tài)下,fixtures.ts 包含對(duì) Playwright 的 test() 函數(shù)的 pure 版本的擴(kuò)展。所有測(cè)試都應(yīng)該從 utils/fixtures.ts 而不是 @playwright/test 導(dǎo)入 sentryTest 函數(shù),以便能夠訪問(wèn)額外的 fixtures。

??https://playwright.dev/docs/api/class-fixtures??

在本地運(yùn)行測(cè)試

可以使用最新版本的 Chromium 在本地運(yùn)行測(cè)試:

yarn test

要使用不同的瀏覽器(例如 firefox 或 webkit)運(yùn)行測(cè)試:

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

或者在所有三個(gè)瀏覽器上運(yùn)行:

yarn test --browser='all'

按 title 過(guò)濾測(cè)試:

yarn test -g "XMLHttpRequest without any handlers set"

您可以參考 Playwright 文檔了解其他 CLI 選項(xiàng)。

故障排除

除了特定于 Playwright 的問(wèn)題外,以下是為 Sentry Browser SDK 編寫測(cè)試時(shí)可能出現(xiàn)的常見(jiàn)問(wèn)題。

??https://playwright.dev/docs/troubleshooting??

不穩(wěn)定的測(cè)試

如果測(cè)試隨機(jī)失敗,給出 Page Closed、Target Closed 或類似錯(cuò)誤,大多數(shù)情況下,原因是 subject 中定義的 page action 與 Sentry event/request 的偵聽(tīng)器之間存在競(jìng)爭(zhēng)條件。建議首先檢查 utils/helpers.ts 是否可以用其中一個(gè) helper 替換異步邏輯。如果不是,是否可以由 Promise.all 編排等待(或在某些情況下故意非等待)的 Playwright 方法。不建議手動(dòng)定義等待邏輯,例如超時(shí),并且在大多數(shù)情況下不需要。

??http://mdn.io/promise.all??

構(gòu)建錯(cuò)誤

在運(yùn)行之前,每個(gè)測(cè)試用例的頁(yè)面都會(huì)在 dist 內(nèi)的 case 文件夾下構(gòu)建。如果頁(yè)面構(gòu)建失敗,建議檢查:

  • 測(cè)試組是否定義了默認(rèn)的 template.hbs 和 init.js。
  • 測(cè)試用例是否定義了 subject.js。
  • init.js 或 subject.js 中的任何一個(gè)是否包含非瀏覽器代碼。
  • webpack 配置是否有效。

實(shí)戰(zhàn)

進(jìn)入 sentry-javascript 項(xiàng)目:

??https://github.com/getsentry/sentry-javascript.git??

安裝依賴

cd sentry-javascript
yarn
yarn lerna bootstrap
yarn build

Playwright 運(yùn)行集成測(cè)試

進(jìn)入集成測(cè)試軟件包 sentry-javascript/packages/integration-tests:

cd packages/integration-tests

# PWDEBUG=1 yarn test -> 打開 Playwright Inspector
yarn test

責(zé)任編輯:武曉燕 來(lái)源: 黑客下午茶
相關(guān)推薦

2022-01-02 23:26:08

開發(fā)SDK Sentry

2022-01-18 23:26:45

開發(fā)

2022-01-21 21:33:03

開發(fā)JavaScript應(yīng)用

2021-12-25 22:31:55

Sentry 監(jiān)控SDK 開發(fā) 性能監(jiān)控

2021-12-31 18:35:40

監(jiān)控Sentry開發(fā)

2022-01-03 22:59:30

開發(fā)SDK數(shù)據(jù)

2022-01-02 06:59:43

SentrySDK 開發(fā)客戶端報(bào)告

2022-01-11 20:42:54

開發(fā)Sentry標(biāo)志

2022-01-17 19:34:43

SentryWeb APISentry API

2022-01-15 23:33:47

SentryPyCharm配置

2021-12-15 20:06:48

ReactJSSentry開發(fā)者

2022-01-16 22:16:59

數(shù)據(jù)庫(kù)Sentry開發(fā)者

2022-01-13 20:13:31

元宇宙搜索引擎

2021-12-16 20:12:37

后端開發(fā)Sentry

2022-01-20 19:49:10

Sentry開發(fā)Scope

2021-12-17 19:15:51

前端蟲洞狀態(tài)

2014-11-11 15:01:04

FirefoxMozilla

2011-07-01 13:11:22

Web

2015-10-30 09:32:49

Firebug開發(fā)者工具火狐瀏覽器

2024-07-25 14:40:35

瀏覽器插件Vimium C瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)