Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_22812535
incubator-superset
提交
29ad78e1
I
incubator-superset
项目概览
qq_22812535
/
incubator-superset
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-superset
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
29ad78e1
编写于
1月 25, 2021
作者:
J
Jesse Yang
提交者:
GitHub
1月 25, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: upgrade Cypress to 6.2.1 (#12605)
上级
1b2611c2
变更
54
隐藏空白更改
内联
并排
Showing
54 changed file
with
487 addition
and
571 deletion
+487
-571
superset-frontend/cypress-base/cypress/integration/chart_list/card_view.test.ts
...ess-base/cypress/integration/chart_list/card_view.test.ts
+0
-1
superset-frontend/cypress-base/cypress/integration/chart_list/filter.test.ts
...ypress-base/cypress/integration/chart_list/filter.test.ts
+0
-2
superset-frontend/cypress-base/cypress/integration/chart_list/list_view.test.ts
...ess-base/cypress/integration/chart_list/list_view.test.ts
+0
-1
superset-frontend/cypress-base/cypress/integration/dashboard/controls.test.ts
...press-base/cypress/integration/dashboard/controls.test.ts
+14
-15
superset-frontend/cypress-base/cypress/integration/dashboard/edit_mode.test.js
...ress-base/cypress/integration/dashboard/edit_mode.test.js
+2
-3
superset-frontend/cypress-base/cypress/integration/dashboard/edit_properties.test.ts
...ase/cypress/integration/dashboard/edit_properties.test.ts
+1
-2
superset-frontend/cypress-base/cypress/integration/dashboard/fav_star.test.js
...press-base/cypress/integration/dashboard/fav_star.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/dashboard/filter.test.ts
...cypress-base/cypress/integration/dashboard/filter.test.ts
+8
-10
superset-frontend/cypress-base/cypress/integration/dashboard/load.test.js
...d/cypress-base/cypress/integration/dashboard/load.test.js
+3
-6
superset-frontend/cypress-base/cypress/integration/dashboard/markdown.test.ts
...press-base/cypress/integration/dashboard/markdown.test.ts
+1
-2
superset-frontend/cypress-base/cypress/integration/dashboard/nativeFilters.test.ts
...-base/cypress/integration/dashboard/nativeFilters.test.ts
+0
-1
superset-frontend/cypress-base/cypress/integration/dashboard/save.test.js
...d/cypress-base/cypress/integration/dashboard/save.test.js
+15
-12
superset-frontend/cypress-base/cypress/integration/dashboard/tabs.test.js
...d/cypress-base/cypress/integration/dashboard/tabs.test.js
+32
-77
superset-frontend/cypress-base/cypress/integration/dashboard/url_params.test.js
...ess-base/cypress/integration/dashboard/url_params.test.js
+11
-10
superset-frontend/cypress-base/cypress/integration/dashboard_list/card_view.test.ts
...base/cypress/integration/dashboard_list/card_view.test.ts
+0
-1
superset-frontend/cypress-base/cypress/integration/dashboard_list/filter.test.ts
...ss-base/cypress/integration/dashboard_list/filter.test.ts
+0
-2
superset-frontend/cypress-base/cypress/integration/dashboard_list/list_view.test.ts
...base/cypress/integration/dashboard_list/list_view.test.ts
+0
-1
superset-frontend/cypress-base/cypress/integration/database/modal.test.ts
...d/cypress-base/cypress/integration/database/modal.test.ts
+0
-1
superset-frontend/cypress-base/cypress/integration/explore/AdhocFilters.test.ts
...ess-base/cypress/integration/explore/AdhocFilters.test.ts
+3
-4
superset-frontend/cypress-base/cypress/integration/explore/AdhocMetrics.test.ts
...ess-base/cypress/integration/explore/AdhocMetrics.test.ts
+2
-3
superset-frontend/cypress-base/cypress/integration/explore/advanced.test.ts
...cypress-base/cypress/integration/explore/advanced.test.ts
+4
-6
superset-frontend/cypress-base/cypress/integration/explore/chart.test.js
...nd/cypress-base/cypress/integration/explore/chart.test.js
+2
-5
superset-frontend/cypress-base/cypress/integration/explore/control.test.ts
.../cypress-base/cypress/integration/explore/control.test.ts
+8
-12
superset-frontend/cypress-base/cypress/integration/explore/filter_box.test.js
...press-base/cypress/integration/explore/filter_box.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/link.test.js
...end/cypress-base/cypress/integration/explore/link.test.js
+3
-4
superset-frontend/cypress-base/cypress/integration/explore/visualizations/area.test.js
...e/cypress/integration/explore/visualizations/area.test.js
+3
-9
superset-frontend/cypress-base/cypress/integration/explore/visualizations/big_number.test.js
...ess/integration/explore/visualizations/big_number.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/big_number_total.test.js
...tegration/explore/visualizations/big_number_total.test.js
+3
-9
superset-frontend/cypress-base/cypress/integration/explore/visualizations/box_plot.test.js
...press/integration/explore/visualizations/box_plot.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/bubble.test.js
...cypress/integration/explore/visualizations/bubble.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/compare.test.js
...ypress/integration/explore/visualizations/compare.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/dist_bar.test.js
...press/integration/explore/visualizations/dist_bar.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/dual_line.test.js
...ress/integration/explore/visualizations/dual_line.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/histogram.test.js
...ress/integration/explore/visualizations/histogram.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/line.test.ts
...e/cypress/integration/explore/visualizations/line.test.ts
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/pie.test.js
...se/cypress/integration/explore/visualizations/pie.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/pivot_table.test.js
...ss/integration/explore/visualizations/pivot_table.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/sankey.test.js
...cypress/integration/explore/visualizations/sankey.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/sunburst.test.js
...press/integration/explore/visualizations/sunburst.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/table.test.ts
.../cypress/integration/explore/visualizations/table.test.ts
+23
-28
superset-frontend/cypress-base/cypress/integration/explore/visualizations/time_table.js
.../cypress/integration/explore/visualizations/time_table.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/treemap.test.js
...ypress/integration/explore/visualizations/treemap.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/explore/visualizations/world_map.test.js
...ress/integration/explore/visualizations/world_map.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/sqllab/query.test.ts
...end/cypress-base/cypress/integration/sqllab/query.test.ts
+3
-4
superset-frontend/cypress-base/cypress/integration/sqllab/sourcePanel.index.test.js
...base/cypress/integration/sqllab/sourcePanel.index.test.js
+1
-2
superset-frontend/cypress-base/cypress/integration/sqllab/tabs.test.js
...tend/cypress-base/cypress/integration/sqllab/tabs.test.js
+0
-1
superset-frontend/cypress-base/cypress/support/index.d.ts
superset-frontend/cypress-base/cypress/support/index.d.ts
+0
-8
superset-frontend/cypress-base/cypress/support/index.ts
superset-frontend/cypress-base/cypress/support/index.ts
+13
-26
superset-frontend/cypress-base/cypress/utils/index.ts
superset-frontend/cypress-base/cypress/utils/index.ts
+2
-14
superset-frontend/cypress-base/cypress/utils/parsePostForm.ts
...rset-frontend/cypress-base/cypress/utils/parsePostForm.ts
+60
-0
superset-frontend/cypress-base/cypress/utils/vizPlugins.ts
superset-frontend/cypress-base/cypress/utils/vizPlugins.ts
+17
-5
superset-frontend/cypress-base/package-lock.json
superset-frontend/cypress-base/package-lock.json
+229
-245
superset-frontend/cypress-base/package.json
superset-frontend/cypress-base/package.json
+3
-3
superset-frontend/cypress-base/tsconfig.json
superset-frontend/cypress-base/tsconfig.json
+4
-2
未找到文件。
superset-frontend/cypress-base/cypress/integration/chart_list/card_view.test.ts
浏览文件 @
29ad78e1
...
...
@@ -21,7 +21,6 @@ import { CHART_LIST } from './chart_list.helper';
describe
(
'
chart card view
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
CHART_LIST
);
cy
.
get
(
'
[data-test="card-view"]
'
).
click
();
});
...
...
superset-frontend/cypress-base/cypress/integration/chart_list/filter.test.ts
浏览文件 @
29ad78e1
...
...
@@ -21,7 +21,6 @@ import { CHART_LIST } from './chart_list.helper';
describe
(
'
chart card view filters
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
CHART_LIST
);
cy
.
get
(
'
[data-test="card-view"]
'
).
click
();
});
...
...
@@ -89,7 +88,6 @@ describe('chart card view filters', () => {
describe
(
'
chart list view filters
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
CHART_LIST
);
cy
.
get
(
'
[data-test="list-view"]
'
).
click
();
});
...
...
superset-frontend/cypress-base/cypress/integration/chart_list/list_view.test.ts
浏览文件 @
29ad78e1
...
...
@@ -21,7 +21,6 @@ import { CHART_LIST } from './chart_list.helper';
describe
(
'
chart list view
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
CHART_LIST
);
cy
.
get
(
'
[data-test="list-view"]
'
).
click
();
});
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/controls.test.
j
s
→
superset-frontend/cypress-base/cypress/integration/dashboard/controls.test.
t
s
浏览文件 @
29ad78e1
...
...
@@ -17,7 +17,6 @@
* under the License.
*/
import
{
WORLD_HEALTH_DASHBOARD
}
from
'
./dashboard.helper
'
;
import
readResponseBlob
from
'
../../utils/readResponseBlob
'
;
import
{
getChartAliases
,
isLegacyResponse
,
...
...
@@ -25,19 +24,19 @@ import {
}
from
'
../../utils/vizPlugins
'
;
describe
(
'
Dashboard top-level controls
'
,
()
=>
{
let
mapId
;
let
aliases
;
let
mapId
:
string
;
let
aliases
:
string
[]
;
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
WORLD_HEALTH_DASHBOARD
);
cy
.
get
(
'
#app
'
).
then
(
data
=>
{
const
bootstrapData
=
JSON
.
parse
(
data
[
0
].
dataset
.
bootstrap
);
const
bootstrapData
=
JSON
.
parse
(
data
[
0
].
dataset
.
bootstrap
||
''
);
const
dashboard
=
bootstrapData
.
dashboard_data
;
mapId
=
dashboard
.
slices
.
find
(
slice
=>
slice
.
form_data
.
viz_type
===
'
world_map
'
,
(
slice
:
{
form_data
:
{
viz_type
:
string
};
slice_id
:
number
})
=>
slice
.
form_data
.
viz_type
===
'
world_map
'
,
).
slice_id
;
aliases
=
getChartAliases
(
dashboard
.
slices
);
});
...
...
@@ -50,10 +49,11 @@ describe('Dashboard top-level controls', () => {
cy
.
get
(
`#slice_
${
mapId
}
-controls`
).
click
();
cy
.
get
(
`[data-test="slice_
${
mapId
}
-menu"]`
)
.
find
(
'
[data-test="refresh-chart-menu-item"]
'
)
.
click
({
force
:
true
})
.
then
(
$el
=>
{
cy
.
get
(
$el
).
should
(
'
have.class
'
,
'
ant-dropdown-menu-item-disabled
'
);
});
.
click
({
force
:
true
});
cy
.
get
(
'
[data-test="refresh-chart-menu-item"]
'
).
should
(
'
have.class
'
,
'
ant-dropdown-menu-item-disabled
'
,
);
cy
.
wait
(
`@
${
DASHBOARD_CHART_ALIAS_PREFIX
}${
mapId
}
`
);
cy
.
get
(
'
[data-test="refresh-chart-menu-item"]
'
).
should
(
...
...
@@ -63,7 +63,6 @@ describe('Dashboard top-level controls', () => {
});
it
(
'
should allow dashboard level force refresh
'
,
()
=>
{
// wait the all dash finish loading.
cy
.
wait
(
aliases
);
// when charts are not start loading, for example, under a secondary tab,
// should allow force refresh
...
...
@@ -80,14 +79,14 @@ describe('Dashboard top-level controls', () => {
);
// wait all charts force refreshed.
cy
.
wait
(
aliases
,
{
responseTimeout
:
15000
}
).
then
(
xhrs
=>
{
xhrs
.
forEach
(
async
xhr
=>
{
const
responseBody
=
await
readResponseBlob
(
xhr
.
response
.
body
)
;
cy
.
wait
(
aliases
).
then
(
xhrs
=>
{
xhrs
.
forEach
(
async
({
response
,
request
})
=>
{
const
responseBody
=
response
?.
body
;
const
isCached
=
isLegacyResponse
(
responseBody
)
?
responseBody
.
is_cached
:
responseBody
.
result
[
0
].
is_cached
;
// request url should indicate force-refresh operation
expect
(
xhr
.
url
).
to
.
have
.
string
(
'
force=true
'
);
expect
(
request
.
url
).
to
.
have
.
string
(
'
force=true
'
);
// is_cached in response should be false
expect
(
isCached
).
to
.
equal
(
false
);
});
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/edit_mode.test.js
浏览文件 @
29ad78e1
...
...
@@ -20,7 +20,6 @@ import { WORLD_HEALTH_DASHBOARD, drag } from './dashboard.helper';
describe
(
'
Dashboard edit mode
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
WORLD_HEALTH_DASHBOARD
);
cy
.
get
(
'
[data-test="dashboard-header"]
'
)
...
...
@@ -43,7 +42,7 @@ describe('Dashboard edit mode', () => {
// box plot should be gone
cy
.
get
(
'
[data-test="grid-container"]
'
)
.
find
(
'
.box_plot
'
)
.
should
(
'
not.
be.visible
'
);
.
should
(
'
not.
exist
'
);
});
cy
.
get
(
'
[data-test="dashboard-builder-component-pane-tabs-navigation"]
'
)
...
...
@@ -78,7 +77,7 @@ describe('Dashboard edit mode', () => {
// Box plot chart should be gone
cy
.
get
(
'
[data-test="grid-container"]
'
)
.
find
(
'
.box_plot
'
)
.
should
(
'
not.
be.visible
'
);
.
should
(
'
not.
exist
'
);
// undo second step and expect initial items count
cy
.
get
(
'
[data-test="undo-action"]
'
).
click
();
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/edit_properties.test.ts
浏览文件 @
29ad78e1
...
...
@@ -71,10 +71,9 @@ function openDashboardEditProperties() {
describe
(
'
Dashboard edit action
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
WORLD_HEALTH_DASHBOARD
);
cy
.
route
(
`/api/v1/dashboard/1`
).
as
(
'
dashboardGet
'
);
cy
.
intercept
(
`/api/v1/dashboard/1`
).
as
(
'
dashboardGet
'
);
cy
.
get
(
'
.dashboard-grid
'
,
{
timeout
:
50000
})
.
should
(
'
be.visible
'
)
// wait for 50 secs to load dashboard
.
then
(()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/fav_star.test.js
浏览文件 @
29ad78e1
...
...
@@ -25,10 +25,9 @@ describe('Dashboard add to favorite', () => {
let
isFavoriteDashboard
=
false
;
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
CHECK_DASHBOARD_FAVORITE_ENDPOINT
).
as
(
'
countFavStar
'
);
cy
.
intercept
(
CHECK_DASHBOARD_FAVORITE_ENDPOINT
).
as
(
'
countFavStar
'
);
cy
.
visit
(
WORLD_HEALTH_DASHBOARD
);
cy
.
wait
(
'
@countFavStar
'
).
then
(
xhr
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/filter.test.ts
浏览文件 @
29ad78e1
...
...
@@ -16,13 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
import
{
WORLD_HEALTH_DASHBOARD
}
from
'
./dashboard.helper
'
;
import
{
getChartAliases
,
DASHBOARD_CHART_ALIAS_PREFIX
,
isLegacyResponse
,
}
from
'
../../utils/vizPlugins
'
;
import
readResponseBlob
from
'
../../utils/readResponseBlob
'
;
parsePostForm
,
}
from
'
cypress/utils
'
;
import
{
WORLD_HEALTH_DASHBOARD
}
from
'
./dashboard.helper
'
;
interface
Slice
{
slice_id
:
number
;
...
...
@@ -43,7 +43,6 @@ describe('Dashboard filter', () => {
const
getAlias
=
(
id
:
number
)
=>
`@
${
DASHBOARD_CHART_ALIAS_PREFIX
}${
id
}
`
;
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
WORLD_HEALTH_DASHBOARD
);
...
...
@@ -87,18 +86,17 @@ describe('Dashboard filter', () => {
cy
.
get
(
'
.filter_box button
'
).
click
({
force
:
true
});
cy
.
wait
(
aliases
.
filter
(
x
=>
x
!==
getAlias
(
filterId
))).
then
(
requests
=>
Promise
.
all
(
requests
.
map
(
async
xhr
=>
{
expect
(
xhr
.
status
).
to
.
eq
(
200
);
const
responseBody
=
await
readResponseBlob
(
xhr
.
response
.
body
);
requests
.
map
(
async
({
response
,
request
})
=>
{
const
responseBody
=
response
?.
body
;
let
requestFilter
;
if
(
isLegacyResponse
(
responseBody
))
{
const
requestFormData
=
xhr
.
request
.
body
as
FormData
;
const
requestFormData
=
parsePostForm
(
request
.
body
)
;
const
requestParams
=
JSON
.
parse
(
requestFormData
.
get
(
'
form_data
'
)
as
string
,
requestFormData
.
form_data
as
string
,
);
requestFilter
=
requestParams
.
extra_filters
[
0
];
}
else
{
requestFilter
=
xhr
.
request
.
body
.
queries
[
0
].
filters
[
0
];
requestFilter
=
request
.
body
.
queries
[
0
].
filters
[
0
];
}
expect
(
requestFilter
).
deep
.
eq
({
col
:
'
region
'
,
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/load.test.js
浏览文件 @
29ad78e1
...
...
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
import
readResponseBlob
from
'
../../utils/readResponseBlob
'
;
import
{
getChartAliases
,
isLegacyResponse
,
...
...
@@ -28,7 +27,6 @@ describe('Dashboard load', () => {
let
dashboard
;
let
aliases
;
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
WORLD_HEALTH_DASHBOARD
);
...
...
@@ -46,16 +44,15 @@ describe('Dashboard load', () => {
// wait and verify one-by-one
cy
.
wait
(
aliases
).
then
(
requests
=>
Promise
.
all
(
requests
.
map
(
async
xhr
=>
{
expect
(
xhr
.
status
).
to
.
eq
(
200
);
const
responseBody
=
await
readResponseBlob
(
xhr
.
response
.
body
);
requests
.
map
(
async
({
response
,
request
})
=>
{
const
responseBody
=
response
?.
body
;
let
sliceId
;
if
(
isLegacyResponse
(
responseBody
))
{
expect
(
responseBody
).
to
.
have
.
property
(
'
errors
'
);
expect
(
responseBody
.
errors
.
length
).
to
.
eq
(
0
);
sliceId
=
responseBody
.
form_data
.
slice_id
;
}
else
{
sliceId
=
getSliceIdFromRequestUrl
(
xhr
.
url
);
sliceId
=
getSliceIdFromRequestUrl
(
request
.
url
);
responseBody
.
result
.
forEach
(
element
=>
{
expect
(
element
).
to
.
have
.
property
(
'
error
'
,
null
);
expect
(
element
).
to
.
have
.
property
(
'
status
'
,
'
success
'
);
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/markdown.test.ts
浏览文件 @
29ad78e1
...
...
@@ -20,7 +20,6 @@ import { TABBED_DASHBOARD, drag, resize } from './dashboard.helper';
describe
(
'
Dashboard edit markdown
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
TABBED_DASHBOARD
);
});
...
...
@@ -85,6 +84,6 @@ describe('Dashboard edit markdown', () => {
cy
.
get
(
'
@component-background-first
'
).
click
(
'
right
'
);
cy
.
get
(
'
[data-test="dashboard-component-chart-holder"]
'
)
.
find
(
'
.ace_content
'
)
.
should
(
'
not.
be.visible
'
);
.
should
(
'
not.
exist
'
);
});
});
superset-frontend/cypress-base/cypress/integration/dashboard/nativeFilters.test.ts
浏览文件 @
29ad78e1
...
...
@@ -21,7 +21,6 @@ import { TABBED_DASHBOARD } from './dashboard.helper';
describe
(
'
Nativefilters
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
TABBED_DASHBOARD
);
});
it
(
'
should show filter bar and allow user to create filters
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/save.test.js
浏览文件 @
29ad78e1
...
...
@@ -28,14 +28,15 @@ function openDashboardEditProperties() {
describe
(
'
Dashboard save action
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
WORLD_HEALTH_DASHBOARD
);
cy
.
get
(
'
#app
'
).
then
(
data
=>
{
const
bootstrapData
=
JSON
.
parse
(
data
[
0
].
dataset
.
bootstrap
);
const
dashboard
=
bootstrapData
.
dashboard_data
;
const
dashboardId
=
dashboard
.
id
;
cy
.
route
(
'
POST
'
,
`/superset/copy_dash/
${
dashboardId
}
/`
).
as
(
'
copyRequest
'
);
cy
.
intercept
(
'
POST
'
,
`/superset/copy_dash/
${
dashboardId
}
/`
).
as
(
'
copyRequest
'
,
);
cy
.
get
(
'
[data-test="more-horiz"]
'
).
trigger
(
'
click
'
,
{
force
:
true
});
cy
.
get
(
'
[data-test="save-as-menu-item"]
'
).
trigger
(
'
click
'
,
{
...
...
@@ -56,35 +57,37 @@ describe('Dashboard save action', () => {
});
it
(
'
should save/overwrite dashboard
'
,
()
=>
{
cy
.
get
(
'
[data-test="grid-row-background--transparent"]
'
).
within
(()
=>
{
cy
.
get
(
'
.box_plot
'
,
{
timeout
:
10000
}).
should
(
'
be.visible
'
);
});
// should load chart
cy
.
get
(
'
.dashboard-grid
'
,
{
timeout
:
50000
});
// wait for 50 secs
cy
.
get
(
'
.dashboard-grid
'
,
{
timeout
:
30000
});
cy
.
get
(
'
.box_plot
'
).
should
(
'
be.visible
'
);
// remove box_plot chart from dashboard
cy
.
get
(
'
[data-test="edit-alt"]
'
).
click
({
timeout
:
5000
});
cy
.
get
(
'
[data-test="dashboard-delete-component-button"]
'
)
.
should
(
'
be.visible
'
,
{
timeout
:
10000
})
.
last
()
.
trigger
(
'
click
'
);
.
trigger
(
'
moustenter
'
)
.
click
();
cy
.
get
(
'
[data-test="grid-container"]
'
)
.
find
(
'
.box_plot
'
)
.
should
(
'
not.
be.visible
'
);
.
should
(
'
not.
exist
'
);
cy
.
route
(
'
POST
'
,
'
/superset/save_dash/**/
'
).
as
(
'
saveRequest
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/save_dash/**/
'
).
as
(
'
saveRequest
'
);
cy
.
get
(
'
[data-test="dashboard-header"]
'
)
.
find
(
'
[data-test="header-save-button"]
'
)
.
contains
(
'
Save
'
)
.
trigger
(
'
click
'
,
{
force
:
true
});
.
click
();
// go back to view mode
cy
.
wait
(
'
@saveRequest
'
);
cy
.
get
(
'
[data-test="dashboard-header"]
'
)
.
find
(
'
[data-test="edit-alt"]
'
)
.
click
();
// deleted boxplot should still not exist
cy
.
get
(
'
[data-test="grid-container"]
'
)
.
find
(
'
.box_plot
'
,
{
timeout
:
20000
})
.
should
(
'
not.
be.visible
'
);
.
should
(
'
not.
exist
'
);
});
// TODO: Fix broken test
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/tabs.test.js
浏览文件 @
29ad78e1
...
...
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
import
{
interceptChart
,
parsePostForm
}
from
'
cypress/utils
'
;
import
{
TABBED_DASHBOARD
}
from
'
./dashboard.helper
'
;
describe
(
'
Dashboard tabs
'
,
()
=>
{
...
...
@@ -23,7 +24,6 @@ describe('Dashboard tabs', () => {
let
treemapId
;
let
linechartId
;
let
boxplotId
;
let
dashboardId
;
// cypress can not handle window.scrollTo
// https://github.com/cypress-io/cypress/issues/2761
...
...
@@ -35,7 +35,6 @@ describe('Dashboard tabs', () => {
};
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
TABBED_DASHBOARD
);
...
...
@@ -43,7 +42,6 @@ describe('Dashboard tabs', () => {
cy
.
get
(
'
#app
'
).
then
(
data
=>
{
const
bootstrapData
=
JSON
.
parse
(
data
[
0
].
dataset
.
bootstrap
);
const
dashboard
=
bootstrapData
.
dashboard_data
;
dashboardId
=
dashboard
.
id
;
filterId
=
dashboard
.
slices
.
find
(
slice
=>
slice
.
form_data
.
viz_type
===
'
filter_box
'
,
).
slice_id
;
...
...
@@ -56,38 +54,10 @@ describe('Dashboard tabs', () => {
linechartId
=
dashboard
.
slices
.
find
(
slice
=>
slice
.
form_data
.
viz_type
===
'
line
'
,
).
slice_id
;
const
filterFormdata
=
{
slice_id
:
filterId
,
};
const
filterRequest
=
`/superset/explore_json/?form_data=
${
JSON
.
stringify
(
filterFormdata
,
)}
&dashboard_id=
${
dashboardId
}
`
;
cy
.
route
(
'
POST
'
,
filterRequest
).
as
(
'
filterRequest
'
);
const
treemapFormdata
=
{
slice_id
:
treemapId
,
};
const
treemapRequest
=
`/superset/explore_json/?form_data=
${
JSON
.
stringify
(
treemapFormdata
,
)}
&dashboard_id=
${
dashboardId
}
`
;
cy
.
route
(
'
POST
'
,
treemapRequest
).
as
(
'
treemapRequest
'
);
const
linechartFormdata
=
{
slice_id
:
linechartId
,
};
const
linechartRequest
=
`/superset/explore_json/?form_data=
${
JSON
.
stringify
(
linechartFormdata
,
)}
&dashboard_id=
${
dashboardId
}
`
;
cy
.
route
(
'
POST
'
,
linechartRequest
).
as
(
'
linechartRequest
'
);
const
boxplotFormdata
=
{
slice_id
:
boxplotId
,
};
const
boxplotRequest
=
`/superset/explore_json/?form_data=
${
JSON
.
stringify
(
boxplotFormdata
,
)}
&dashboard_id=
${
dashboardId
}
`
;
cy
.
route
(
'
POST
'
,
boxplotRequest
).
as
(
'
boxplotRequest
'
);
interceptChart
(
filterId
).
as
(
'
filterRequest
'
);
interceptChart
(
treemapId
).
as
(
'
treemapRequest
'
);
interceptChart
(
linechartId
).
as
(
'
linechartRequest
'
);
interceptChart
(
boxplotId
,
false
).
as
(
'
boxplotRequest
'
);
});
});
...
...
@@ -129,10 +99,8 @@ describe('Dashboard tabs', () => {
.
should
(
'
be.visible
'
);
cy
.
get
(
'
[data-test="grid-container"]
'
)
.
find
(
'
.box_plot
'
)
.
should
(
'
not.be.visible
'
);
cy
.
get
(
'
[data-test="grid-container"]
'
)
.
find
(
'
.line
'
)
.
should
(
'
not.be.visible
'
);
.
should
(
'
not.exist
'
);
cy
.
get
(
'
[data-test="grid-container"]
'
).
find
(
'
.line
'
).
should
(
'
not.exist
'
);
// click row level tab, see 1 more chart
cy
.
get
(
'
[data-test="dashboard-component-tabs"]
'
)
...
...
@@ -164,67 +132,54 @@ describe('Dashboard tabs', () => {
cy
.
wait
(
'
@treemapRequest
'
);
// apply filter
cy
.
get
(
'
.Select__control
'
).
first
().
should
(
'
be.visible
'
);
cy
.
get
(
'
.Select__control
'
).
first
().
click
({
force
:
true
});
cy
.
get
(
'
.Select__control input[type=text]
'
)
.
first
()
.
should
(
'
be.visible
'
)
.
type
(
'
South Asia{enter}
'
,
{
force
:
true
});
cy
.
get
(
'
.Select__control
'
).
first
().
should
(
'
be.visible
'
).
click
();
cy
.
get
(
'
.Select__control input[type=text]
'
).
first
().
focus
().
type
(
'
South
'
);
cy
.
get
(
'
.Select__option
'
).
contains
(
'
South Asia
'
).
click
();
cy
.
get
(
'
.filter_box button:not(:disabled)
'
).
contains
(
'
Apply
'
).
click
();
// send new query from same tab
cy
.
wait
(
'
@treemapRequest
'
).
then
(
xhr
=>
{
const
request
FormData
=
xhr
.
request
.
body
;
const
requestParams
=
JSON
.
parse
(
request
FormData
.
get
(
'
form_data
'
)
);
cy
.
wait
(
'
@treemapRequest
'
).
then
(
({
request
})
=>
{
const
request
Body
=
parsePostForm
(
request
.
body
)
;
const
requestParams
=
JSON
.
parse
(
request
Body
.
form_data
);
expect
(
requestParams
.
extra_filters
[
0
]).
deep
.
eq
({
col
:
'
region
'
,
op
:
'
IN
'
,
val
:
[
'
South Asia
'
]
,
op
:
'
==
'
,
val
:
'
South Asia
'
,
});
});
// click row level tab, send 1 more query
cy
.
get
(
'
[data-test="dashboard-component-tabs"]
'
)
.
last
()
.
find
(
'
[data-test="nav-list"]
'
)
.
children
()
.
as
(
'
row-level-tabs
'
);
cy
.
get
(
'
@row-level-tabs
'
).
last
().
click
();
cy
.
get
(
'
.ant-tabs-tab
'
).
contains
(
'
row tab 2
'
).
click
();
cy
.
wait
(
'
@linechartRequest
'
).
then
(
xhr
=>
{
const
request
FormData
=
xhr
.
request
.
body
;
const
requestParams
=
JSON
.
parse
(
request
FormData
.
get
(
'
form_data
'
)
);
cy
.
wait
(
'
@linechartRequest
'
).
then
(
({
request
})
=>
{
const
request
Body
=
parsePostForm
(
request
.
body
)
;
const
requestParams
=
JSON
.
parse
(
request
Body
.
form_data
);
expect
(
requestParams
.
extra_filters
[
0
]).
deep
.
eq
({
col
:
'
region
'
,
op
:
'
IN
'
,
val
:
[
'
South Asia
'
]
,
op
:
'
==
'
,
val
:
'
South Asia
'
,
});
});
// click top level tab, send 1 more query
cy
.
get
(
'
[data-test="dashboard-component-tabs"]
'
)
.
first
()
.
find
(
'
[data-test="nav-list"]
'
)
.
children
()
.
as
(
'
top-level-tabs
'
);
cy
.
get
(
'
.ant-tabs-tab
'
).
contains
(
'
Tab B
'
).
click
();
cy
.
get
(
'
@top-level-tabs
'
).
last
().
click
();
cy
.
wait
(
'
@boxplotRequest
'
).
then
(
xhr
=>
{
const
requestFormData
=
xhr
.
request
.
body
;
const
requestParams
=
JSON
.
parse
(
requestFormData
.
get
(
'
form_data
'
));
expect
(
requestParams
.
extra_filters
[
0
]).
deep
.
eq
({
cy
.
wait
(
'
@boxplotRequest
'
).
then
(({
request
})
=>
{
const
requestBody
=
request
.
body
;
const
requestParams
=
requestBody
.
queries
[
0
];
expect
(
requestParams
.
filters
[
0
]).
deep
.
eq
({
col
:
'
region
'
,
op
:
'
IN
'
,
val
:
[
'
South Asia
'
]
,
op
:
'
==
'
,
val
:
'
South Asia
'
,
});
});
// navigate to filter and clear filter
cy
.
get
(
'
@top-level-tabs
'
).
first
().
click
();
cy
.
get
(
'
@top-level-tabs
'
).
first
().
click
();
cy
.
get
(
'
.ant-tabs-tab
'
).
contains
(
'
Tab A
'
).
click
();
cy
.
get
(
'
.ant-tabs-tab
'
).
contains
(
'
row tab 1
'
).
click
();
cy
.
get
(
'
.Select__clear-indicator
'
).
click
();
cy
.
get
(
'
.filter_box button:not(:disabled)
'
).
contains
(
'
Apply
'
).
click
();
// trigger 1 new query
cy
.
wait
(
'
@treemapRequest
'
);
...
...
superset-frontend/cypress-base/cypress/integration/dashboard/url_params.test.js
浏览文件 @
29ad78e1
...
...
@@ -16,16 +16,18 @@
* specific language governing permissions and limitations
* under the License.
*/
import
{
isLegacyResponse
,
getChartAliases
,
parsePostForm
,
}
from
'
cypress/utils
'
;
import
{
WORLD_HEALTH_DASHBOARD
}
from
'
./dashboard.helper
'
;
import
{
isLegacyResponse
,
getChartAliases
}
from
'
../../utils/vizPlugins
'
;
import
readResponseBlob
from
'
../../utils/readResponseBlob
'
;
describe
(
'
Dashboard form data
'
,
()
=>
{
const
urlParams
=
{
param1
:
'
123
'
,
param2
:
'
abc
'
};
let
dashboard
;
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
visit
(
WORLD_HEALTH_DASHBOARD
,
{
qs
:
urlParams
});
...
...
@@ -41,16 +43,15 @@ describe('Dashboard form data', () => {
// wait and verify one-by-one
cy
.
wait
(
aliases
,
{
timeout
:
18000
}).
then
(
requests
=>
Promise
.
all
(
requests
.
map
(
async
xhr
=>
{
expect
(
xhr
.
status
).
to
.
eq
(
200
);
const
responseBody
=
await
readResponseBlob
(
xhr
.
response
.
body
);
requests
.
map
(
async
({
response
,
request
})
=>
{
const
responseBody
=
response
?.
body
;
if
(
isLegacyResponse
(
responseBody
))
{
const
requestFormData
=
xhr
.
request
.
body
;
const
requestParams
=
JSON
.
parse
(
requestFormData
.
get
(
'
form_data
'
));
const
requestParams
=
JSON
.
parse
(
parsePostForm
(
request
.
body
).
form_data
,
);
expect
(
requestParams
.
url_params
).
deep
.
eq
(
urlParams
);
}
else
{
xhr
.
request
.
body
.
queries
.
forEach
(
query
=>
{
request
.
body
.
queries
.
forEach
(
query
=>
{
expect
(
query
.
url_params
).
deep
.
eq
(
urlParams
);
});
}
...
...
superset-frontend/cypress-base/cypress/integration/dashboard_list/card_view.test.ts
浏览文件 @
29ad78e1
...
...
@@ -21,7 +21,6 @@ import { DASHBOARD_LIST } from './dashboard_list.helper';
describe
(
'
Dashboard card view
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
DASHBOARD_LIST
);
cy
.
get
(
'
[data-test="card-view"]
'
).
click
();
});
...
...
superset-frontend/cypress-base/cypress/integration/dashboard_list/filter.test.ts
浏览文件 @
29ad78e1
...
...
@@ -21,7 +21,6 @@ import { DASHBOARD_LIST } from './dashboard_list.helper';
describe
(
'
dashboard filters card view
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
DASHBOARD_LIST
);
cy
.
get
(
'
[data-test="card-view"]
'
).
click
();
});
...
...
@@ -74,7 +73,6 @@ describe('dashboard filters card view', () => {
describe
(
'
dashboard filters list view
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
DASHBOARD_LIST
);
cy
.
get
(
'
[data-test="list-view"]
'
).
click
();
});
...
...
superset-frontend/cypress-base/cypress/integration/dashboard_list/list_view.test.ts
浏览文件 @
29ad78e1
...
...
@@ -21,7 +21,6 @@ import { DASHBOARD_LIST } from './dashboard_list.helper';
describe
(
'
dashboard list view
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
DASHBOARD_LIST
);
cy
.
get
(
'
[data-test="list-view"]
'
).
click
();
});
...
...
superset-frontend/cypress-base/cypress/integration/database/modal.test.ts
浏览文件 @
29ad78e1
...
...
@@ -20,7 +20,6 @@ import { DATABASE_LIST } from './helper';
describe
(
'
Add database
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
});
...
...
superset-frontend/cypress-base/cypress/integration/explore/AdhocFilters.test.ts
浏览文件 @
29ad78e1
...
...
@@ -19,10 +19,9 @@
describe
(
'
AdhocFilters
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
route
(
'
GET
'
,
'
/superset/filter/table/*/name
'
).
as
(
'
filterValues
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/filter/table/*/name
'
).
as
(
'
filterValues
'
);
cy
.
visitChartByName
(
'
Boys
'
);
// a table chart
cy
.
verifySliceSuccess
({
waitAlias
:
'
@postJson
'
});
});
...
...
superset-frontend/cypress-base/cypress/integration/explore/AdhocMetrics.test.ts
浏览文件 @
29ad78e1
...
...
@@ -19,9 +19,8 @@
describe
(
'
AdhocMetrics
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
visitChartByName
(
'
Num Births Trend
'
);
cy
.
verifySliceSuccess
({
waitAlias
:
'
@postJson
'
});
});
...
...
superset-frontend/cypress-base/cypress/integration/explore/advanced.test.ts
浏览文件 @
29ad78e1
...
...
@@ -19,9 +19,8 @@
describe
(
'
Advanced analytics
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
});
it
(
'
Create custom time compare
'
,
()
=>
{
...
...
@@ -60,9 +59,8 @@ describe('Advanced analytics', () => {
describe
(
'
Annotations
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
});
it
(
'
Create formula annotation y-axis goal line
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/chart.test.js
浏览文件 @
29ad78e1
...
...
@@ -21,8 +21,7 @@ import { FORM_DATA_DEFAULTS, NUM_METRIC } from './visualizations/shared.helper';
describe
(
'
No Results
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
No results message shows up
'
,
()
=>
{
...
...
@@ -43,9 +42,7 @@ describe('No Results', () => {
};
cy
.
visitChartByParams
(
JSON
.
stringify
(
formData
));
cy
.
wait
(
'
@getJson
'
).
then
(
async
xhr
=>
{
expect
(
xhr
.
status
).
to
.
eq
(
200
);
});
cy
.
wait
(
'
@getJson
'
).
its
(
'
response.statusCode
'
).
should
(
'
eq
'
,
200
);
cy
.
get
(
'
div.chart-container
'
).
contains
(
'
No Results
'
);
});
});
superset-frontend/cypress-base/cypress/integration/explore/control.test.ts
浏览文件 @
29ad78e1
...
...
@@ -29,9 +29,8 @@ describe('Datasource control', () => {
let
numScripts
=
0
;
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
visitChartByName
(
'
Num Births Trend
'
);
cy
.
verifySliceSuccess
({
waitAlias
:
'
@postJson
'
});
...
...
@@ -91,9 +90,8 @@ describe('Datasource control', () => {
describe
(
'
VizType control
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
});
it
(
'
Can change vizType
'
,
()
=>
{
...
...
@@ -123,9 +121,8 @@ describe('VizType control', () => {
describe
(
'
Time range filter
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
});
it
(
'
Advanced time_range params
'
,
()
=>
{
...
...
@@ -237,10 +234,9 @@ describe('Time range filter', () => {
describe
(
'
Groupby control
'
,
()
=>
{
it
(
'
Set groupby
'
,
()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
visitChartByName
(
'
Num Births Trend
'
);
cy
.
verifySliceSuccess
({
waitAlias
:
'
@postJson
'
});
...
...
superset-frontend/cypress-base/cypress/integration/explore/filter_box.test.js
浏览文件 @
29ad78e1
...
...
@@ -27,9 +27,8 @@ describe('Edit FilterBox Chart', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work with default date filter
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/link.test.js
浏览文件 @
29ad78e1
...
...
@@ -30,9 +30,8 @@ const apiURL = (endpoint, queryObject) =>
describe
(
'
Test explore links
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
cy
.
intercept
(
'
GET
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
postJson
'
);
});
it
(
'
Open and close view query modal
'
,
()
=>
{
...
...
@@ -50,7 +49,7 @@ describe('Test explore links', () => {
});
it
(
'
Visit short link
'
,
()
=>
{
cy
.
route
(
'
POST
'
,
'
r/shortner/
'
).
as
(
'
getShortUrl
'
);
cy
.
intercept
(
'
POST
'
,
'
r/shortner/
'
).
as
(
'
getShortUrl
'
);
cy
.
visitChartByName
(
'
Growth Rate
'
);
cy
.
verifySliceSuccess
({
waitAlias
:
'
@postJson
'
});
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/area.test.js
浏览文件 @
29ad78e1
...
...
@@ -16,8 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
import
readResponseBlob
from
'
../../../utils/readResponseBlob
'
;
describe
(
'
Visualization > Area
'
,
()
=>
{
const
AREA_FORM_DATA
=
{
datasource
:
'
2__table
'
,
...
...
@@ -58,9 +56,8 @@ describe('Visualization > Area', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work without groupby
'
,
()
=>
{
...
...
@@ -96,11 +93,8 @@ describe('Visualization > Area', () => {
}),
);
cy
.
wait
(
'
@getJson
'
).
then
(
async
xhr
=>
{
cy
.
verifyResponseCodes
(
xhr
);
const
responseBody
=
await
readResponseBlob
(
xhr
.
response
.
body
);
cy
.
wait
(
'
@getJson
'
).
then
(
async
({
response
})
=>
{
const
responseBody
=
response
?.
body
;
// Make sure data is sorted correctly
const
firstRow
=
responseBody
.
data
[
0
].
values
;
const
secondRow
=
responseBody
.
data
[
1
].
values
;
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/big_number.test.js
浏览文件 @
29ad78e1
...
...
@@ -49,8 +49,7 @@ describe('Visualization > Big Number with Trendline', () => {
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/big_number_total.test.js
浏览文件 @
29ad78e1
...
...
@@ -17,9 +17,6 @@
* under the License.
*/
import
{
FORM_DATA_DEFAULTS
,
NUM_METRIC
}
from
'
./shared.helper
'
;
import
readResponseBlob
from
'
../../../utils/readResponseBlob
'
;
// Big Number Total
describe
(
'
Visualization > Big Number Total
'
,
()
=>
{
const
BIG_NUMBER_DEFAULTS
=
{
...
...
@@ -29,8 +26,7 @@ describe('Visualization > Big Number Total', () => {
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
Test big number chart with adhoc metric
'
,
()
=>
{
...
...
@@ -74,11 +70,9 @@ describe('Visualization > Big Number Total', () => {
};
cy
.
visitChartByParams
(
JSON
.
stringify
(
formData
));
cy
.
wait
([
'
@getJson
'
]).
then
(
async
xhr
=>
{
cy
.
verifyResponseCodes
(
xhr
);
cy
.
wait
([
'
@getJson
'
]).
then
(
async
({
response
})
=>
{
cy
.
verifySliceContainer
();
const
responseBody
=
await
readResponseBlob
(
xhr
.
response
.
body
);
const
responseBody
=
response
?.
body
;
expect
(
responseBody
.
query
).
not
.
contains
(
formData
.
groupby
[
0
]);
});
});
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/box_plot.test.js
浏览文件 @
29ad78e1
...
...
@@ -38,9 +38,8 @@ describe('Visualization > Box Plot', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/api/v1/chart/data*
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/api/v1/chart/data*
'
).
as
(
'
getJson
'
);
});
it
(
'
should work
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/bubble.test.js
浏览文件 @
29ad78e1
...
...
@@ -52,9 +52,8 @@ describe('Visualization > Bubble', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
// Number of circles are pretty unstable when there are a lot of circles
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/compare.test.js
浏览文件 @
29ad78e1
...
...
@@ -52,9 +52,8 @@ describe('Visualization > Compare', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work without groupby
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/dist_bar.test.js
浏览文件 @
29ad78e1
...
...
@@ -23,8 +23,7 @@ describe('Visualization > Distribution bar chart', () => {
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work with adhoc metric
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/dual_line.test.js
浏览文件 @
29ad78e1
...
...
@@ -40,9 +40,8 @@ describe('Visualization > Dual Line', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/histogram.test.js
浏览文件 @
29ad78e1
...
...
@@ -42,9 +42,8 @@ describe('Visualization > Histogram', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work without groupby
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/line.test.ts
浏览文件 @
29ad78e1
...
...
@@ -23,8 +23,7 @@ describe('Visualization > Line', () => {
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should show validator error when no metric
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/pie.test.js
浏览文件 @
29ad78e1
...
...
@@ -42,9 +42,8 @@ describe('Visualization > Pie', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/api/v1/chart/data*
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/api/v1/chart/data*
'
).
as
(
'
getJson
'
);
});
it
(
'
should work with ad-hoc metric
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/pivot_table.test.js
浏览文件 @
29ad78e1
...
...
@@ -59,9 +59,8 @@ describe('Visualization > Pivot Table', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work with single groupby
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/sankey.test.js
浏览文件 @
29ad78e1
...
...
@@ -38,9 +38,8 @@ describe('Visualization > Sankey', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/sunburst.test.js
浏览文件 @
29ad78e1
...
...
@@ -37,9 +37,8 @@ describe('Visualization > Sunburst', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work without secondary metric
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/table.test.ts
浏览文件 @
29ad78e1
...
...
@@ -23,11 +23,14 @@ import {
MAX_STATE
,
SIMPLE_FILTER
,
}
from
'
./shared.helper
'
;
import
readResponseBlob
from
'
../../../utils/readResponseBlob
'
;
// Table
describe
(
'
Visualization > Table
'
,
()
=>
{
const
VIZ_DEFAULTS
=
{
...
FORM_DATA_DEFAULTS
,
viz_type
:
'
table
'
};
const
VIZ_DEFAULTS
=
{
...
FORM_DATA_DEFAULTS
,
viz_type
:
'
table
'
,
row_limit
:
1000
,
};
const
PERCENT_METRIC
=
{
expressionType
:
'
SQL
'
,
...
...
@@ -41,8 +44,7 @@ describe('Visualization > Table', () => {
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
Use default time column
'
,
()
=>
{
...
...
@@ -98,7 +100,7 @@ describe('Visualization > Table', () => {
});
cy
.
verifySliceSuccess
({
waitAlias
:
'
@getJson
'
,
querySubstring
:
/group
by.*name/
,
querySubstring
:
/group
by.*name/i
,
chartSelector
:
'
table
'
,
});
});
...
...
@@ -114,37 +116,34 @@ describe('Visualization > Table', () => {
});
cy
.
verifySliceSuccess
({
waitAlias
:
'
@getJson
'
,
querySubstring
:
/group
by.*name/
,
querySubstring
:
/group
by.*name/i
,
chartSelector
:
'
table
'
,
});
});
it
(
'
Handle sorting correctly
'
,
()
=>
{
// should handle sorting correctly
cy
.
get
(
'
.chart-container th
'
).
contains
(
'
name
'
).
click
();
cy
.
get
(
'
.chart-container td:nth-child(2):eq(0)
'
).
contains
(
'
A
aron
'
);
cy
.
get
(
'
.chart-container td:nth-child(2):eq(0)
'
).
contains
(
'
A
bigail
'
);
cy
.
get
(
'
.chart-container th
'
).
contains
(
'
Time
'
).
click
().
click
();
cy
.
get
(
'
.chart-container td:nth-child(1):eq(0)
'
).
contains
(
'
2008
'
);
});
it
(
'
Test table with percent metrics and groupby
'
,
()
=>
{
c
onst
formData
=
{
c
y
.
visitChartByParams
(
{
...
VIZ_DEFAULTS
,
percent_metrics
:
PERCENT_METRIC
,
metrics
:
[],
groupby
:
[
'
name
'
],
};
cy
.
visitChartByParams
(
JSON
.
stringify
(
formData
));
});
cy
.
verifySliceSuccess
({
waitAlias
:
'
@getJson
'
,
chartSelector
:
'
table
'
});
});
it
(
'
Test table with groupby order desc
'
,
()
=>
{
c
onst
formData
=
{
c
y
.
visitChartByParams
(
{
...
VIZ_DEFAULTS
,
metrics
:
NUM_METRIC
,
groupby
:
[
'
name
'
],
order_desc
:
true
,
};
cy
.
visitChartByParams
(
JSON
.
stringify
(
formData
));
});
cy
.
verifySliceSuccess
({
waitAlias
:
'
@getJson
'
,
chartSelector
:
'
table
'
});
});
...
...
@@ -157,37 +156,34 @@ describe('Visualization > Table', () => {
row_limit
:
limit
,
};
cy
.
visitChartByParams
(
JSON
.
stringify
(
formData
));
cy
.
wait
(
'
@getJson
'
).
then
(
async
xhr
=>
{
cy
.
verifyResponseCodes
(
xhr
);
cy
.
wait
(
'
@getJson
'
).
then
(({
response
})
=>
{
cy
.
verifySliceContainer
(
'
table
'
);
const
responseBody
=
await
readResponseBlob
(
xhr
.
response
.
body
);
expect
(
responseBody
.
data
.
records
.
length
).
to
.
eq
(
limit
);
expect
(
response
?.
body
.
data
.
records
.
length
).
to
.
eq
(
limit
);
});
cy
.
get
(
'
span.label-danger
'
).
contains
(
'
10 rows
'
);
});
it
(
'
Test table with columns and row limit
'
,
()
=>
{
c
onst
formData
=
{
c
y
.
visitChartByParams
(
{
...
VIZ_DEFAULTS
,
// should still work when query_mode is not-set/invalid
query_mode
:
undefined
,
all_columns
:
[
'
name
'
],
metrics
:
[],
row_limit
:
10
,
};
cy
.
visitChartByParams
(
JSON
.
stringify
(
formData
));
});
// should display in raw records mode
cy
.
get
(
'
div[data-test="query_mode"] .btn.active
'
).
contains
(
'
Raw Records
'
);
cy
.
get
(
'
div[data-test="all_columns"]
'
).
should
(
'
be.visible
'
);
cy
.
get
(
'
div[data-test="groupby"]
'
).
should
(
'
not.
be.visible
'
);
cy
.
get
(
'
div[data-test="groupby"]
'
).
should
(
'
not.
exist
'
);
cy
.
verifySliceSuccess
({
waitAlias
:
'
@getJson
'
,
chartSelector
:
'
table
'
});
// should allow switch to aggregate mode
cy
.
get
(
'
div[data-test="query_mode"] .btn
'
).
contains
(
'
Aggregate
'
).
click
();
cy
.
get
(
'
div[data-test="query_mode"] .btn.active
'
).
contains
(
'
Aggregate
'
);
cy
.
get
(
'
div[data-test="all_columns"]
'
).
should
(
'
not.
be.visible
'
);
cy
.
get
(
'
div[data-test="all_columns"]
'
).
should
(
'
not.
exist
'
);
cy
.
get
(
'
div[data-test="groupby"]
'
).
should
(
'
be.visible
'
);
});
...
...
@@ -204,10 +200,9 @@ describe('Visualization > Table', () => {
};
cy
.
visitChartByParams
(
JSON
.
stringify
(
formData
));
cy
.
wait
(
'
@getJson
'
).
then
(
async
xhr
=>
{
cy
.
verifyResponseCodes
(
xhr
);
cy
.
wait
(
'
@getJson
'
).
then
(({
response
})
=>
{
cy
.
verifySliceContainer
(
'
table
'
);
const
responseBody
=
await
readResponseBlob
(
xhr
.
response
.
body
)
;
const
responseBody
=
response
?.
body
;
const
{
records
}
=
responseBody
.
data
;
expect
(
records
[
0
].
num
).
greaterThan
(
records
[
records
.
length
-
1
].
num
);
});
...
...
@@ -233,7 +228,7 @@ describe('Visualization > Table', () => {
cy
.
visitChartByParams
(
JSON
.
stringify
(
formData
));
cy
.
verifySliceSuccess
({
waitAlias
:
'
@getJson
'
,
querySubstring
:
formData
.
groupby
[
0
]
,
querySubstring
:
/group by.*state/i
,
chartSelector
:
'
table
'
,
});
cy
.
get
(
'
td
'
).
contains
(
/
\d
*%/
);
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/time_table.js
浏览文件 @
29ad78e1
...
...
@@ -23,8 +23,7 @@ describe('Visualization > Time TableViz', () => {
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
Test time series table multiple metrics last year total
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/treemap.test.js
浏览文件 @
29ad78e1
...
...
@@ -43,9 +43,8 @@ describe('Visualization > Treemap', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/explore/visualizations/world_map.test.js
浏览文件 @
29ad78e1
...
...
@@ -40,9 +40,8 @@ describe('Visualization > World Map', () => {
}
beforeEach
(()
=>
{
cy
.
server
();
cy
.
login
();
cy
.
route
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
cy
.
intercept
(
'
POST
'
,
'
/superset/explore_json/**
'
).
as
(
'
getJson
'
);
});
it
(
'
should work with ad-hoc metric
'
,
()
=>
{
...
...
superset-frontend/cypress-base/cypress/integration/sqllab/query.test.ts
浏览文件 @
29ad78e1
...
...
@@ -26,7 +26,6 @@ function parseClockStr(node: JQuery) {
describe
(
'
SqlLab query panel
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
'
/superset/sqllab
'
);
});
...
...
@@ -43,7 +42,7 @@ describe('SqlLab query panel', () => {
expanded_columns
:
[],
};
cy
.
route
({
cy
.
intercept
({
method
:
'
POST
'
,
url
:
'
/superset/sql_json/
'
,
delay
:
1000
,
...
...
@@ -93,8 +92,8 @@ describe('SqlLab query panel', () => {
});
it
.
skip
(
'
successfully saves a query
'
,
()
=>
{
cy
.
route
(
'
savedqueryviewapi/**
'
).
as
(
'
getSavedQuery
'
);
cy
.
route
(
'
superset/tables/**
'
).
as
(
'
getTables
'
);
cy
.
intercept
(
'
savedqueryviewapi/**
'
).
as
(
'
getSavedQuery
'
);
cy
.
intercept
(
'
superset/tables/**
'
).
as
(
'
getTables
'
);
const
query
=
'
SELECT ds, gender, name, num FROM main.birth_names ORDER BY name LIMIT 3
'
;
...
...
superset-frontend/cypress-base/cypress/integration/sqllab/sourcePanel.index.test.js
浏览文件 @
29ad78e1
...
...
@@ -21,14 +21,13 @@ import { selectResultsTab } from './sqllab.helper';
describe
(
'
SqlLab datasource panel
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
'
/superset/sqllab
'
);
});
// TODO the test bellow is flaky, and has been disabled for the time being
// (notice the `it.skip`)
it
.
skip
(
'
creates a table preview when a database, schema, and table are selected
'
,
()
=>
{
cy
.
route
(
'
/superset/table/**
'
).
as
(
'
tableMetadata
'
);
cy
.
intercept
(
'
/superset/table/**
'
).
as
(
'
tableMetadata
'
);
// it should have dropdowns to select database, schema, and table
cy
.
get
(
'
.sql-toolbar .Select
'
).
should
(
'
have.length
'
,
3
);
...
...
superset-frontend/cypress-base/cypress/integration/sqllab/tabs.test.js
浏览文件 @
29ad78e1
...
...
@@ -19,7 +19,6 @@
describe
(
'
SqlLab query tabs
'
,
()
=>
{
beforeEach
(()
=>
{
cy
.
login
();
cy
.
server
();
cy
.
visit
(
'
/superset/sqllab
'
);
});
...
...
superset-frontend/cypress-base/cypress/support/index.d.ts
浏览文件 @
29ad78e1
...
...
@@ -34,14 +34,6 @@ declare namespace Cypress {
visitChartByName
(
name
:
string
):
cy
;
visitChartById
(
id
:
number
):
cy
;
/**
* Verify a waitXHR response and parse response JSON.
*/
verifyResponseCodes
(
xhr
:
WaitXHR
,
callback
?:
(
result
:
JSONValue
)
=>
void
,
):
cy
;
/**
* Verify slice container renders.
*/
...
...
superset-frontend/cypress-base/cypress/support/index.ts
浏览文件 @
29ad78e1
...
...
@@ -17,7 +17,6 @@
* under the License.
*/
import
'
@cypress/code-coverage/support
'
;
import
readResponseBlob
from
'
../utils/readResponseBlob
'
;
const
BASE_EXPLORE_URL
=
'
/superset/explore/?form_data=
'
;
...
...
@@ -55,19 +54,8 @@ Cypress.Commands.add('visitChartById', chartId =>
Cypress
.
Commands
.
add
(
'
visitChartByParams
'
,
params
=>
{
const
queryString
=
typeof
params
===
'
string
'
?
params
:
JSON
.
stringify
(
params
);
return
cy
.
visit
(
`
${
BASE_EXPLORE_URL
}${
queryString
}
`
);
});
Cypress
.
Commands
.
add
(
'
verifyResponseCodes
'
,
(
xhr
:
XMLHttpRequest
,
callback
)
=>
{
// After a wait response check for valid response
expect
(
xhr
.
status
).
to
.
eq
(
200
);
readResponseBlob
(
xhr
.
response
.
body
).
then
(
res
=>
{
expect
(
res
).
to
.
not
.
be
.
instanceOf
(
Error
);
if
(
callback
)
{
callback
(
res
);
}
});
return
cy
;
const
url
=
`
${
BASE_EXPLORE_URL
}${
queryString
}
`
;
return
cy
.
visit
(
url
);
});
Cypress
.
Commands
.
add
(
'
verifySliceContainer
'
,
chartSelector
=>
{
...
...
@@ -98,20 +86,19 @@ Cypress.Commands.add(
chartSelector
:
JQuery
.
Selector
;
querySubstring
?:
string
|
RegExp
;
})
=>
{
cy
.
wait
(
waitAlias
).
then
(
xhr
=>
{
cy
.
wait
(
waitAlias
).
then
(
({
response
})
=>
{
cy
.
verifySliceContainer
(
chartSelector
);
cy
.
verifyResponseCodes
(
xhr
,
responseBody
=>
{
if
(
querySubstring
)
{
const
query
=
responseBody
?
(
responseBody
as
{
query
:
string
}).
query
:
''
;
if
(
querySubstring
instanceof
RegExp
)
{
expect
(
query
).
to
.
match
(
querySubstring
);
}
else
{
expect
(
query
).
to
.
contain
(
querySubstring
);
}
const
responseBody
=
response
?.
body
;
if
(
querySubstring
)
{
const
query
=
responseBody
?
(
responseBody
as
{
query
:
string
}).
query
:
''
;
if
(
querySubstring
instanceof
RegExp
)
{
expect
(
query
).
to
.
match
(
querySubstring
);
}
else
{
expect
(
query
).
to
.
contain
(
querySubstring
);
}
}
);
}
});
return
cy
;
},
...
...
superset-frontend/cypress-base/cypress/utils/
readResponseBlob
.ts
→
superset-frontend/cypress-base/cypress/utils/
index
.ts
浏览文件 @
29ad78e1
...
...
@@ -16,17 +16,5 @@
* specific language governing permissions and limitations
* under the License.
*/
/**
* Read XHR response and parse it as JSON.
*/
export
default
function
readResponseBlob
(
blob
:
Blob
|
JSONValue
)
{
return
new
Promise
<
ReturnType
<
JSON
[
'
parse
'
]
>>
(
resolve
=>
{
if
(
blob
instanceof
Blob
)
{
const
reader
=
new
FileReader
();
reader
.
onload
=
()
=>
resolve
(
JSON
.
parse
(
String
(
reader
.
result
||
''
)));
reader
.
readAsText
(
blob
);
}
else
{
resolve
(
blob
);
}
});
}
export
*
from
'
./vizPlugins
'
;
export
{
default
as
parsePostForm
}
from
'
./parsePostForm
'
;
superset-frontend/cypress-base/cypress/utils/parsePostForm.ts
0 → 100644
浏览文件 @
29ad78e1
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* Parse multipart form data sent via POST requests.
*/
export
default
function
parsePostForm
(
requestBody
:
ArrayBuffer
)
{
type
ParsedFields
=
Record
<
string
,
string
[]
|
string
>
;
if
(
requestBody
.
constructor
.
name
!==
'
ArrayBuffer
'
)
{
return
(
requestBody
as
unknown
)
as
ParsedFields
;
}
const
lines
=
new
TextDecoder
(
'
utf-8
'
).
decode
(
requestBody
).
split
(
'
\n
'
);
const
fields
:
ParsedFields
=
{};
let
key
=
''
;
let
value
:
string
[]
=
[];
function
addField
(
key
:
string
,
value
:
string
)
{
if
(
key
in
fields
)
{
if
(
Array
.
isArray
(
fields
[
key
]))
{
(
fields
[
key
]
as
string
[]).
push
(
value
);
}
else
{
fields
[
key
]
=
[
fields
[
key
]
as
string
,
value
];
}
}
else
{
fields
[
key
]
=
value
;
}
}
lines
.
forEach
(
line
=>
{
const
nameMatch
=
line
.
match
(
/Content-Disposition: form-data; name="
(
.*
)
"/
);
if
(
nameMatch
)
{
if
(
key
)
{
addField
(
key
,
value
.
join
(
'
\n
'
));
}
key
=
nameMatch
[
1
];
value
=
[];
}
else
if
(
!
/----.*FormBoundary/
.
test
(
line
))
{
value
.
push
(
line
);
}
});
if
(
key
&&
value
)
{
addField
(
key
,
value
.
join
(
'
\n
'
));
}
return
fields
;
}
superset-frontend/cypress-base/cypress/utils/vizPlugins.ts
浏览文件 @
29ad78e1
...
...
@@ -23,30 +23,42 @@ export const DASHBOARD_CHART_ALIAS_PREFIX = 'getJson_';
export
function
isLegacyChart
(
vizType
:
string
):
boolean
{
return
!
V1_PLUGINS
.
includes
(
vizType
);
}
export
function
isLegacyResponse
(
response
:
any
):
boolean
{
return
!
response
.
result
;
}
export
function
getSliceIdFromRequestUrl
(
url
:
string
):
string
{
export
function
getSliceIdFromRequestUrl
(
url
:
string
)
{
const
address
=
new
URL
(
url
);
const
query
=
address
.
searchParams
.
get
(
'
form_data
'
);
return
query
?.
match
(
/
\d
+/
)[
0
];
return
query
?.
match
(
/
\d
+/
)
?.
[
0
];
}
export
function
getChartAliases
(
slices
:
any
[]):
string
[]
{
const
aliases
:
string
[]
=
[];
Array
.
from
(
slices
).
forEach
(
slice
=>
{
const
vizType
=
slice
.
form_data
.
viz_type
;
const
isLegacy
=
isLegacyChart
(
vizType
);
const
alias
=
`
${
DASHBOARD_CHART_ALIAS_PREFIX
}${
slice
.
slice_id
}
`
;
const
formData
=
`{"slice_id":
${
slice
.
slice_id
}
}`
;
const
formData
=
encodeURIComponent
(
`{"slice_id":
${
slice
.
slice_id
}
}`
)
;
if
(
isLegacy
)
{
const
route
=
`/superset/explore_json/?*
${
formData
}
*`
;
cy
.
route
(
'
POST
'
,
`
${
route
}
`
).
as
(
alias
);
cy
.
intercept
(
'
POST
'
,
`
${
route
}
`
).
as
(
alias
);
aliases
.
push
(
`@
${
alias
}
`
);
}
else
{
const
route
=
`/api/v1/chart/data?*
${
formData
}
*`
;
cy
.
route
(
'
POST
'
,
`
${
route
}
`
).
as
(
alias
);
cy
.
intercept
(
'
POST
'
,
`
${
route
}
`
).
as
(
alias
);
aliases
.
push
(
`@
${
alias
}
`
);
}
});
return
aliases
;
}
export
function
interceptChart
(
sliceId
:
number
,
isLegacy
=
true
)
{
const
formData
=
{
slice_id
:
sliceId
};
const
encodedFormData
=
encodeURIComponent
(
JSON
.
stringify
(
formData
));
const
url
=
isLegacy
?
`**/superset/explore_json/?form_data=
${
encodedFormData
}
*`
:
`**/api/v1/chart/data?form_data=
${
encodedFormData
}
*`
;
return
cy
.
intercept
(
'
POST
'
,
url
);
}
superset-frontend/cypress-base/package-lock.json
浏览文件 @
29ad78e1
...
...
@@ -5,9 +5,9 @@
"requires"
:
true
,
"dependencies"
:
{
"@babel/code-frame"
:
{
"version"
:
"7.1
0.4
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.1
0.4
.tgz"
,
"integrity"
:
"sha512-
vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg
=="
,
"version"
:
"7.1
2.11
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.1
2.11
.tgz"
,
"integrity"
:
"sha512-
Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw
=="
,
"requires"
:
{
"@babel/highlight"
:
"^7.10.4"
}
...
...
@@ -34,21 +34,21 @@
}
},
"@babel/generator"
:
{
"version"
:
"7.12.
5
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/generator/-/generator-7.12.
5
.tgz"
,
"integrity"
:
"sha512-
m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96
A=="
,
"version"
:
"7.12.
11
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/generator/-/generator-7.12.
11
.tgz"
,
"integrity"
:
"sha512-
Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlIt
A=="
,
"requires"
:
{
"@babel/types"
:
"^7.12.
5
"
,
"@babel/types"
:
"^7.12.
11
"
,
"jsesc"
:
"^2.5.1"
,
"source-map"
:
"^0.5.0"
}
},
"@babel/helper-annotate-as-pure"
:
{
"version"
:
"7.1
0.4
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.1
0.4
.tgz"
,
"integrity"
:
"sha512-X
QlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA
=="
,
"version"
:
"7.1
2.10
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.1
2.10
.tgz"
,
"integrity"
:
"sha512-X
plmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ
=="
,
"requires"
:
{
"@babel/types"
:
"^7.1
0.4
"
"@babel/types"
:
"^7.1
2.10
"
}
},
"@babel/helper-builder-binary-assignment-operator-visitor"
:
{
...
...
@@ -60,25 +60,6 @@
"@babel/types"
:
"^7.10.4"
}
},
"@babel/helper-builder-react-jsx"
:
{
"version"
:
"7.10.4"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz"
,
"integrity"
:
"sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg=="
,
"requires"
:
{
"@babel/helper-annotate-as-pure"
:
"^7.10.4"
,
"@babel/types"
:
"^7.10.4"
}
},
"@babel/helper-builder-react-jsx-experimental"
:
{
"version"
:
"7.12.4"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz"
,
"integrity"
:
"sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og=="
,
"requires"
:
{
"@babel/helper-annotate-as-pure"
:
"^7.10.4"
,
"@babel/helper-module-imports"
:
"^7.12.1"
,
"@babel/types"
:
"^7.12.1"
}
},
"@babel/helper-create-class-features-plugin"
:
{
"version"
:
"7.12.1"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz"
,
...
...
@@ -92,12 +73,11 @@
}
},
"@babel/helper-create-regexp-features-plugin"
:
{
"version"
:
"7.12.
1
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.
1
.tgz"
,
"integrity"
:
"sha512-
rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA
=="
,
"version"
:
"7.12.
7
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.
7
.tgz"
,
"integrity"
:
"sha512-
idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ
=="
,
"requires"
:
{
"@babel/helper-annotate-as-pure"
:
"^7.10.4"
,
"@babel/helper-regex"
:
"^7.10.4"
,
"regexpu-core"
:
"^4.7.1"
}
},
...
...
@@ -120,21 +100,21 @@
}
},
"@babel/helper-function-name"
:
{
"version"
:
"7.1
0.4
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1
0.4
.tgz"
,
"integrity"
:
"sha512-
YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ
=="
,
"version"
:
"7.1
2.11
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1
2.11
.tgz"
,
"integrity"
:
"sha512-
AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA
=="
,
"requires"
:
{
"@babel/helper-get-function-arity"
:
"^7.1
0.4
"
,
"@babel/template"
:
"^7.1
0.4
"
,
"@babel/types"
:
"^7.1
0.4
"
"@babel/helper-get-function-arity"
:
"^7.1
2.10
"
,
"@babel/template"
:
"^7.1
2.7
"
,
"@babel/types"
:
"^7.1
2.11
"
}
},
"@babel/helper-get-function-arity"
:
{
"version"
:
"7.1
0.4
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.1
0.4
.tgz"
,
"integrity"
:
"sha512-
EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A
=="
,
"version"
:
"7.1
2.10
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.1
2.10
.tgz"
,
"integrity"
:
"sha512-
mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag
=="
,
"requires"
:
{
"@babel/types"
:
"^7.1
0.4
"
"@babel/types"
:
"^7.1
2.10
"
}
},
"@babel/helper-hoist-variables"
:
{
...
...
@@ -146,11 +126,11 @@
}
},
"@babel/helper-member-expression-to-functions"
:
{
"version"
:
"7.12.
1
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.
1
.tgz"
,
"integrity"
:
"sha512-
k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ
=="
,
"version"
:
"7.12.
7
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.
7
.tgz"
,
"integrity"
:
"sha512-
DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw
=="
,
"requires"
:
{
"@babel/types"
:
"^7.12.
1
"
"@babel/types"
:
"^7.12.
7
"
}
},
"@babel/helper-module-imports"
:
{
...
...
@@ -178,11 +158,11 @@
}
},
"@babel/helper-optimise-call-expression"
:
{
"version"
:
"7.1
0.4
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.1
0.4
.tgz"
,
"integrity"
:
"sha512-
n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg
=="
,
"version"
:
"7.1
2.10
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.1
2.10
.tgz"
,
"integrity"
:
"sha512-
4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ
=="
,
"requires"
:
{
"@babel/types"
:
"^7.1
0.4
"
"@babel/types"
:
"^7.1
2.10
"
}
},
"@babel/helper-plugin-utils"
:
{
...
...
@@ -190,14 +170,6 @@
"resolved"
:
"https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz"
,
"integrity"
:
"sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg=="
},
"@babel/helper-regex"
:
{
"version"
:
"7.10.5"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz"
,
"integrity"
:
"sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg=="
,
"requires"
:
{
"lodash"
:
"^4.17.19"
}
},
"@babel/helper-remap-async-to-generator"
:
{
"version"
:
"7.12.1"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz"
,
...
...
@@ -209,14 +181,14 @@
}
},
"@babel/helper-replace-supers"
:
{
"version"
:
"7.12.
5
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.
5
.tgz"
,
"integrity"
:
"sha512-
5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyW
A=="
,
"version"
:
"7.12.
11
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.
11
.tgz"
,
"integrity"
:
"sha512-
q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTR
A=="
,
"requires"
:
{
"@babel/helper-member-expression-to-functions"
:
"^7.12.
1
"
,
"@babel/helper-optimise-call-expression"
:
"^7.1
0.4
"
,
"@babel/traverse"
:
"^7.12.
5
"
,
"@babel/types"
:
"^7.12.
5
"
"@babel/helper-member-expression-to-functions"
:
"^7.12.
7
"
,
"@babel/helper-optimise-call-expression"
:
"^7.1
2.10
"
,
"@babel/traverse"
:
"^7.12.
10
"
,
"@babel/types"
:
"^7.12.
11
"
}
},
"@babel/helper-simple-access"
:
{
...
...
@@ -236,17 +208,17 @@
}
},
"@babel/helper-split-export-declaration"
:
{
"version"
:
"7.1
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.1
1.0
.tgz"
,
"integrity"
:
"sha512-
74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZ
g=="
,
"version"
:
"7.1
2.11
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.1
2.11
.tgz"
,
"integrity"
:
"sha512-
LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5
g=="
,
"requires"
:
{
"@babel/types"
:
"^7.1
1.0
"
"@babel/types"
:
"^7.1
2.11
"
}
},
"@babel/helper-validator-identifier"
:
{
"version"
:
"7.1
0.4
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.1
0.4
.tgz"
,
"integrity"
:
"sha512-
3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADX
w=="
"version"
:
"7.1
2.11
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.1
2.11
.tgz"
,
"integrity"
:
"sha512-
np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XO
w=="
},
"@babel/helper-wrap-function"
:
{
"version"
:
"7.12.3"
,
...
...
@@ -280,14 +252,14 @@
}
},
"@babel/parser"
:
{
"version"
:
"7.12.
5
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/parser/-/parser-7.12.
5
.tgz"
,
"integrity"
:
"sha512-
FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ
=="
"version"
:
"7.12.
11
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/parser/-/parser-7.12.
11
.tgz"
,
"integrity"
:
"sha512-
N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg
=="
},
"@babel/plugin-proposal-async-generator-functions"
:
{
"version"
:
"7.12.1"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz"
,
"integrity"
:
"sha512-
d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6
A=="
,
"version"
:
"7.12.1
2
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1
2
.tgz"
,
"integrity"
:
"sha512-
nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09
A=="
,
"requires"
:
{
"@babel/helper-plugin-utils"
:
"^7.10.4"
,
"@babel/helper-remap-async-to-generator"
:
"^7.12.1"
,
...
...
@@ -406,9 +378,9 @@
}
},
"@babel/plugin-transform-block-scoping"
:
{
"version"
:
"7.12.1"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz"
,
"integrity"
:
"sha512-
zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w
=="
,
"version"
:
"7.12.1
2
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1
2
.tgz"
,
"integrity"
:
"sha512-
VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ
=="
,
"requires"
:
{
"@babel/helper-plugin-utils"
:
"^7.10.4"
}
...
...
@@ -595,14 +567,15 @@
}
},
"@babel/plugin-transform-react-jsx"
:
{
"version"
:
"7.12.
5
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.
5
.tgz"
,
"integrity"
:
"sha512-
2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ
=="
,
"version"
:
"7.12.
12
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.
12
.tgz"
,
"integrity"
:
"sha512-
JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw
=="
,
"requires"
:
{
"@babel/helper-
builder-react-jsx"
:
"^7.10.4
"
,
"@babel/helper-
builder-react-jsx-experimental"
:
"^7.12.1
"
,
"@babel/helper-
annotate-as-pure"
:
"^7.12.10
"
,
"@babel/helper-
module-imports"
:
"^7.12.5
"
,
"@babel/helper-plugin-utils"
:
"^7.10.4"
,
"@babel/plugin-syntax-jsx"
:
"^7.12.1"
"@babel/plugin-syntax-jsx"
:
"^7.12.1"
,
"@babel/types"
:
"^7.12.12"
}
},
"@babel/plugin-transform-react-jsx-self"
:
{
...
...
@@ -666,12 +639,11 @@
}
},
"@babel/plugin-transform-sticky-regex"
:
{
"version"
:
"7.12.
1
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.
1
.tgz"
,
"integrity"
:
"sha512-
CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ
=="
,
"version"
:
"7.12.
7
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.
7
.tgz"
,
"integrity"
:
"sha512-
VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg
=="
,
"requires"
:
{
"@babel/helper-plugin-utils"
:
"^7.10.4"
,
"@babel/helper-regex"
:
"^7.10.4"
"@babel/helper-plugin-utils"
:
"^7.10.4"
}
},
"@babel/plugin-transform-template-literals"
:
{
...
...
@@ -683,9 +655,9 @@
}
},
"@babel/plugin-transform-typeof-symbol"
:
{
"version"
:
"7.12.1"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz"
,
"integrity"
:
"sha512-
EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q
=="
,
"version"
:
"7.12.1
0
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1
0
.tgz"
,
"integrity"
:
"sha512-
JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA
=="
,
"requires"
:
{
"@babel/helper-plugin-utils"
:
"^7.10.4"
}
...
...
@@ -794,37 +766,37 @@
}
},
"@babel/template"
:
{
"version"
:
"7.1
0.4
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/template/-/template-7.1
0.4
.tgz"
,
"integrity"
:
"sha512-
ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA
=="
,
"version"
:
"7.1
2.7
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/template/-/template-7.1
2.7
.tgz"
,
"integrity"
:
"sha512-
GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow
=="
,
"requires"
:
{
"@babel/code-frame"
:
"^7.10.4"
,
"@babel/parser"
:
"^7.1
0.4
"
,
"@babel/types"
:
"^7.1
0.4
"
"@babel/parser"
:
"^7.1
2.7
"
,
"@babel/types"
:
"^7.1
2.7
"
}
},
"@babel/traverse"
:
{
"version"
:
"7.12.
5
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.
5
.tgz"
,
"integrity"
:
"sha512-
xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA
=="
,
"requires"
:
{
"@babel/code-frame"
:
"^7.1
0.4
"
,
"@babel/generator"
:
"^7.12.
5
"
,
"@babel/helper-function-name"
:
"^7.1
0.4
"
,
"@babel/helper-split-export-declaration"
:
"^7.1
1.0
"
,
"@babel/parser"
:
"^7.12.
5
"
,
"@babel/types"
:
"^7.12.
5
"
,
"version"
:
"7.12.
12
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.
12
.tgz"
,
"integrity"
:
"sha512-
s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w
=="
,
"requires"
:
{
"@babel/code-frame"
:
"^7.1
2.11
"
,
"@babel/generator"
:
"^7.12.
11
"
,
"@babel/helper-function-name"
:
"^7.1
2.11
"
,
"@babel/helper-split-export-declaration"
:
"^7.1
2.11
"
,
"@babel/parser"
:
"^7.12.
11
"
,
"@babel/types"
:
"^7.12.
12
"
,
"debug"
:
"^4.1.0"
,
"globals"
:
"^11.1.0"
,
"lodash"
:
"^4.17.19"
}
},
"@babel/types"
:
{
"version"
:
"7.12.
6
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/types/-/types-7.12.
6
.tgz"
,
"integrity"
:
"sha512-
hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA
=="
,
"version"
:
"7.12.
12
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/types/-/types-7.12.
12
.tgz"
,
"integrity"
:
"sha512-
lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ
=="
,
"requires"
:
{
"@babel/helper-validator-identifier"
:
"^7.1
0.4
"
,
"@babel/helper-validator-identifier"
:
"^7.1
2.11
"
,
"lodash"
:
"^4.17.19"
,
"to-fast-properties"
:
"^2.0.0"
}
...
...
@@ -859,6 +831,14 @@
"resolved"
:
"https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz"
,
"integrity"
:
"sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw=="
},
"debug"
:
{
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.1.1.tgz"
,
"integrity"
:
"sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw=="
,
"requires"
:
{
"ms"
:
"^2.1.1"
}
},
"fs-extra"
:
{
"version"
:
"9.0.0"
,
"resolved"
:
"https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz"
,
...
...
@@ -873,27 +853,17 @@
}
},
"@cypress/code-coverage"
:
{
"version"
:
"3.
8.3
"
,
"resolved"
:
"https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.
8.3
.tgz"
,
"integrity"
:
"sha512-
4R9bDS4CivckXaJudL5lKxXtB99LkO2RWE4a5M/P7VXGrXynQQDYbP07O9Jyjw/VjELWBV+xC3AOfYaU+wCHNQ
=="
,
"version"
:
"3.
9.2
"
,
"resolved"
:
"https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.
9.2
.tgz"
,
"integrity"
:
"sha512-
YnzkRBxdsY/Ek/68nr+MowqW59UJsd28j10mFOerW/wrSkuxGrWvOldMs8Y4tU70L4fgd4wDPqGGMer3+UzbwA
=="
,
"requires"
:
{
"@cypress/browserify-preprocessor"
:
"3.0.1"
,
"debug"
:
"4.
2.0
"
,
"debug"
:
"4.
3.1
"
,
"execa"
:
"4.1.0"
,
"globby"
:
"11.0.
1
"
,
"globby"
:
"11.0.
2
"
,
"istanbul-lib-coverage"
:
"3.0.0"
,
"js-yaml"
:
"3.14.
0
"
,
"js-yaml"
:
"3.14.
1
"
,
"nyc"
:
"15.1.0"
},
"dependencies"
:
{
"debug"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.2.0.tgz"
,
"integrity"
:
"sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg=="
,
"requires"
:
{
"ms"
:
"2.1.2"
}
}
}
},
"@cypress/listr-verbose-renderer"
:
{
...
...
@@ -968,9 +938,9 @@
},
"dependencies"
:
{
"debug"
:
{
"version"
:
"3.2.
6
"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-3.2.
6
.tgz"
,
"integrity"
:
"sha512-
mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtW
Q=="
,
"version"
:
"3.2.
7
"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-3.2.
7
.tgz"
,
"integrity"
:
"sha512-
CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1X
Q=="
,
"dev"
:
true
,
"requires"
:
{
"ms"
:
"^2.1.1"
...
...
@@ -996,25 +966,25 @@
"integrity"
:
"sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw=="
},
"@nodelib/fs.scandir"
:
{
"version"
:
"2.1.
3
"
,
"resolved"
:
"https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.
3
.tgz"
,
"integrity"
:
"sha512-
eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw
=="
,
"version"
:
"2.1.
4
"
,
"resolved"
:
"https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.
4
.tgz"
,
"integrity"
:
"sha512-
33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA
=="
,
"requires"
:
{
"@nodelib/fs.stat"
:
"2.0.
3
"
,
"@nodelib/fs.stat"
:
"2.0.
4
"
,
"run-parallel"
:
"^1.1.9"
}
},
"@nodelib/fs.stat"
:
{
"version"
:
"2.0.
3
"
,
"resolved"
:
"https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.
3
.tgz"
,
"integrity"
:
"sha512-
bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA
=="
"version"
:
"2.0.
4
"
,
"resolved"
:
"https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.
4
.tgz"
,
"integrity"
:
"sha512-
IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q
=="
},
"@nodelib/fs.walk"
:
{
"version"
:
"1.2.
4
"
,
"resolved"
:
"https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.
4
.tgz"
,
"integrity"
:
"sha512-
1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ
=="
,
"version"
:
"1.2.
6
"
,
"resolved"
:
"https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.
6
.tgz"
,
"integrity"
:
"sha512-
8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow
=="
,
"requires"
:
{
"@nodelib/fs.scandir"
:
"2.1.
3
"
,
"@nodelib/fs.scandir"
:
"2.1.
4
"
,
"fastq"
:
"^1.6.0"
}
},
...
...
@@ -1629,15 +1599,15 @@
}
},
"browserslist"
:
{
"version"
:
"4.1
4.7
"
,
"resolved"
:
"https://registry.npmjs.org/browserslist/-/browserslist-4.1
4.7
.tgz"
,
"integrity"
:
"sha512-
BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ
=="
,
"version"
:
"4.1
6.1
"
,
"resolved"
:
"https://registry.npmjs.org/browserslist/-/browserslist-4.1
6.1
.tgz"
,
"integrity"
:
"sha512-
UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA
=="
,
"requires"
:
{
"caniuse-lite"
:
"^1.0.300011
57
"
,
"caniuse-lite"
:
"^1.0.300011
73
"
,
"colorette"
:
"^1.2.1"
,
"electron-to-chromium"
:
"^1.3.
591
"
,
"electron-to-chromium"
:
"^1.3.
634
"
,
"escalade"
:
"^3.1.1"
,
"node-releases"
:
"^1.1.6
6
"
"node-releases"
:
"^1.1.6
9
"
}
},
"buffer"
:
{
...
...
@@ -1709,12 +1679,12 @@
}
},
"call-bind"
:
{
"version"
:
"1.0.
0
"
,
"resolved"
:
"https://registry.npmjs.org/call-bind/-/call-bind-1.0.
0
.tgz"
,
"integrity"
:
"sha512-
AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w
=="
,
"version"
:
"1.0.
2
"
,
"resolved"
:
"https://registry.npmjs.org/call-bind/-/call-bind-1.0.
2
.tgz"
,
"integrity"
:
"sha512-
7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA
=="
,
"requires"
:
{
"function-bind"
:
"^1.1.1"
,
"get-intrinsic"
:
"^1.0.
0
"
"get-intrinsic"
:
"^1.0.
2
"
}
},
"camelcase"
:
{
...
...
@@ -1723,9 +1693,9 @@
"integrity"
:
"sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
"caniuse-lite"
:
{
"version"
:
"1.0.300011
57
"
,
"resolved"
:
"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.300011
57
.tgz"
,
"integrity"
:
"sha512-
gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA
=="
"version"
:
"1.0.300011
78
"
,
"resolved"
:
"https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.300011
78
.tgz"
,
"integrity"
:
"sha512-
VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ
=="
},
"caseless"
:
{
"version"
:
"0.12.0"
,
...
...
@@ -2009,9 +1979,9 @@
}
},
"commander"
:
{
"version"
:
"
4.1.1
"
,
"resolved"
:
"https://registry.npmjs.org/commander/-/commander-
4.1.1
.tgz"
,
"integrity"
:
"sha512-
NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA
=="
,
"version"
:
"
5.1.0
"
,
"resolved"
:
"https://registry.npmjs.org/commander/-/commander-
5.1.0
.tgz"
,
"integrity"
:
"sha512-
P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg
=="
,
"dev"
:
true
},
"common-tags"
:
{
...
...
@@ -2070,11 +2040,11 @@
"integrity"
:
"sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
},
"core-js-compat"
:
{
"version"
:
"3.
7.0
"
,
"resolved"
:
"https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.
7.0
.tgz"
,
"integrity"
:
"sha512-
V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg
=="
,
"version"
:
"3.
8.2
"
,
"resolved"
:
"https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.
8.2
.tgz"
,
"integrity"
:
"sha512-
LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ
=="
,
"requires"
:
{
"browserslist"
:
"^4.1
4.6
"
,
"browserslist"
:
"^4.1
6.0
"
,
"semver"
:
"7.0.0"
},
"dependencies"
:
{
...
...
@@ -2160,9 +2130,9 @@
}
},
"cypress"
:
{
"version"
:
"
5.5
.0"
,
"resolved"
:
"https://registry.npmjs.org/cypress/-/cypress-
5.5
.0.tgz"
,
"integrity"
:
"sha512-
UHEiTca8AUTevbT2pWkHQlxoHtXmbq+h6Eiu/Mz8DqpNkF98zjTBLv/HFiKJUU5rQzp9EwSWtms33p5TWCJ8tQ
=="
,
"version"
:
"
6.3
.0"
,
"resolved"
:
"https://registry.npmjs.org/cypress/-/cypress-
6.3
.0.tgz"
,
"integrity"
:
"sha512-
Ec6TAFOxdSB2HPINNJ1f7z75pENXcfCaQkz+A9j0eGSvusFJ2NNErq650DexCbNJAnCQkPqXB4XPH9kXnSQnUA
=="
,
"dev"
:
true
,
"requires"
:
{
"@cypress/listr-verbose-renderer"
:
"^0.4.1"
,
...
...
@@ -2177,7 +2147,7 @@
"chalk"
:
"^4.1.0"
,
"check-more-types"
:
"^2.24.0"
,
"cli-table3"
:
"~0.6.0"
,
"commander"
:
"^
4.1.1
"
,
"commander"
:
"^
5.1.0
"
,
"common-tags"
:
"^1.8.0"
,
"debug"
:
"^4.1.1"
,
"eventemitter2"
:
"^6.4.2"
,
...
...
@@ -2277,11 +2247,11 @@
"dev"
:
true
},
"debug"
:
{
"version"
:
"4.
1
.1"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.
1
.1.tgz"
,
"integrity"
:
"sha512-
pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw
=="
,
"version"
:
"4.
3
.1"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.
3
.1.tgz"
,
"integrity"
:
"sha512-
doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ
=="
,
"requires"
:
{
"ms"
:
"
^2.1.1
"
"ms"
:
"
2.1.2
"
}
},
"decamelize"
:
{
...
...
@@ -2437,9 +2407,9 @@
}
},
"electron-to-chromium"
:
{
"version"
:
"1.3.
595
"
,
"resolved"
:
"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.
595
.tgz"
,
"integrity"
:
"sha512-
JpaBIhdBkF9FLG7x06ONfe0f5bxPrxRcq0X+Sc8vsCt+OPWIzxOD+qM71NEHLGbDfN9Q6hbtHRv4/dnvcOxo6g
=="
"version"
:
"1.3.
641
"
,
"resolved"
:
"https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.
641
.tgz"
,
"integrity"
:
"sha512-
b0DLhsHSHESC1I+Nx6n4w4Lr61chMd3m/av1rZQhS2IXTzaS5BMM5N+ldWdMIlni9CITMRM09m8He4+YV/92TA
=="
},
"elegant-spinner"
:
{
"version"
:
"1.0.1"
,
...
...
@@ -2497,9 +2467,9 @@
"integrity"
:
"sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"eslint-plugin-cypress"
:
{
"version"
:
"2.11.
1
"
,
"resolved"
:
"https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.
1
.tgz"
,
"integrity"
:
"sha512-
MxMYoReSO5+IZMGgpBZHHSx64zYPSPTpXDwsgW7ChlJTF/sA+obqRbHplxD6sBStE+g4Mi0LCLkG4t9liu//mQ
=="
,
"version"
:
"2.11.
2
"
,
"resolved"
:
"https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.
2
.tgz"
,
"integrity"
:
"sha512-
1SergF1sGbVhsf7MYfOLiBhdOg6wqyeV9pXUAIDIffYTGMN3dTBQS9nFAzhLsHhO+Bn0GaVM1Ecm71XUidQ7VA
=="
,
"dev"
:
true
,
"requires"
:
{
"globals"
:
"^11.12.0"
...
...
@@ -2742,9 +2712,9 @@
"dev"
:
true
},
"fast-glob"
:
{
"version"
:
"3.2.
4
"
,
"resolved"
:
"https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.
4
.tgz"
,
"integrity"
:
"sha512-
kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ
=="
,
"version"
:
"3.2.
5
"
,
"resolved"
:
"https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.
5
.tgz"
,
"integrity"
:
"sha512-
2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg
=="
,
"requires"
:
{
"@nodelib/fs.stat"
:
"^2.0.2"
,
"@nodelib/fs.walk"
:
"^1.2.3"
,
...
...
@@ -2814,9 +2784,9 @@
"integrity"
:
"sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
},
"fastq"
:
{
"version"
:
"1.
9
.0"
,
"resolved"
:
"https://registry.npmjs.org/fastq/-/fastq-1.
9
.0.tgz"
,
"integrity"
:
"sha512-
i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w
=="
,
"version"
:
"1.
10
.0"
,
"resolved"
:
"https://registry.npmjs.org/fastq/-/fastq-1.
10
.0.tgz"
,
"integrity"
:
"sha512-
NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA
=="
,
"requires"
:
{
"reusify"
:
"^1.0.4"
}
...
...
@@ -2931,15 +2901,23 @@
"integrity"
:
"sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg=="
},
"fs-extra"
:
{
"version"
:
"9.
0.1
"
,
"resolved"
:
"https://registry.npmjs.org/fs-extra/-/fs-extra-9.
0.1
.tgz"
,
"integrity"
:
"sha512-h
2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwq
Q=="
,
"version"
:
"9.
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/fs-extra/-/fs-extra-9.
1.0
.tgz"
,
"integrity"
:
"sha512-h
cg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1O
Q=="
,
"dev"
:
true
,
"requires"
:
{
"at-least-node"
:
"^1.0.0"
,
"graceful-fs"
:
"^4.2.0"
,
"jsonfile"
:
"^6.0.1"
,
"universalify"
:
"^1.0.0"
"universalify"
:
"^2.0.0"
},
"dependencies"
:
{
"universalify"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
,
"integrity"
:
"sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
,
"dev"
:
true
}
}
},
"fs.realpath"
:
{
...
...
@@ -2978,9 +2956,9 @@
"integrity"
:
"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"get-intrinsic"
:
{
"version"
:
"1.0.
1
"
,
"resolved"
:
"https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.
1
.tgz"
,
"integrity"
:
"sha512-
ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufP
g=="
,
"version"
:
"1.0.
2
"
,
"resolved"
:
"https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.
2
.tgz"
,
"integrity"
:
"sha512-
aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRV
g=="
,
"requires"
:
{
"function-bind"
:
"^1.1.1"
,
"has"
:
"^1.0.3"
,
...
...
@@ -3056,12 +3034,12 @@
}
},
"global-dirs"
:
{
"version"
:
"2.
0.1
"
,
"resolved"
:
"https://registry.npmjs.org/global-dirs/-/global-dirs-2.
0.1
.tgz"
,
"integrity"
:
"sha512-
5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A
=="
,
"version"
:
"2.
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/global-dirs/-/global-dirs-2.
1.0
.tgz"
,
"integrity"
:
"sha512-
MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ
=="
,
"dev"
:
true
,
"requires"
:
{
"ini"
:
"
^1.3.5
"
"ini"
:
"
1.3.7
"
}
},
"globals"
:
{
...
...
@@ -3070,9 +3048,9 @@
"integrity"
:
"sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
},
"globby"
:
{
"version"
:
"11.0.
1
"
,
"resolved"
:
"https://registry.npmjs.org/globby/-/globby-11.0.
1
.tgz"
,
"integrity"
:
"sha512-
iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ
=="
,
"version"
:
"11.0.
2
"
,
"resolved"
:
"https://registry.npmjs.org/globby/-/globby-11.0.
2
.tgz"
,
"integrity"
:
"sha512-
2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og
=="
,
"requires"
:
{
"array-union"
:
"^2.1.0"
,
"dir-glob"
:
"^3.0.1"
,
...
...
@@ -3281,9 +3259,9 @@
"integrity"
:
"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini"
:
{
"version"
:
"1.3.
8
"
,
"resolved"
:
"https://registry.npmjs.org/ini/-/ini-1.3.
8
.tgz"
,
"integrity"
:
"sha512-
JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew
=="
,
"version"
:
"1.3.
7
"
,
"resolved"
:
"https://registry.npmjs.org/ini/-/ini-1.3.
7
.tgz"
,
"integrity"
:
"sha512-
iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ
=="
,
"dev"
:
true
},
"inline-source-map"
:
{
...
...
@@ -3360,9 +3338,9 @@
}
},
"is-core-module"
:
{
"version"
:
"2.
1
.0"
,
"resolved"
:
"https://registry.npmjs.org/is-core-module/-/is-core-module-2.
1
.0.tgz"
,
"integrity"
:
"sha512-
YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA
=="
,
"version"
:
"2.
2
.0"
,
"resolved"
:
"https://registry.npmjs.org/is-core-module/-/is-core-module-2.
2
.0.tgz"
,
"integrity"
:
"sha512-
XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ
=="
,
"requires"
:
{
"has"
:
"^1.0.3"
}
...
...
@@ -3543,24 +3521,23 @@
},
"dependencies"
:
{
"@babel/core"
:
{
"version"
:
"7.12.
3
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/core/-/core-7.12.
3
.tgz"
,
"integrity"
:
"sha512-
0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g
=="
,
"version"
:
"7.12.
10
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/core/-/core-7.12.
10
.tgz"
,
"integrity"
:
"sha512-
eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w
=="
,
"requires"
:
{
"@babel/code-frame"
:
"^7.10.4"
,
"@babel/generator"
:
"^7.12.1"
,
"@babel/generator"
:
"^7.12.1
0
"
,
"@babel/helper-module-transforms"
:
"^7.12.1"
,
"@babel/helpers"
:
"^7.12.
1
"
,
"@babel/parser"
:
"^7.12.
3
"
,
"@babel/template"
:
"^7.1
0.4
"
,
"@babel/traverse"
:
"^7.12.1"
,
"@babel/types"
:
"^7.12.1"
,
"@babel/helpers"
:
"^7.12.
5
"
,
"@babel/parser"
:
"^7.12.
10
"
,
"@babel/template"
:
"^7.1
2.7
"
,
"@babel/traverse"
:
"^7.12.1
0
"
,
"@babel/types"
:
"^7.12.1
0
"
,
"convert-source-map"
:
"^1.7.0"
,
"debug"
:
"^4.1.0"
,
"gensync"
:
"^1.0.0-beta.1"
,
"json5"
:
"^2.1.2"
,
"lodash"
:
"^4.17.19"
,
"resolve"
:
"^1.3.2"
,
"semver"
:
"^5.4.1"
,
"source-map"
:
"^0.5.0"
},
...
...
@@ -3665,9 +3642,9 @@
"integrity"
:
"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"js-yaml"
:
{
"version"
:
"3.14.
0
"
,
"resolved"
:
"https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.
0
.tgz"
,
"integrity"
:
"sha512-
/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A
=="
,
"version"
:
"3.14.
1
"
,
"resolved"
:
"https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.
1
.tgz"
,
"integrity"
:
"sha512-
okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g
=="
,
"requires"
:
{
"argparse"
:
"^1.0.7"
,
"esprima"
:
"^4.0.0"
...
...
@@ -3719,12 +3696,19 @@
}
},
"jsonfile"
:
{
"version"
:
"6.
0.1
"
,
"resolved"
:
"https://registry.npmjs.org/jsonfile/-/jsonfile-6.
0.1
.tgz"
,
"integrity"
:
"sha512-
jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg
=="
,
"version"
:
"6.
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/jsonfile/-/jsonfile-6.
1.0
.tgz"
,
"integrity"
:
"sha512-
5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ
=="
,
"requires"
:
{
"graceful-fs"
:
"^4.1.6"
,
"universalify"
:
"^1.0.0"
"universalify"
:
"^2.0.0"
},
"dependencies"
:
{
"universalify"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
,
"integrity"
:
"sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
}
}
},
"jsonify"
:
{
...
...
@@ -4137,18 +4121,18 @@
}
},
"mime-db"
:
{
"version"
:
"1.4
4
.0"
,
"resolved"
:
"https://registry.npmjs.org/mime-db/-/mime-db-1.4
4
.0.tgz"
,
"integrity"
:
"sha512-
/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg
=="
,
"version"
:
"1.4
5
.0"
,
"resolved"
:
"https://registry.npmjs.org/mime-db/-/mime-db-1.4
5
.0.tgz"
,
"integrity"
:
"sha512-
CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w
=="
,
"dev"
:
true
},
"mime-types"
:
{
"version"
:
"2.1.2
7
"
,
"resolved"
:
"https://registry.npmjs.org/mime-types/-/mime-types-2.1.2
7
.tgz"
,
"integrity"
:
"sha512-
JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w
=="
,
"version"
:
"2.1.2
8
"
,
"resolved"
:
"https://registry.npmjs.org/mime-types/-/mime-types-2.1.2
8
.tgz"
,
"integrity"
:
"sha512-
0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ
=="
,
"dev"
:
true
,
"requires"
:
{
"mime-db"
:
"1.4
4
.0"
"mime-db"
:
"1.4
5
.0"
}
},
"mimic-fn"
:
{
...
...
@@ -4287,9 +4271,9 @@
}
},
"node-releases"
:
{
"version"
:
"1.1.6
6
"
,
"resolved"
:
"https://registry.npmjs.org/node-releases/-/node-releases-1.1.6
6
.tgz"
,
"integrity"
:
"sha512-
JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg
=="
"version"
:
"1.1.6
9
"
,
"resolved"
:
"https://registry.npmjs.org/node-releases/-/node-releases-1.1.6
9
.tgz"
,
"integrity"
:
"sha512-
DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA
=="
},
"normalize-path"
:
{
"version"
:
"3.0.0"
,
...
...
@@ -4615,9 +4599,9 @@
"integrity"
:
"sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
},
"pretty-bytes"
:
{
"version"
:
"5.
4.1
"
,
"resolved"
:
"https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.
4.1
.tgz"
,
"integrity"
:
"sha512-
s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9Lx
A=="
,
"version"
:
"5.
5.0
"
,
"resolved"
:
"https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.
5.0
.tgz"
,
"integrity"
:
"sha512-
p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SH
A=="
,
"dev"
:
true
},
"process"
:
{
...
...
@@ -4814,9 +4798,9 @@
"integrity"
:
"sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
},
"regjsparser"
:
{
"version"
:
"0.6.
4
"
,
"resolved"
:
"https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.
4
.tgz"
,
"integrity"
:
"sha512-
64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw
=="
,
"version"
:
"0.6.
6
"
,
"resolved"
:
"https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.
6
.tgz"
,
"integrity"
:
"sha512-
jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ
=="
,
"requires"
:
{
"jsesc"
:
"~0.5.0"
},
...
...
@@ -5636,9 +5620,9 @@
"integrity"
:
"sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="
},
"uri-js"
:
{
"version"
:
"4.4.
0
"
,
"resolved"
:
"https://registry.npmjs.org/uri-js/-/uri-js-4.4.
0
.tgz"
,
"integrity"
:
"sha512-
B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6
g=="
,
"version"
:
"4.4.
1
"
,
"resolved"
:
"https://registry.npmjs.org/uri-js/-/uri-js-4.4.
1
.tgz"
,
"integrity"
:
"sha512-
7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndB
g=="
,
"dev"
:
true
,
"requires"
:
{
"punycode"
:
"^2.1.0"
...
...
@@ -5803,9 +5787,9 @@
"integrity"
:
"sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"y18n"
:
{
"version"
:
"4.0.
0
"
,
"resolved"
:
"https://registry.npmjs.org/y18n/-/y18n-4.0.
0
.tgz"
,
"integrity"
:
"sha512-
r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w
=="
"version"
:
"4.0.
1
"
,
"resolved"
:
"https://registry.npmjs.org/y18n/-/y18n-4.0.
1
.tgz"
,
"integrity"
:
"sha512-
wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ
=="
},
"yargs"
:
{
"version"
:
"15.4.1"
,
...
...
superset-frontend/cypress-base/package.json
浏览文件 @
29ad78e1
...
...
@@ -10,13 +10,13 @@
"author"
:
"Apcahe"
,
"license"
:
"Apache-2.0"
,
"dependencies"
:
{
"@cypress/code-coverage"
:
"^3.
8.3
"
,
"@cypress/code-coverage"
:
"^3.
9.2
"
,
"rison"
:
"^0.1.1"
,
"shortid"
:
"^2.2.15"
},
"devDependencies"
:
{
"cypress"
:
"^
5.5
.0"
,
"eslint-plugin-cypress"
:
"^2.11.
1
"
"cypress"
:
"^
6.3
.0"
,
"eslint-plugin-cypress"
:
"^2.11.
2
"
},
"nyc"
:
{
"reporter"
:
[
...
...
superset-frontend/cypress-base/tsconfig.json
浏览文件 @
29ad78e1
{
"compilerOptions"
:
{
"baseUrl"
:
"."
,
"allowSyntheticDefaultImports"
:
true
,
"moduleResolution"
:
"Node"
,
"strict"
:
true
,
"target"
:
"
ES5
"
,
"lib"
:
[
"
ES5"
,
"ES2015
"
,
"DOM"
],
"target"
:
"
es2019
"
,
"lib"
:
[
"
es2019
"
,
"DOM"
],
"types"
:
[
"cypress"
],
"allowJs"
:
true
,
"noEmit"
:
true
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录