Repository: streamlit/streamlit

Issue:
Content inside tabs jitters when switching tabs for the first time
### Checklist

- [X] I have searched the [existing issues](https://github.com/streamlit/streamlit/issues) for similar issues.
- [X] I added a very descriptive title to this issue.
- [X] I have provided sufficient information below to help reproduce this issue.

### Summary

[![Open in Streamlit Cloud](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://issues.streamlitapp.com/?issue=gh-5820)

Currently, the content inside tabs jitters when a user switches tabs for the first time. 

Another user reported [this](https://discuss.streamlit.io/t/bug-with-st-tabs-glitches-for-1-frame-while-rendering/33497/5) bug on the forum, but wanted to create an official issue here too.

### Reproducible Code Example

```Python
import streamlit as st

st.title('Content inside tabs jitters on first load')

t1, t2, t3 = st.tabs(['First tab','Second tab','Third tab'])

t1.header('This content is inside the first tab')

t2.header('This content is inside the second tab')

t3.header('This content is inside the third tab')
```


### Steps To Reproduce

1. Run the Reproducible Code Example as a Streamlit app.
2. Click on the different tabs and see how the content jitters.

### Expected Behavior

Content inside each tab does not jitter when switching tabs.

### Current Behavior

_No response_

### Is this a regression?

- [ ] Yes, this used to work in a previous version.

### Debug info

- Streamlit version: 1.14.1
- Python version: 3.10
- Operating System: macOS
- Browser: Brave
- Virtual environment: conda


### Additional Information

_No response_

### Are you willing to submit a PR?

- [ ] Yes, I am willing to submit a PR!


Discussion:
Hey @marduk2! I have confirmed the issue, and I believe I have a solution! Hope to get a PR out for this.
@kmcgrady Thanks so much for confirming :) Super appreciated - also great to hear you already have a solution in mind!
Hi again,

Does anyone know if there is a workaround for this, for example, using the CSS markdown trick? Thanks in advance!
I have a similar issue, the content does not jitter but does not show unless another widget is interacted with OR right-click and inspect the page. Watch as the images disappear after the page refreshes but when I right-click to inspect the page the images appear...

[streamlit-pollenq-2023-04-04-15-04-38.webm](https://user-images.githubusercontent.com/18087911/229904937-9501f3c5-71c4-4028-99c2-6fbdc06b0f16.webm)


Is there a solution to this problem now?
@kmcgrady 
Here is a possible solution:

```python
import streamlit as st
from streamlit.components import v1

st.title('Content inside tabs jitters on first load')
t1, t2, t3 = st.tabs(['First tab', 'Second tab', 'Third tab'])

t1.header('This content is inside the first tab')
t2.header('This content is inside the second tab')
t3.header('This content is inside the third tab')

v1.html("""
<script>
function checkElements() {
    const tabs = window.parent.document.querySelectorAll('button[data-baseweb="tab"] p');
    const tab_panels = window.parent.document.querySelectorAll('div[data-baseweb="tab-panel"]');

    if (tabs && tab_panels) {

        tabs.forEach(function (tab, index) {
            const tab_panel_child = tab_panels[index].querySelectorAll("*");

            function set_visibility(state) {
                tab_panels[index].style.visibility = state;
                tab_panel_child.forEach(function (child) {
                    child.style.visibility = state;
                });
            }

            tab.addEventListener("click", function (event) {
                set_visibility('hidden')

                let element = tab_panels[index].querySelector('div[data-testid="stVerticalBlock"]');
                let main_block = window.parent.document.querySelector('section.main div[data-testid="stVerticalBlock"]');
                const waitMs = 1;

                function waitForLayout() {
                    if (element.offsetWidth === main_block.offsetWidth) {
                        set_visibility("visible");
                    } else {
                        setTimeout(waitForLayout, waitMs);
                    }
                }

                waitForLayout();
            });
        });
    } else {
        setTimeout(checkElements, 100);
    }
}

checkElements()
</script>
""", height=0)
```

Resolving patch:
diff --git a/e2e/scripts/st_arrow_dataframe_column_types.py b/e2e/scripts/st_arrow_dataframe_column_types.py
deleted file mode 100644
--- a/e2e/scripts/st_arrow_dataframe_column_types.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022)
-#
-# 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.
-
-import random
-
-import numpy as np
-import pandas as pd
-
-import streamlit as st
-from tests.streamlit.data_mocks import (
-    BASE_TYPES_DF,
-    DATETIME_TYPES_DF,
-    INTERVAL_TYPES_DF,
-    LIST_TYPES_DF,
-    NUMBER_TYPES_DF,
-    PERIOD_TYPES_DF,
-    SPECIAL_TYPES_DF,
-    UNSUPPORTED_TYPES_DF,
-)
-
-np.random.seed(0)
-random.seed(0)
-
-st.set_page_config(layout="wide")
-
-st.subheader("Base types")
-st._arrow_dataframe(BASE_TYPES_DF, use_container_width=True)
-
-st.subheader("Number types")
-st._arrow_dataframe(NUMBER_TYPES_DF, use_container_width=True)
-
-st.subheader("Date, time and datetime types")
-st._arrow_dataframe(DATETIME_TYPES_DF, use_container_width=True)
-
-st.subheader("List types")
-st._arrow_dataframe(LIST_TYPES_DF, use_container_width=True)
-
-st.subheader("Interval dtypes in pd.DataFrame")
-st._arrow_dataframe(INTERVAL_TYPES_DF, use_container_width=True)
-
-st.subheader("Special types")
-st._arrow_dataframe(SPECIAL_TYPES_DF, use_container_width=True)
-
-st.subheader("Period dtypes in pd.DataFrame")
-st._arrow_dataframe(PERIOD_TYPES_DF, use_container_width=True)
-
-st.subheader("Unsupported types")
-st._arrow_dataframe(UNSUPPORTED_TYPES_DF, use_container_width=True)
-
-st.subheader("Long colum header")
-st._arrow_dataframe(
-    pd.DataFrame(
-        np.random.randn(100, 4),
-        columns=[
-            "this is a very long header name",
-            "A",
-            "C",
-            "this is another long name",
-        ],
-    )
-)
diff --git a/e2e/scripts/st_arrow_dataframe_index_types.py b/e2e_playwright/st_arrow_dataframe_index_types.py
similarity index 100%
rename from e2e/scripts/st_arrow_dataframe_index_types.py
rename to e2e_playwright/st_arrow_dataframe_index_types.py
diff --git a/e2e/scripts/st_data_editor_column_types.py b/e2e_playwright/st_data_editor_column_types.py
similarity index 100%
rename from e2e/scripts/st_data_editor_column_types.py
rename to e2e_playwright/st_data_editor_column_types.py


Test patch:
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Date_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Datetime_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Float64_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Int64_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Interval_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-List_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Multi_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-String_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Time_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_arrow_dataframe_index_types_test/st_dataframe-Uint64_index_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-2[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_chat_message_test/chat_message-5[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-base_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-datetime_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-interval_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-list_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-numerical_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-period_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-special_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-chromium].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-firefox].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-webkit].png
new file mode 100644
Binary files /dev/null and b/e2e_playwright/__snapshots__/linux/st_data_editor_column_types_test/st_data_editor-unsupported_types[light_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-0[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-0[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-0[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-0[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-11[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-11[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-11[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-11[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-1[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-1[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-1[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-1[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-2[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-2[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-2[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-2[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-2[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-2[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-2[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-2[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-3[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-3[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-3[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-3[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-4[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-4[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-4[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-4[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-8[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-8[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-8[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-8[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-8[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-8[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-8[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-8[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[dark_theme-webkit].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-chromium].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-chromium].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-chromium].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-chromium].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-firefox].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-firefox].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-firefox].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-firefox].png differ
diff --git a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-webkit].png b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-webkit].png
Binary files a/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-webkit].png and b/e2e_playwright/__snapshots__/linux/st_multiselect_test/multiselect-9[light_theme-webkit].png differ
diff --git a/e2e_playwright/st_arrow_dataframe_index_types_test.py b/e2e_playwright/st_arrow_dataframe_index_types_test.py
new file mode 100644
--- /dev/null
+++ b/e2e_playwright/st_arrow_dataframe_index_types_test.py
@@ -0,0 +1,38 @@
+# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022)
+#
+# 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
+
+
+def test_dataframe_index_types(themed_app: Page, assert_snapshot: ImageCompareFunction):
+    """Test that st.dataframe render various index types correctly."""
+    dataframe_elements = themed_app.get_by_test_id("stDataFrame")
+    expect(dataframe_elements).to_have_count(10)
+
+    assert_snapshot(dataframe_elements.nth(0), name=f"st_dataframe-String_index_types")
+    assert_snapshot(dataframe_elements.nth(1), name=f"st_dataframe-Float64_index_types")
+    assert_snapshot(dataframe_elements.nth(2), name=f"st_dataframe-Int64_index_types")
+    assert_snapshot(dataframe_elements.nth(3), name=f"st_dataframe-Uint64_index_types")
+    assert_snapshot(
+        dataframe_elements.nth(4), name=f"st_dataframe-Datetime_index_types"
+    )
+    assert_snapshot(dataframe_elements.nth(5), name=f"st_dataframe-Date_index_types")
+    assert_snapshot(dataframe_elements.nth(6), name=f"st_dataframe-Time_index_types")
+    assert_snapshot(
+        dataframe_elements.nth(7), name=f"st_dataframe-Interval_index_types"
+    )
+    assert_snapshot(dataframe_elements.nth(8), name=f"st_dataframe-List_index_types")
+    assert_snapshot(dataframe_elements.nth(9), name=f"st_dataframe-Multi_index_types")
diff --git a/e2e_playwright/st_data_editor_column_types_test.py b/e2e_playwright/st_data_editor_column_types_test.py
new file mode 100644
--- /dev/null
+++ b/e2e_playwright/st_data_editor_column_types_test.py
@@ -0,0 +1,36 @@
+# Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022)
+#
+# 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
+
+
+def test_data_editor_column_types(
+    themed_app: Page, assert_snapshot: ImageCompareFunction
+):
+    """Test that st.data_editor render various column types correctly."""
+    data_editor_elements = themed_app.get_by_test_id("stDataFrame")
+    expect(data_editor_elements).to_have_count(8)
+
+    assert_snapshot(data_editor_elements.nth(0), name=f"st_data_editor-base_types")
+    assert_snapshot(data_editor_elements.nth(1), name=f"st_data_editor-numerical_types")
+    assert_snapshot(data_editor_elements.nth(2), name=f"st_data_editor-datetime_types")
+    assert_snapshot(data_editor_elements.nth(3), name=f"st_data_editor-list_types")
+    assert_snapshot(data_editor_elements.nth(4), name=f"st_data_editor-interval_types")
+    assert_snapshot(data_editor_elements.nth(5), name=f"st_data_editor-special_types")
+    assert_snapshot(data_editor_elements.nth(6), name=f"st_data_editor-period_types")
+    assert_snapshot(
+        data_editor_elements.nth(7), name=f"st_data_editor-unsupported_types"
+    )
diff --git a/frontend/app/src/App.test.tsx b/frontend/app/src/App.test.tsx
--- a/frontend/app/src/App.test.tsx
+++ b/frontend/app/src/App.test.tsx
@@ -146,6 +146,16 @@ jest.mock("moment", () =>
   }))
 )
 
+// Mock needed for Block.tsx
+class ResizeObserver {
+  observe(): void {}
+
+  unobserve(): void {}
+
+  disconnect(): void {}
+}
+window.ResizeObserver = ResizeObserver
+
 describe("App", () => {
   beforeEach(() => {
     // @ts-expect-error
diff --git a/frontend/app/src/StreamlitLib.test.tsx b/frontend/app/src/StreamlitLib.test.tsx
--- a/frontend/app/src/StreamlitLib.test.tsx
+++ b/frontend/app/src/StreamlitLib.test.tsx
@@ -93,6 +93,16 @@ interface State {
   scriptRunId: string
 }
 
+// Mock needed for Block.tsx
+class ResizeObserver {
+  observe(): void {}
+
+  unobserve(): void {}
+
+  disconnect(): void {}
+}
+window.ResizeObserver = ResizeObserver
+
 /** An example root component for an app that uses StreamlitLib. */
 class StreamlitLibExample extends PureComponent<Props, State> {
   private readonly sessionInfo = new SessionInfo()
diff --git a/frontend/app/src/ThemedApp.test.tsx b/frontend/app/src/ThemedApp.test.tsx
--- a/frontend/app/src/ThemedApp.test.tsx
+++ b/frontend/app/src/ThemedApp.test.tsx
@@ -52,6 +52,16 @@ const mockCustomThemeConfig = {
 
 jest.mock("@streamlit/app/src/connection/ConnectionManager")
 
+// Mock needed for Block.tsx
+class ResizeObserver {
+  observe(): void {}
+
+  unobserve(): void {}
+
+  disconnect(): void {}
+}
+window.ResizeObserver = ResizeObserver
+
 describe("ThemedApp", () => {
   beforeEach(() => {
     // sourced from:
diff --git a/frontend/app/src/components/AppView/AppView.test.tsx b/frontend/app/src/components/AppView/AppView.test.tsx
--- a/frontend/app/src/components/AppView/AppView.test.tsx
+++ b/frontend/app/src/components/AppView/AppView.test.tsx
@@ -42,6 +42,16 @@ import {
 } from "@streamlit/lib"
 import AppView, { AppViewProps } from "./AppView"
 
+// Mock needed for Block.tsx
+class ResizeObserver {
+  observe(): void {}
+
+  unobserve(): void {}
+
+  disconnect(): void {}
+}
+window.ResizeObserver = ResizeObserver
+
 function getContextOutput(context: Partial<AppContextProps>): AppContextProps {
   return {
     wideMode: false,
diff --git a/frontend/lib/src/components/core/Block/Block.test.tsx b/frontend/lib/src/components/core/Block/Block.test.tsx
--- a/frontend/lib/src/components/core/Block/Block.test.tsx
+++ b/frontend/lib/src/components/core/Block/Block.test.tsx
@@ -16,12 +16,21 @@
 
 import React from "react"
 import { Block as BlockProto } from "@streamlit/lib/src/proto"
-import { mount } from "@streamlit/lib/src/test_util"
+import { render } from "@streamlit/lib/src/test_util"
+import { screen } from "@testing-library/react"
 import { BlockNode } from "@streamlit/lib/src/AppNode"
 import { ScriptRunState } from "@streamlit/lib/src/ScriptRunState"
 
 import VerticalBlock from "./Block"
 
+class ResizeObserver {
+  observe(): void {}
+
+  unobserve(): void {}
+
+  disconnect(): void {}
+}
+
 function makeColumn(weight: number, children: BlockNode[] = []): BlockNode {
   return new BlockNode(
     children,
@@ -43,9 +52,10 @@ function makeVerticalBlock(children: BlockNode[] = []): BlockNode {
 }
 
 describe("Vertical Block Component", () => {
+  window.ResizeObserver = ResizeObserver
   it("should render a horizontal block with empty columns", () => {
     const block: BlockNode = makeVerticalBlock([makeHorizontalBlock(4)])
-    const wrapper = mount(
+    render(
       <VerticalBlock
         node={block}
         scriptRunId={""}
@@ -62,6 +72,6 @@ describe("Vertical Block Component", () => {
       />
     )
 
-    expect(wrapper.find("StyledColumn")).toHaveLength(4)
+    expect(screen.getAllByTestId("column")).toHaveLength(4)
   })
 })