mirror of
https://github.com/langflow-ai/langflow.git
synced 2026-07-24 04:13:36 +08:00
* langflow-webhook-auth-enable
* add-not-contains-filter-operator
* does-not-contains-operator
* less-redundant-explanation
* docs: add jq and path selection to data operations (#10083)
add-jq-and-path-to-data-operations
* smart transform historical names
* change back to smart transform
* jq expression capitalization/package name
* small edit for clarity of not contains operator
* read/write file component name changes
* docs: add smart router component (#10097)
* init
* add-to-release-notes
* remove-dynamic-output-as-parameter
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: screenshot audit (#10166)
* remove-unused
* agent-examples
* main-ui-screenshots
* components-screenshots
* combine-web-search-components
* simple-agent-flow-in-playground
* round-screenshots
* my-projects
* combine-data-components
* docs: component paths updates for lfx (#10130)
* contributing-bundles-path
* api-monitor-example
* concepts-components-page
* contribute-components-path
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: auto-add projects as MCP servers (#10096)
* add-mcp-auto-auth-as-default-behavior
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
* docs: amazon bedrock converse (#10289)
* use-bedrock-converse
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* Update docs/docs/Components/bundles-amazon.mdx
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs 1.7 release: add mock data component (#10288)
* add-component-and-release-note
* Apply suggestion from @aimurphy
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: update custom component docs (#10323)
* add-partial
* update-lfx-component-paths
* move-partial
* completed-quickstart
* clean up intro
* try-docker-with-custom-mount
* up-to-typed-annotations
* typed-annotations
* dynamic-fields
* end-of-file
* bundles-naming
* chore: update component index
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* docs: add cometapi back for 1.7 release (#10445)
* add-comet-bundle-back-for-1.7
* add-comet-to-release-notes
* docs: add back docling remote vlm for release 1.7 (#10489)
* add-back-docling-vlm-content
* add-release-note
* docs: ALTK component (#10511)
* broken-anchor
* sidebar-and-page
* add-release-note
* add-context-on-output
* docs: SSRF warning (#10573)
* add-ssrf-protection-env-var
* api-request-component
* Update docs/docs/Components/components-data.mdx
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* move-note-to-table
* release-note
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: dynamic create data component (#10517)
* add-dynamic-create-data-component-and-release-note
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* clarify-message-types
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: cuga component bundle (#10589)
* initlal-content
* cuga-specific-component-connections
* cleanup
* use-the-same-name
* add-lite-mode-remove-api-flag-and-mode
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* public-or-private-internet
* agent-doesnt-check-urls
* peer-review
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: remove docling vlm component from 1.7 release branch (#10630)
remove-vlm-component
* docs: rename component categories and make all components single pages (#10648)
* docs: OpenAPI spec version upgraded from 1.6.5 to 1.6.8 (#10627)
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com>
* up to models and agents
* sidebars
* fix-broken-links
* chore: Fix indentation on bundles-docling.mdx (#10640)
* sidebars
* redo-intros
* link-to-models
* data-components
* files-components-no-kb
* io-components
* helper-utility-components
* llm-ops-components
* logic-components
* processing-pages
* sidebars
* combine-legacy-components-into-one-page
* update-links
* remove-overview-pages-and-redirect
* make-mcp-tools-page
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* no-cap
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: combined web search component (#10664)
* combine-pages
* remove-rss-and-news-search-and-update-links
* remove-vlm-link
* leave-old-release-note-but-remove-link
* docs: add altk reflection component (#10660)
* add-new-component
* differentiate-components
* docs: mcp streamable http client (#10621)
* release note
* mcp-client-changes
* update-astra-example
* icons-and-copy
* order-of-names
* docs: add cuga decomposition strategy as advanced parameter (#10672)
* update-component-link
* init
* add-decomp-as-advanced-param
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* update-component-index
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: datastax bundles page (#10686)
* init
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: llm router changed to llm selector (#10663)
* update-component-name
* previous-name-and-release-note
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* docs: log alembic to stdout (#10711)
* docs-alembic-log-env-var
* cleanup
* remove-legacy-component-link
* docs: configure s3 for file storage backend (#10678)
* configure-file-storage-s3
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* clarify-s3-credentials
* add-storage-tags-and-cleanup-creds-seciton
* role-link-name
* fix-parse-error
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: clarify docling components (#10722)
* clarify-what-docling-components-do
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* component-name
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: legacy processing components for 1.7 (#10661)
* make-components-legacy
* remove-broken-link
* remove-outdated-components
* release-notes
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* add-back-dynamic-create-data
* fix-broken-link-in-smart-router
* remove-release-note
* Apply suggestions from code review
* legacy
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: remove dataframe to toolset component (#10854)
remove-df-to-toolset-component
* docs: clarify superuser flow run behavior (#10865)
superuser-clarification
* docs: add composio components (#10868)
more-composio-components
* docs: additional dependencies for running Docling in Linux-based Docker environments (#10861)
* initial-partial-and-troubleshooting
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: change component h3 headings to h2 (#10886)
bump-headings
* docs: include webhook request example with auth (#10885)
* include-webhook-request-examples
* fix-build-error
* docs: configurable api key validation (#10882)
* initial-content
* clarify-differences
* typo
* docs: langflow server supports streamable http (#10891)
* initial-updates
* check-params
* server-params
* peer-review
* update-release-note
* remove-delete-endpoint-for-legacy
* Revert "docs: langflow server supports streamable http (#10891)"
This reverts commit e1dbefc21d.
* docs: new registration endpoints, email form, and telemetry events (#10816)
* add-email-telemetry
* add-registration-v2-endpoints-and-telemetry
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* changes-from-peer-review
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: more info on smart router component (#10916)
* continue-example
* remove-duplicate-info
* match-by-route-name
* docs: sidebars release notes (#10949)
* move-to-support-section
* support
* docs: update comet api component parameters (#10950)
update-parameters
* docs: mcp server streamable http (#10955)
* content
* transport
* add-back-webhook-env-var
* Update docs/docs/Components/bundles-cuga.mdx
* docs: use bootstrap instead of deprecated launchctl load (#10951)
use-bootstrap-and-semicolons
* docs: lfx serve and lfx run (#10498)
* add-content
* add-entry-to-release-notes
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* partial-for-dependencies
* clarify-api-key-and-uvx
* lfx-included
* add-lfx-schema-and-cleanup-table
* install-nightly-curl-flow-json-clarify-dependencies-create-local-api-key
* not-automatic
* code-review
* work-in-progress
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: authorization changes (#10992)
* files-superuser
* get-config-endpoint-requires-api-key
* config-endpoint
* remove-parentheticals
* docs: custom components input types (#11027)
* io-links-and-update-paths
* remove-unncessary-sentence
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* docs: cuga bundle updates (#10998)
* change-policies-to-instructions
* new-screenshot
* Apply suggestions from code review
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
---------
Co-authored-by: April I. Murphy <36110273+aimurphy@users.noreply.github.com>
* files-when-knowldge-is-not-enabled
* docs: revert lfx (#11065)
revert-lfx
* docs: cuga model limits (#11064)
* add-warning
* remove-params
* add-watsonx-model
* bump-api-version
---------
Co-authored-by: April M <36110273+aimurphy@users.noreply.github.com>
Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
113 lines
4.7 KiB
Plaintext
113 lines
4.7 KiB
Plaintext
---
|
|
title: Contribute component tests
|
|
slug: /contributing-component-tests
|
|
---
|
|
|
|
This guide outlines how to structure and implement tests for application components to ensure consistency and adequate coverage.
|
|
|
|
## File naming
|
|
|
|
* The test file should follow the same directory structure as the component being tested, but should be placed in the corresponding unit tests folder.
|
|
|
|
For example, if the file path for the component is `src/lfx/src/lfx/components/data/`, then the test file should be located at `src/backend/tests/unit/components/data`.
|
|
|
|
* The test file name should use snake case and follow the pattern `test_<file_name>.py`.
|
|
|
|
For example, if the file to be tested is `FileComponent.py`, then the test file should be named `test_file_component.py`.
|
|
|
|
## File structure
|
|
|
|
* Each test file should group tests into classes by component. There should be no standalone test functions in the file— only test methods within classes.
|
|
* Class names should follow the pattern `Test<ClassName>`.
|
|
For example, if the component being tested is `FileComponent`, then the test class should be named `TestFileComponent`.
|
|
|
|
## Imports, inheritance, and mandatory methods
|
|
|
|
To standardize component tests, base test classes have been created and should be imported and inherited by all component test classes. These base classes are located in the file `src/backend/tests/unit/base.py`.
|
|
|
|
To import the base test classes:
|
|
|
|
```python
|
|
from tests.base import ComponentTestBaseWithClient
|
|
from tests.base import ComponentTestBaseWithoutClient
|
|
```
|
|
|
|
These base classes enforce mandatory methods that the component test classes must implement. The base classes ensure that components built in previous versions continues to work in the current version. By inheriting from one of these base classes, the developer must define the following methods decorated with `@pytest.fixture`:
|
|
|
|
* `component_class:` Returns the class of the component to be tested. For example:
|
|
|
|
```python
|
|
@pytest.fixture
|
|
def component_class(self):
|
|
return FileComponent
|
|
```
|
|
|
|
* `default_kwargs:` Returns a dictionary with the default arguments required to instantiate the component. For example:
|
|
|
|
```python
|
|
@pytest.fixture
|
|
def default_kwargs(self):
|
|
return {"file_path": "/tmp/test.txt", "_session_id": "123"}
|
|
```
|
|
|
|
* `file_names_mapping:` Returns a list of dictionaries representing the relationship between `version`, `module`, and `file_name` that the tested component has had over time. This can be left empty if it is an unreleased component. For example:
|
|
|
|
```python
|
|
@pytest.fixture
|
|
def file_names_mapping(self):
|
|
return [
|
|
{"version": "1.0.15", "module": "data", "file_name": "File"},
|
|
{"version": "1.0.16", "module": "data", "file_name": "File"},
|
|
{"version": "1.0.17", "module": "data", "file_name": "File"},
|
|
{"version": "1.0.18", "module": "data", "file_name": "File"},
|
|
{"version": "1.0.19", "module": "data", "file_name": "File"},
|
|
]
|
|
```
|
|
|
|
## Testing component functionalities
|
|
|
|
Once the basic structure of the test file is defined, implement test methods for the component's functionalities. The following guidelines must be followed:
|
|
|
|
1. Test method names should be descriptive, use snake case, and follow the pattern `test_<case_name>`.
|
|
2. Each test should follow the **Arrange, Act, Assert** pattern:
|
|
1. **Arrange**: Prepare the data.
|
|
2. **Act**: Execute the component.
|
|
3. **Assert**: Verify the result.
|
|
|
|
### Example
|
|
|
|
1. **Arrange**: Prepare the data.
|
|
|
|
It is recommended, but not mandatory, that you use the fixtures defined in the basic structure.
|
|
|
|
```python
|
|
def test_post_code_processing(self, component_class, default_kwargs):
|
|
component = component_class(**default_kwargs)
|
|
```
|
|
|
|
2. **Act**: Execute the component.
|
|
|
|
Call the `.to_frontend_node()` method of the component prepared during the **Arrange** step.
|
|
|
|
```python
|
|
def test_post_code_processing(self, component_class, default_kwargs):
|
|
component = component_class(**default_kwargs)
|
|
|
|
frontend_node = component.to_frontend_node()
|
|
```
|
|
|
|
3. **Assert**: Verify the result.
|
|
|
|
After executing the `.to_frontend_node()` method, the resulting data is available for verification in the dictionary `frontend_node["data"]["node"]`. Assertions should be clear and cover the expected outcomes.
|
|
|
|
```python
|
|
def test_file_component_processing(self, component_class, default_kwargs):
|
|
component = component_class(**default_kwargs)
|
|
|
|
frontend_node = component.to_frontend_node()
|
|
|
|
node_data = frontend_node["data"]["node"]
|
|
assert node_data["template"]["path"]["file_path"] == "/tmp/test.txt"
|
|
assert "path" in node_data["template"]
|
|
assert node_data["display_name"] == "File"
|
|
``` |