forked from streamlit/streamlit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathst_vega_lite_chart_test.py
131 lines (103 loc) · 4.79 KB
/
st_vega_lite_chart_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2024)
#
# Licensed 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.
from playwright.sync_api import Page, expect
from e2e_playwright.conftest import ImageCompareFunction
from e2e_playwright.shared.app_utils import check_top_level_class
VEGA_LITE_CHART_COUNT = 14
def test_vega_lite_chart(app: Page):
"""Tests that it displays charts on the DOM"""
vega_lite_charts = app.get_by_test_id("stVegaLiteChart")
expect(vega_lite_charts).to_have_count(VEGA_LITE_CHART_COUNT)
for idx in range(VEGA_LITE_CHART_COUNT):
chart = vega_lite_charts.nth(idx)
canvas = chart.locator("canvas").nth(0)
expect(canvas).to_be_visible()
expect(canvas).to_have_class("marks")
def test_vega_lite_chart_sets_chart_width(themed_app: Page):
"""Tests that it sets the correct chart width"""
vega_lite_charts = themed_app.get_by_test_id("stVegaLiteChart")
expect(vega_lite_charts.nth(0).locator("canvas").nth(0)).to_have_css(
"width", "704px"
)
expect(vega_lite_charts.nth(1).locator("canvas").nth(0)).to_have_css(
"width", "704px"
)
expect(vega_lite_charts.nth(2).locator("canvas").nth(0)).to_have_css(
"width", "400px"
)
expect(vega_lite_charts.nth(3).locator("canvas").nth(0)).to_have_css(
"width", "500px"
)
def test_vega_lite_chart_displays_interactive_charts(
themed_app: Page, assert_snapshot: ImageCompareFunction
):
"""Tests that it displays interactive charts on the DOM"""
vega_lite_charts = themed_app.get_by_test_id("stVegaLiteChart")
# expect statement here so that snapshots are taken properly
expect(vega_lite_charts).to_have_count(VEGA_LITE_CHART_COUNT)
expect(vega_lite_charts.nth(4)).to_be_visible()
assert_snapshot(
vega_lite_charts.nth(4),
name="st_vega_lite_chart-interactive",
)
def test_vega_lite_chart_same_plot_different_ways(
themed_app: Page, assert_snapshot: ImageCompareFunction
):
"""Tests that it displays the same plot in different ways"""
vega_lite_charts = themed_app.get_by_test_id("stVegaLiteChart")
# expect statement here so that snapshots are taken properly
expect(vega_lite_charts).to_have_count(VEGA_LITE_CHART_COUNT)
for idx in range(5, 9):
assert_snapshot(vega_lite_charts.nth(idx), name=f"st_vega_lite_chart-{idx}")
def test_vega_lite_chart_streamlit_theme(
themed_app: Page, assert_snapshot: ImageCompareFunction
):
"""Tests that st.vega_lite_chart supports the Streamlit theme"""
vega_lite_charts = themed_app.get_by_test_id("stVegaLiteChart")
# expect statement here so that snapshots are taken properly
expect(vega_lite_charts).to_have_count(VEGA_LITE_CHART_COUNT)
for idx in range(9, 11):
assert_snapshot(
vega_lite_charts.nth(idx), name=f"st_vega_lite_chart-theming_{idx}"
)
def test_vega_lite_chart_default_theme(
themed_app: Page, assert_snapshot: ImageCompareFunction
):
"""Tests that st.vega_lite_chart supports the default theme"""
vega_lite_charts = themed_app.get_by_test_id("stVegaLiteChart")
# expect statement here so that snapshots are taken properly
expect(vega_lite_charts).to_have_count(VEGA_LITE_CHART_COUNT)
assert_snapshot(vega_lite_charts.nth(11), name="st_vega_lite_chart-default_theming")
def test_vega_lite_chart_user_supplied_colors(
themed_app: Page, assert_snapshot: ImageCompareFunction
):
"""Tests that st.vega_lite_chart respects user configuration"""
vega_lite_charts = themed_app.get_by_test_id("stVegaLiteChart")
# expect statement here so that snapshots are taken properly
expect(vega_lite_charts).to_have_count(VEGA_LITE_CHART_COUNT)
assert_snapshot(
vega_lite_charts.nth(12),
name="st_vega_lite_chart-user_supplied_colors",
)
def test_empty_vega_lite_chart(app: Page, assert_snapshot: ImageCompareFunction):
vega_lite_charts = app.get_by_test_id("stVegaLiteChart")
# expect statement here so that snapshots are taken properly
expect(vega_lite_charts).to_have_count(VEGA_LITE_CHART_COUNT)
assert_snapshot(
vega_lite_charts.nth(13),
name="st_vega_lite_chart-empty",
)
def test_check_top_level_class(app: Page):
"""Check that the top level class is correctly set."""
check_top_level_class(app, "stVegaLiteChart")