Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Five-菜鸟级
echarts
提交
0694d1a2
E
echarts
项目概览
Five-菜鸟级
/
echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
0694d1a2
编写于
9月 12, 2019
作者:
Y
Yi Shen
提交者:
GitHub
9月 12, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #11229 from apache/test-autorun
Automatic visual regression testing tool: add preview dialog
上级
644922e3
1e3a730f
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
79 addition
and
35 deletion
+79
-35
.github/CONTRIBUTING.md
.github/CONTRIBUTING.md
+1
-1
test/lib/config.js
test/lib/config.js
+17
-7
test/runTest/blacklist.js
test/runTest/blacklist.js
+3
-0
test/runTest/cli.js
test/runTest/cli.js
+1
-1
test/runTest/client/client.css
test/runTest/client/client.css
+13
-0
test/runTest/client/client.js
test/runTest/client/client.js
+23
-0
test/runTest/client/index.html
test/runTest/client/index.html
+20
-25
test/runTest/server.js
test/runTest/server.js
+1
-1
未找到文件。
.github/CONTRIBUTING.md
浏览文件 @
0694d1a2
...
...
@@ -107,7 +107,7 @@ Then, open the test cases under `~/workspace/echarts/test` in Web browser. You c
```
bash
# puppeteer is not in the devDependencies and needs to be installed manually
npm
install
puppeteer
npm
install
puppeteer
--no-save
npm run
test
:visual
```
...
...
test/lib/config.js
浏览文件 @
0694d1a2
...
...
@@ -25,22 +25,32 @@
// `true` by default for debugging.
sourceMap
==
null
&&
(
sourceMap
=
true
);
var
params
=
{};
location
.
search
.
slice
(
1
).
split
(
'
&
'
).
forEach
(
item
=>
{
var
kv
=
item
.
split
(
'
=
'
);
params
[
kv
[
0
]]
=
kv
[
1
];
});
// Set default renderer in dev mode from hash.
var
matchResult
=
location
.
href
.
match
(
/
[
?&
]
__RENDERER__=
(
canvas|svg
)(
&|$
)
/
);
if
(
matchResult
)
{
window
.
__ECHARTS__DEFAULT__RENDERER__
=
matchResult
[
1
];
if
(
params
.
__RENDERER__
)
{
window
.
__ECHARTS__DEFAULT__RENDERER__
=
params
.
__RENDERER__
;
}
// Set echarts source code.
var
matchResult
=
location
.
href
.
match
(
/
[
?&
]
__ECDIST__=
(
webpack-req-ec|webpack-req-eclibec|webpackold-req-ec|webpackold-req-eclibec
)(
&|$
)
/
);
var
ecDistPath
=
'
dist/echarts
'
;
if
(
matchResult
)
{
var
ecDistPath
;
if
(
params
.
__ECDIST__
)
{
ecDistPath
=
({
'
webpack-req-ec
'
:
'
../echarts-boilerplate/echarts-webpack/dist/webpack-req-ec
'
,
'
webpack-req-eclibec
'
:
'
../echarts-boilerplate/echarts-webpack/dist/webpack-req-eclibec
'
,
'
webpackold-req-ec
'
:
'
../echarts-boilerplate/echarts-webpackold/dist/webpackold-req-ec
'
,
'
webpackold-req-eclibec
'
:
'
../echarts-boilerplate/echarts-webpackold/dist/webpackold-req-eclibec
'
,
})[
matchResult
[
1
]];
})[
params
.
__ECDIST__
];
if
(
!
ecDistPath
&&
params
.
__ECDIST__
.
match
(
/
[
0-9.
]
/
))
{
// Version number
ecDistPath
=
'
test/runTest/tmp/__version__/
'
+
params
.
__ECDIST__
+
'
/echarts
'
;
}
}
if
(
!
ecDistPath
)
{
ecDistPath
=
'
dist/echarts
'
;
}
if
(
typeof
require
!==
'
undefined
'
)
{
...
...
test/runTest/blacklist.js
浏览文件 @
0694d1a2
...
...
@@ -31,6 +31,9 @@ module.exports.blacklist = [
'
scatter-gps.html
'
,
'
webkit-dep.html
'
,
// Image size not match
'
symbol2.html
'
,
// This case will have timeout
'
visualMap-performance1.html
'
,
'
lines-bus.html
'
,
...
...
test/runTest/cli.js
浏览文件 @
0694d1a2
...
...
@@ -162,7 +162,7 @@ async function runTestPage(browser, testOpt, version, runtimeCode, isExpected) {
timeout
:
10000
});
await
waitTime
(
2
00
);
// Wait for animation or something else. Pending
await
waitTime
(
5
00
);
// Wait for animation or something else. Pending
// Final shot.
await
page
.
mouse
.
move
(
0
,
0
);
let
desc
=
'
Full Shot
'
;
...
...
test/runTest/client/client.css
浏览文件 @
0694d1a2
...
...
@@ -170,6 +170,14 @@
margin-top
:
60px
;
}
.test-screenshots
.preview
{
cursor
:
pointer
;
color
:
#409eff
;
}
.test-screenshots
.preview
:hover
{
text-decoration
:
underline
;
}
.test-screenshots
img
{
/* height: 200px; */
width
:
100%
;
...
...
@@ -196,6 +204,11 @@
color
:
#f56c6c
}
iframe
{
border
:
none
;
overflow
:
overlay
;
}
::-webkit-scrollbar
{
height
:
8px
;
...
...
test/runTest/client/client.js
浏览文件 @
0694d1a2
...
...
@@ -70,6 +70,10 @@ const app = new Vue({
versions
:
[],
showIframeDialog
:
false
,
previewIframeSrc
:
''
,
previewTitle
:
''
,
runConfig
:
{
noHeadless
:
false
,
replaySpeed
:
5
,
...
...
@@ -207,6 +211,25 @@ const app = new Vue({
stopTests
()
{
this
.
running
=
false
;
socket
.
emit
(
'
stop
'
);
},
preview
(
test
,
version
)
{
let
searches
=
[];
let
ecVersion
=
test
[
version
+
'
Version
'
];
if
(
ecVersion
!==
'
local
'
)
{
searches
.
push
(
'
__ECDIST__=
'
+
ecVersion
);
}
if
(
test
.
useSVG
)
{
searches
.
push
(
'
__RENDERER__=svg
'
);
}
let
src
=
test
.
fileUrl
;
if
(
searches
.
length
)
{
src
=
src
+
'
?
'
+
searches
.
join
(
'
&
'
);
}
this
.
previewIframeSrc
=
`../../
${
src
}
`
;
this
.
previewTitle
=
src
;
this
.
showIframeDialog
=
true
;
}
}
});
...
...
test/runTest/client/index.html
浏览文件 @
0694d1a2
...
...
@@ -175,8 +175,9 @@ under the License.
<el-card
shadow=
"hover"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
Expected - {{currentTest.expectedVersion || ''}}
</span>
<i
title=
"Preview"
class=
"el-icon-view preview"
@
click=
"preview(currentTest, 'expected')"
></i>
</div>
<el-image
:src=
"result.expected"
></el-image>
<el-image
:src=
"result.expected"
:preview-src-list=
"[result.expected]"
></el-image>
</el-card>
</el-col>
...
...
@@ -184,8 +185,9 @@ under the License.
<el-card
shadow=
"hover"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
Actual - {{currentTest.actualVersion || ''}}
</span>
<i
title=
"Preview"
class=
"el-icon-view preview"
@
click=
"preview(currentTest, 'actual')"
></i>
</div>
<el-image
:src=
"result.actual"
></el-image>
<el-image
:src=
"result.actual"
:preview-src-list=
"[result.actual]"
></el-image>
</el-card>
</el-col>
...
...
@@ -194,7 +196,7 @@ under the License.
<div
slot=
"header"
class=
"clearfix"
>
<span>
Diff - {{result.diffRatio.toFixed(4)}}
</span>
</div>
<el-image
:src=
"result.diff"
></el-image>
<el-image
:src=
"result.diff"
:preview-src-list=
"[result.diff]"
></el-image>
</el-card>
</el-col>
</el-row>
...
...
@@ -203,19 +205,11 @@ under the License.
<div
class=
"test-errors"
>
<el-row
:gutter=
"40"
>
<el-col
:span=
"12"
>
<el-alert
title=
"Expected Errors"
type=
"error"
show-icon
>
</el-alert>
<el-alert
title=
"Expected Errors"
type=
"error"
show-icon
></el-alert>
<div
class=
"error-item"
v-for=
"error in currentTest.expectedErrors"
>
{{error}}
</div>
</el-col>
<el-col
:span=
"12"
>
<el-alert
title=
"Actual Errors"
type=
"error"
show-icon
>
</el-alert>
<el-alert
title=
"Actual Errors"
type=
"error"
show-icon
>
</el-alert>
<div
class=
"error-item"
v-for=
"error in currentTest.actualErrors"
>
{{error}}
</div>
</el-col>
</el-row>
...
...
@@ -224,28 +218,29 @@ under the License.
<div
class=
"test-logs"
>
<el-row
:gutter=
"40"
>
<el-col
:span=
"12"
>
<el-alert
title=
"Expected Logs"
type=
"info"
show-icon
>
</el-alert>
<el-alert
title=
"Expected Logs"
type=
"info"
show-icon
>
</el-alert>
<div
class=
"log-item"
v-for=
"log in currentTest.expectedLogs"
>
{{log}}
</div>
</el-col>
<el-col
:span=
"12"
>
<el-alert
title=
"Actual Logs"
type=
"info"
show-icon
>
<el-alert
title=
"Actual Logs"
type=
"info"
show-icon
>
</el-alert>
<div
class=
"log-item"
v-for=
"log in currentTest.actualLogs"
>
{{log}}
</div>
</el-col>
</el-row>
</div>
</div>
<div
class=
"test-result-nav"
>
<el-dialog
:visible.sync=
"showIframeDialog"
:center=
"true"
width=
"850px"
>
<div
slot=
"title"
>
{{previewTitle}}
<a
target=
"_blank"
:href=
"'../../' + previewTitle"
><i
class=
"el-icon-link"
></i>
Open in New Window
</a>
</div>
</div>
<iframe
:src=
"previewIframeSrc"
width=
"800"
height=
"600"
></iframe>
</el-dialog>
</el-main>
</el-container>
</el-container>
...
...
test/runTest/server.js
浏览文件 @
0694d1a2
...
...
@@ -184,7 +184,7 @@ function checkPuppeteer() {
async
function
start
()
{
if
(
!
checkPuppeteer
())
{
// TODO Check version.
console
.
error
(
`Can't find puppeteer >= 1.19.0, use 'npm install puppeteer' to install or update`
);
console
.
error
(
`Can't find puppeteer >= 1.19.0, use 'npm install puppeteer
--no-save
' to install or update`
);
return
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录