implementing-new-features
SKILL.md
New Feature Implementation Guide
Most features need implementation in three areas:
- Backend:
lib/streamlit/ - Frontend:
frontend/ - Protobufs:
proto/
New features should include:
- Python unit tests in
lib/tests - Vitest unit tests
- E2E Playwright tests in
e2e_playwright/
Order of Implementation
-
Protobuf changes in
proto/then runmake protobuf- New elements: add to
proto/streamlit/proto/Element.proto
- New elements: add to
-
Backend in
lib/streamlit/- New elements: add to
lib/streamlit/__init__.py
- New elements: add to
-
Python unit tests in
lib/tests- Run:
uv run pytest lib/tests/streamlit/the_test_name.py - New elements: add to
lib/tests/streamlit/element_mocks.py
- Run:
-
Frontend in
frontend/- New elements: add to
frontend/lib/src/components/core/Block/ElementNodeRenderer.tsx
- New elements: add to
-
Vitest tests in
*.test.tsx- Run:
cd frontend && yarn vitest lib/src/components/elements/NewElement/NewElement.test.tsx
- Run:
-
E2E Playwright tests in
e2e_playwright/- Run:
make run-e2e-test e2e_playwright/name_of_the_test.py
- Run:
-
Autofix formatting and linting:
make autofix -
Verify the implementation:
make check