Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
bit-pm
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
燕伟桐
bit-pm
Commits
3499faba
Unverified
提交
3499faba
authored
6月 02, 2025
作者:
Will Chen
提交者:
GitHub
6月 02, 2025
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Telemetry e2e test (#308)
上级
e905e9e1
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
167 行增加
和
4 行删除
+167
-4
test_helper.ts
e2e-tests/helpers/test_helper.ts
+39
-3
telemetry.spec.ts_telemetry---accept-1.txt
...ests/snapshots/telemetry.spec.ts_telemetry---accept-1.txt
+15
-0
telemetry.spec.ts_telemetry---accept-2.txt
...ests/snapshots/telemetry.spec.ts_telemetry---accept-2.txt
+16
-0
telemetry.spec.ts_telemetry---later-1.txt
...tests/snapshots/telemetry.spec.ts_telemetry---later-1.txt
+15
-0
telemetry.spec.ts_telemetry---later-2.txt
...tests/snapshots/telemetry.spec.ts_telemetry---later-2.txt
+16
-0
telemetry.spec.ts_telemetry---reject-1.txt
...ests/snapshots/telemetry.spec.ts_telemetry---reject-1.txt
+15
-0
telemetry.spec.ts_telemetry---reject-2.txt
...ests/snapshots/telemetry.spec.ts_telemetry---reject-2.txt
+16
-0
telemetry.spec.ts
e2e-tests/telemetry.spec.ts
+28
-0
TelemetryBanner.tsx
src/components/TelemetryBanner.tsx
+7
-1
没有找到文件。
e2e-tests/helpers/test_helper.ts
浏览文件 @
3499faba
...
...
@@ -2,11 +2,19 @@ import { test as base, Page, expect } from "@playwright/test";
import
{
findLatestBuild
,
parseElectronApp
}
from
"electron-playwright-helpers"
;
import
{
ElectronApplication
,
_electron
as
electron
}
from
"playwright"
;
import
fs
from
"fs"
;
import
path
from
"path"
;
const
showDebugLogs
=
process
.
env
.
DEBUG_LOGS
===
"true"
;
class
PageObject
{
constructor
(
private
page
:
Page
)
{}
private
userDataDir
:
string
;
constructor
(
private
page
:
Page
,
{
userDataDir
}:
{
userDataDir
:
string
},
)
{
this
.
userDataDir
=
userDataDir
;
}
async
setUp
({
autoApprove
=
false
}:
{
autoApprove
?:
boolean
}
=
{})
{
await
this
.
goToSettingsTab
();
...
...
@@ -218,6 +226,30 @@ class PageObject {
await
this
.
page
.
getByRole
(
"switch"
,
{
name
:
"Auto-approve"
}).
click
();
}
async
snapshotSettings
()
{
const
settings
=
path
.
join
(
this
.
userDataDir
,
"user-settings.json"
);
const
settingsContent
=
fs
.
readFileSync
(
settings
,
"utf-8"
);
// Sanitize the "telemetryUserId" since it's a UUID
const
sanitizedSettingsContent
=
settingsContent
.
replace
(
/"telemetryUserId": "
[^
"
]
*"/g
,
'"telemetryUserId": "[UUID]"'
,
);
expect
(
sanitizedSettingsContent
).
toMatchSnapshot
();
}
async
clickTelemetryAccept
()
{
await
this
.
page
.
getByTestId
(
"telemetry-accept-button"
).
click
();
}
async
clickTelemetryReject
()
{
await
this
.
page
.
getByTestId
(
"telemetry-reject-button"
).
click
();
}
async
clickTelemetryLater
()
{
await
this
.
page
.
getByTestId
(
"telemetry-later-button"
).
click
();
}
async
goToAppsTab
()
{
await
this
.
page
.
getByRole
(
"link"
,
{
name
:
"Apps"
}).
click
();
}
...
...
@@ -298,7 +330,9 @@ export const test = base.extend<{
async
({
electronApp
},
use
)
=>
{
const
page
=
await
electronApp
.
firstWindow
();
const
po
=
new
PageObject
(
page
);
const
po
=
new
PageObject
(
page
,
{
userDataDir
:
(
electronApp
as
any
).
$dyadUserDataDir
,
});
await
use
(
po
);
},
{
auto
:
true
},
...
...
@@ -331,17 +365,19 @@ export const test = base.extend<{
process
.
env
.
E2E_TEST_BUILD
=
"true"
;
// This is just a hack to avoid the AI setup screen.
process
.
env
.
OPENAI_API_KEY
=
"sk-test"
;
const
USER_DATA_DIR
=
`/tmp/dyad-e2e-tests-
${
Date
.
now
()}
`
;
const
electronApp
=
await
electron
.
launch
({
args
:
[
appInfo
.
main
,
"--enable-logging"
,
`--user-data-dir=
/tmp/dyad-e2e-tests-
${
Date
.
now
()
}
`
,
`--user-data-dir=
${
USER_DATA_DIR
}
`
,
],
executablePath
:
appInfo
.
executable
,
recordVideo
:
{
dir
:
"test-results"
,
},
});
(
electronApp
as
any
).
$dyadUserDataDir
=
USER_DATA_DIR
;
console
.
log
(
"electronApp launched!"
);
if
(
showDebugLogs
)
{
...
...
e2e-tests/snapshots/telemetry.spec.ts_telemetry---accept-1.txt
0 → 100644
浏览文件 @
3499faba
{
"selectedModel": {
"name": "auto",
"provider": "auto"
},
"providerSettings": {},
"telemetryConsent": "unset",
"telemetryUserId": "[UUID]",
"hasRunBefore": true,
"experiments": {},
"enableProLazyEditsMode": true,
"enableProSmartFilesContextMode": true,
"isTestMode": true
}
\ No newline at end of file
e2e-tests/snapshots/telemetry.spec.ts_telemetry---accept-2.txt
0 → 100644
浏览文件 @
3499faba
{
"selectedModel": {
"name": "auto",
"provider": "auto"
},
"providerSettings": {},
"telemetryConsent": "opted_in",
"telemetryUserId": "[UUID]",
"hasRunBefore": true,
"experiments": {},
"lastShownReleaseNotesVersion": "0.8.0",
"enableProLazyEditsMode": true,
"enableProSmartFilesContextMode": true,
"isTestMode": true
}
\ No newline at end of file
e2e-tests/snapshots/telemetry.spec.ts_telemetry---later-1.txt
0 → 100644
浏览文件 @
3499faba
{
"selectedModel": {
"name": "auto",
"provider": "auto"
},
"providerSettings": {},
"telemetryConsent": "unset",
"telemetryUserId": "[UUID]",
"hasRunBefore": true,
"experiments": {},
"enableProLazyEditsMode": true,
"enableProSmartFilesContextMode": true,
"isTestMode": true
}
\ No newline at end of file
e2e-tests/snapshots/telemetry.spec.ts_telemetry---later-2.txt
0 → 100644
浏览文件 @
3499faba
{
"selectedModel": {
"name": "auto",
"provider": "auto"
},
"providerSettings": {},
"telemetryConsent": "unset",
"telemetryUserId": "[UUID]",
"hasRunBefore": true,
"experiments": {},
"lastShownReleaseNotesVersion": "0.8.0",
"enableProLazyEditsMode": true,
"enableProSmartFilesContextMode": true,
"isTestMode": true
}
\ No newline at end of file
e2e-tests/snapshots/telemetry.spec.ts_telemetry---reject-1.txt
0 → 100644
浏览文件 @
3499faba
{
"selectedModel": {
"name": "auto",
"provider": "auto"
},
"providerSettings": {},
"telemetryConsent": "unset",
"telemetryUserId": "[UUID]",
"hasRunBefore": true,
"experiments": {},
"enableProLazyEditsMode": true,
"enableProSmartFilesContextMode": true,
"isTestMode": true
}
\ No newline at end of file
e2e-tests/snapshots/telemetry.spec.ts_telemetry---reject-2.txt
0 → 100644
浏览文件 @
3499faba
{
"selectedModel": {
"name": "auto",
"provider": "auto"
},
"providerSettings": {},
"telemetryConsent": "opted_out",
"telemetryUserId": "[UUID]",
"hasRunBefore": true,
"experiments": {},
"lastShownReleaseNotesVersion": "0.8.0",
"enableProLazyEditsMode": true,
"enableProSmartFilesContextMode": true,
"isTestMode": true
}
\ No newline at end of file
e2e-tests/telemetry.spec.ts
0 → 100644
浏览文件 @
3499faba
import
{
test
}
from
"./helpers/test_helper"
;
test
(
"telemetry - accept"
,
async
({
po
})
=>
{
// Expect NO telemetry settings to be set
await
po
.
snapshotSettings
();
await
po
.
clickTelemetryAccept
();
// Expect telemetry settings to be set
await
po
.
snapshotSettings
();
});
test
(
"telemetry - reject"
,
async
({
po
})
=>
{
// Expect NO telemetry settings to be set
await
po
.
snapshotSettings
();
await
po
.
clickTelemetryReject
();
// Expect telemetry settings to still NOT be set
await
po
.
snapshotSettings
();
});
test
(
"telemetry - later"
,
async
({
po
})
=>
{
// Expect NO telemetry settings to be set
await
po
.
snapshotSettings
();
await
po
.
clickTelemetryLater
();
// Expect telemetry settings to still NOT be set
await
po
.
snapshotSettings
();
});
src/components/TelemetryBanner.tsx
浏览文件 @
3499faba
...
...
@@ -48,6 +48,7 @@ export function PrivacyBanner() {
onClick=
{
()
=>
{
updateSettings
({
telemetryConsent
:
"opted_in"
});
}
}
data
-
testid=
"telemetry-accept-button"
>
Accept
</
Button
>
...
...
@@ -56,10 +57,15 @@ export function PrivacyBanner() {
onClick=
{
()
=>
{
updateSettings
({
telemetryConsent
:
"opted_out"
});
}
}
data
-
testid=
"telemetry-reject-button"
>
Reject
</
Button
>
<
Button
variant=
"ghost"
onClick=
{
()
=>
setHideBanner
(
true
)
}
>
<
Button
variant=
"ghost"
onClick=
{
()
=>
setHideBanner
(
true
)
}
data
-
testid=
"telemetry-later-button"
>
Later
</
Button
>
</
div
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论