Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
hello-uvue
提交
14b3fd4d
H
hello-uvue
项目概览
DCloud
/
hello-uvue
通知
351
Star
2
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello-uvue
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
14b3fd4d
编写于
4月 18, 2024
作者:
DCloud-WZF
💬
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
test: 调整自动化测试截图方式
上级
30c966f4
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
207 addition
and
8 deletion
+207
-8
jest-setup.js
jest-setup.js
+178
-0
pages/app-instance/globalProperties/globalProperties.test.js
pages/app-instance/globalProperties/globalProperties.test.js
+1
-1
pages/built-in-component/teleport/teleport.test.js
pages/built-in-component/teleport/teleport.test.js
+1
-1
pages/directive/v-bind/v-bind-css.test.js
pages/directive/v-bind/v-bind-css.test.js
+1
-1
pages/directive/v-html/v-html.test.js
pages/directive/v-html/v-html.test.js
+2
-2
pages/examples/set-custom-child-component-root-node-class/set-custom-child-component-root-node-class.test.js
...-class/set-custom-child-component-root-node-class.test.js
+1
-1
pages/rendering/template/template-map-style.test.js
pages/rendering/template/template-map-style.test.js
+2
-2
testCaseToSnapshotFilePath.json
testCaseToSnapshotFilePath.json
+21
-0
未找到文件。
jest-setup.js
浏览文件 @
14b3fd4d
const
path
=
require
(
'
path
'
);
const
fs
=
require
(
"
fs
"
);
const
{
configureToMatchImageSnapshot
}
=
require
(
'
jest-image-snapshot
'
);
...
...
@@ -22,4 +23,181 @@ expect.extend({
customSnapshotsDir
:
path
.
join
(
__dirname
,
baseFolderName
),
customDiffDir
:
path
.
join
(
__dirname
,
`
${
folderName
}
/`
,
'
diff
'
),
}),
toSaveSnapshot
,
toSaveImageSnapshot
,
});
const
testCaseToSnapshotFilePath
=
process
.
env
.
testCaseToSnapshotFilePath
||
"
./testCaseToSnapshotFilePath.json
"
;
if
(
!
fs
.
existsSync
(
testCaseToSnapshotFilePath
))
{
fs
.
writeFileSync
(
testCaseToSnapshotFilePath
,
"
{}
"
);
}
function
writeTestCaseToSnapshotFile
(
testCaseName
,
snapshotFilePath
)
{
const
data
=
JSON
.
parse
(
fs
.
readFileSync
(
testCaseToSnapshotFilePath
));
if
(
testCaseName
.
includes
(
__dirname
))
{
testCaseName
=
testCaseName
.
substring
(
`
${
__dirname
}
`
.
length
);
if
(
testCaseName
[
0
]
==
'
/
'
||
testCaseName
[
0
]
==
'
\\
'
)
{
testCaseName
=
testCaseName
.
substring
(
1
);
};
};
if
(
!
data
[
testCaseName
])
{
data
[
testCaseName
]
=
[
snapshotFilePath
];
}
else
{
data
[
testCaseName
].
push
(
snapshotFilePath
);
}
fs
.
writeFileSync
(
testCaseToSnapshotFilePath
,
JSON
.
stringify
(
data
,
null
,
2
));
}
function
toSaveSnapshot
(
received
,
{
customSnapshotsDir
,
fileName
}
=
{})
{
const
{
snapshotState
:
{
_rootDir
},
testPath
,
currentTestName
,
}
=
this
;
const
SNAPSHOTS_DIR
=
"
__file_snapshots__
"
;
const
snapshotDir
=
process
.
env
.
saveSnapshotDir
||
createSnapshotDir
({
customSnapshotsDir
,
testPath
,
SNAPSHOTS_DIR
,
});
const
_fileName
=
createFileName
({
fileName
,
testPath
,
currentTestName
,
});
const
filePath
=
path
.
join
(
snapshotDir
,
_fileName
);
let
message
=
()
=>
`
${
currentTestName
}
toSaveSnapshot success`
;
let
pass
=
true
;
try
{
checkSnapshotDir
(
path
.
dirname
(
filePath
));
fs
.
writeFileSync
(
filePath
,
received
);
writeTestCaseToSnapshotFile
(
testPath
.
replace
(
`
${
_rootDir
}
/`
,
""
),
filePath
);
}
catch
(
e
)
{
console
.
log
(
"
toSaveSnapshot fail
"
,
e
);
message
=
()
=>
e
.
message
;
pass
=
false
;
}
return
{
message
,
pass
,
};
}
function
toSaveImageSnapshot
(
received
,
{
customSnapshotsDir
,
customSnapshotIdentifier
}
=
{}
)
{
const
{
snapshotState
:
{
_rootDir
},
testPath
,
currentTestName
,
}
=
this
;
const
SNAPSHOTS_DIR
=
"
__image_snapshots__
"
;
const
snapshotDir
=
process
.
env
.
saveImageSnapshotDir
||
createSnapshotDir
({
customSnapshotsDir
,
testPath
,
SNAPSHOTS_DIR
,
});
const
_fileName
=
createFileName
({
fileName
:
customSnapshotIdentifier
?
`
${
customSnapshotIdentifier
()}
.png`
:
""
,
testPath
,
currentTestName
,
fileType
:
"
png
"
,
});
const
filePath
=
path
.
join
(
snapshotDir
,
_fileName
);
let
message
=
()
=>
`
${
currentTestName
}
toSaveImageSnapshot success`
;
let
pass
=
true
;
try
{
checkSnapshotDir
(
path
.
dirname
(
filePath
));
fs
.
writeFileSync
(
filePath
,
Buffer
.
from
(
received
,
"
base64
"
));
writeTestCaseToSnapshotFile
(
testPath
.
replace
(
`
${
_rootDir
}
/`
,
""
),
filePath
);
}
catch
(
e
)
{
console
.
log
(
"
toSaveImageSnapshot fail
"
,
e
);
message
=
()
=>
e
.
message
;
pass
=
false
;
}
return
{
message
,
pass
,
};
}
function
createSnapshotDir
({
customSnapshotsDir
,
testPath
,
SNAPSHOTS_DIR
})
{
return
customSnapshotsDir
||
path
.
join
(
path
.
dirname
(
testPath
),
SNAPSHOTS_DIR
);
}
function
createFileName
({
fileName
,
testPath
,
currentTestName
,
fileType
})
{
return
(
fileName
||
createSnapshotIdentifier
({
testPath
,
currentTestName
,
fileType
,
})
);
}
function
createSnapshotIdentifier
({
testPath
,
currentTestName
,
fileType
=
"
txt
"
,
})
{
const
snapshotIdentifier
=
kebabCase
(
`
${
path
.
basename
(
testPath
)}
-
${
currentTestName
}
`
);
const
counter
=
timesCalled
.
get
(
`
${
snapshotIdentifier
}
-
${
fileType
}
`
)
||
1
;
timesCalled
.
set
(
`
${
snapshotIdentifier
}
-
${
fileType
}
`
,
counter
+
1
);
return
`
${
snapshotIdentifier
}
-
${
counter
}
.
${
fileType
}
`
;
}
function
kebabCase
(
str
)
{
return
str
.
replaceAll
(
/
([
a-z
])([
A-Z
])
/g
,
"
$1-$2
"
)
.
replaceAll
(
/
\s
+/g
,
"
-
"
)
.
replaceAll
(
/_+/g
,
"
-
"
)
.
replaceAll
(
/
\/
+/g
,
"
-
"
)
.
replaceAll
(
/
\.
+/g
,
"
-
"
)
.
toLowerCase
();
}
function
checkSnapshotDir
(
snapshotDir
)
{
if
(
!
fs
.
existsSync
(
snapshotDir
))
{
fs
.
mkdirSync
(
snapshotDir
,
{
recursive
:
true
,
});
}
}
const
timesCalled
=
new
Map
();
pages/app-instance/globalProperties/globalProperties.test.js
浏览文件 @
14b3fd4d
...
...
@@ -54,6 +54,6 @@ describe('globalProperties', () => {
const
image
=
await
program
.
screenshot
({
fullPage
:
true
});
expect
(
image
).
to
Match
ImageSnapshot
();
expect
(
image
).
to
Save
ImageSnapshot
();
})
})
\ No newline at end of file
pages/built-in-component/teleport/teleport.test.js
浏览文件 @
14b3fd4d
...
...
@@ -17,6 +17,6 @@ describe('teleport', () => {
it
(
'
teleport
'
,
async
()
=>
{
await
page
.
waitFor
(
500
)
const
image
=
await
program
.
screenshot
();
expect
(
image
).
to
Match
ImageSnapshot
();
expect
(
image
).
to
Save
ImageSnapshot
();
})
})
pages/directive/v-bind/v-bind-css.test.js
浏览文件 @
14b3fd4d
...
...
@@ -17,6 +17,6 @@ describe('v-bind-css', () => {
const
image
=
await
program
.
screenshot
({
fullPage
:
true
});
expect
(
image
).
to
Match
ImageSnapshot
();
expect
(
image
).
to
Save
ImageSnapshot
();
})
})
\ No newline at end of file
pages/directive/v-html/v-html.test.js
浏览文件 @
14b3fd4d
...
...
@@ -8,9 +8,9 @@ describe('v-html', () => {
})
it
(
'
basic
'
,
async
()
=>
{
// 补充延迟确保渲染完成
await
page
.
waitFor
(
500
)
await
page
.
waitFor
(
500
)
const
image
=
await
program
.
screenshot
()
expect
(
image
).
to
Match
ImageSnapshot
()
expect
(
image
).
to
Save
ImageSnapshot
()
})
})
\ No newline at end of file
pages/examples/set-custom-child-component-root-node-class/set-custom-child-component-root-node-class.test.js
浏览文件 @
14b3fd4d
...
...
@@ -10,6 +10,6 @@ describe('自定义组件中使用 class 定制另一个自定义组件根节点
it
(
'
screenshot
'
,
async
()
=>
{
const
image
=
await
program
.
screenshot
()
expect
(
image
).
to
Match
ImageSnapshot
()
expect
(
image
).
to
Save
ImageSnapshot
()
})
})
pages/rendering/template/template-map-style.test.js
浏览文件 @
14b3fd4d
...
...
@@ -6,13 +6,13 @@ describe('/pages/rendering/template/template-map-style', () => {
})
it
(
'
init screen shot
'
,
async
()
=>
{
const
image
=
await
program
.
screenshot
();
expect
(
image
).
to
Match
ImageSnapshot
();
expect
(
image
).
to
Save
ImageSnapshot
();
})
it
(
'
change isClassValid screen shot
'
,
async
()
=>
{
const
btn
=
await
page
.
$
(
'
#btn
'
)
await
btn
.
tap
()
const
image
=
await
program
.
screenshot
();
expect
(
image
).
to
Match
ImageSnapshot
();
expect
(
image
).
to
Save
ImageSnapshot
();
})
});
\ No newline at end of file
testCaseToSnapshotFilePath.json
0 → 100644
浏览文件 @
14b3fd4d
{
"pages/rendering/template/template-map-style.test.js"
:
[
"/Users/wangzhenyu/work/DCloud/git/hello-uvue/pages/rendering/template/__image_snapshots__/template-map-style-test-js--pages-rendering-template-template-map-style-init-screen-shot-1.png"
,
"/Users/wangzhenyu/work/DCloud/git/hello-uvue/pages/rendering/template/__image_snapshots__/template-map-style-test-js--pages-rendering-template-template-map-style-change-is-class-valid-screen-shot-1.png"
],
"pages/examples/set-custom-child-component-root-node-class/set-custom-child-component-root-node-class.test.js"
:
[
"/Users/wangzhenyu/work/DCloud/git/hello-uvue/pages/examples/set-custom-child-component-root-node-class/__image_snapshots__/set-custom-child-component-root-node-class-test-js-自定义组件中使用-class-定制另一个自定义组件根节点样式-screenshot-1.png"
],
"pages/directive/v-html/v-html.test.js"
:
[
"/Users/wangzhenyu/work/DCloud/git/hello-uvue/pages/directive/v-html/__image_snapshots__/v-html-test-js-v-html-basic-1.png"
],
"pages/directive/v-bind/v-bind-css.test.js"
:
[
"/Users/wangzhenyu/work/DCloud/git/hello-uvue/pages/directive/v-bind/__image_snapshots__/v-bind-css-test-js-v-bind-css-screenshot-1.png"
],
"pages/built-in-component/teleport/teleport.test.js"
:
[
"/Users/wangzhenyu/work/DCloud/git/hello-uvue/pages/built-in-component/teleport/__image_snapshots__/teleport-test-js-teleport-teleport-1.png"
],
"pages/app-instance/globalProperties/globalProperties.test.js"
:
[
"/Users/wangzhenyu/work/DCloud/git/hello-uvue/pages/app-instance/globalProperties/__image_snapshots__/global-properties-test-js-global-properties-screenshot-1.png"
]
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录