* 🔧 (playwright.config.ts): set workers to 1 to avoid parallel tests on CI ✨ (chat_io.spec.ts): refactor code to wait for modal to appear before clicking on the new project button ✨ (codeAreaModalComponent.spec.ts): refactor code to wait for modal to appear before clicking on the new project button, update code assertions ✨ (curl_api_generation.spec.ts): refactor code to wait for modal to appear before clicking on the new project button ✨ (dragAndDrop.spec.ts): refactor code to handle the case when generic node is not present ✨ (dropdownComponent.spec.ts): refactor code to wait for modal to appear before clicking on the new project button ✨ (filterEdge.spec.ts): add support for dynamic waiting for modal to appear before interacting with it 🐛 (filterEdge.spec.ts): remove redundant clicks on buttons and improve code readability ♻️ (filterEdge.spec.ts): refactor code to use loop instead of repetitive code for zooming out and waiting for timeout ✅ (filterEdge.spec.ts): update assertions to match changes in the application UI ✨ (floatComponent.spec.ts): refactor floatComponent test to use getByTitle instead of complex locators for button clicks ✨ (flowPage.spec.ts): refactor flowPage test to use getByTitle instead of complex locators for button clicks ✨ (group.spec.ts): refactor group test to use getByTestId instead of complex locators for button clicks and add loop to handle modal loading ✨ (inputComponent.spec.ts): refactor inputComponent test to use getByTitle instead of complex locators for button clicks ✨ (inputListComponent.spec.ts): add support for dynamic modal count to handle asynchronous modal loading 🐛 (inputListComponent.spec.ts): fix search query in inputListComponent test ♻️ (inputListComponent.spec.ts): refactor repetitive code for zooming out in inputListComponent test ✨ (intComponent.spec.ts): add support for dynamic modal count to handle asynchronous modal loading ♻️ (intComponent.spec.ts): refactor repetitive code for zooming out in intComponent test ✨ (keyPairListComponent.spec.ts): add support for dynamic modal count to handle modal loading delay ✨ (keyPairListComponent.spec.ts): update search input value to "amazon bedrock" for more accurate search results ✨ (keyPairListComponent.spec.ts): update node locator to "model_specsAmazon Bedrock" for more accurate node selection ✨ (keyPairListComponent.spec.ts): update zoom out action to use "zoom out" title for better readability ✨ (keyPairListComponent.spec.ts): update keypair verification locator to "editNodekeypair0" for more accurate verification ✨ (keyPairListComponent.spec.ts): update showcache checkbox locator to "showcache" for better readability ✨ (keyPairListComponent.spec.ts): update showcredentials_profile_name checkbox locator to "showcredentials_profile_name" for better readability ✨ (keyPairListComponent.spec.ts): update elementCountNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocator variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocatorNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCountNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocator variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocatorNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCountNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocator variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocatorNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCountNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocator variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocatorNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCountNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocator variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plusButtonLocatorNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementCountNode variable to handle nullability ✨ (keyPairListComponent.spec.ts): update keyPairVerification variable to handle nullability ✨ (keyPairListComponent.spec.ts): update elementKeyCount variable to handle nullability ✨ (keyPairListComponent.spec.ts): update plus ✨ (promptModalComponent.spec.ts): add support for dynamic modal count to handle asynchronous modal rendering ✨ (python_api_generation.spec.ts): add support for dynamic modal count to handle asynchronous modal rendering ✨ (saveComponents.spec.ts): add support for dynamic modal count to handle asynchronous modal rendering ✨ (store.spec.ts): add support for dynamic icon count to handle asynchronous rendering ✨ (textAreaModalComponent.spec.ts): add support for dynamic modal count to handle asynchronous modal rendering ✨ (toggleComponent.spec.ts): add support for dynamic waiting for modal to appear before interacting with it 🐛 (toggleComponent.spec.ts): fix typo in element locator for dataDirectory ♻️ (toggleComponent.spec.ts): refactor repetitive code for zooming out ✅ (toggleComponent.spec.ts): add assertions for checking toggle state and button clicks ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggleComponent.spec.ts): refactor repetitive code for toggling and checking toggle state ♻️ (toggle * 🔧 (frontend/package.json): add dotenv package as a dependency to enable environment variable configuration 🔧 (frontend/playwright.config.ts): add dotenv configuration to read environment variables from .env file ♻️ (frontend/src/modals/IOModal/components/chatView/chatMessage/index.tsx): refactor code to add data-testid attribute to span element for sender name to improve testability ✅ (frontend/tests/end-to-end/chatInputOutput.spec.ts): add end-to-end test for user interaction with chat input/output functionality ✅ (frontend/tests/end-to-end/chat_io_teste.spec.ts): add end-to-end test for chat input/output functionality with file upload ✅ (chat_io.spec.ts): remove chat_io.spec.ts test file as it is no longer needed ✨ (textInputOutput.spec.ts): add new test file textInputOutput.spec.ts to test the functionality of text input and output components in the application * 📝 (typescript_test.yml): remove unnecessary comments and unused code related to Playwright browser binaries caching and installation 🔧 (typescript_test.yml): refactor setup of Python and Poetry versions to use a custom GitHub action for caching and setting up the environment efficiently * ✨ (globalVariables.spec.ts): add end-to-end test for global variables functionality in the frontend ✨ (textInputOutput.spec.ts): rename test from "CodeAreaModalComponent" to "TextInputOutputComponent" to improve clarity and accuracy * 📝 (chatInputOutput.spec.ts): update test URL to use relative path instead of absolute path for better test portability 📝 (filterEdge.spec.ts): update test URL to use relative path instead of absolute path for better test portability 📝 (inputListComponent.spec.ts): update test URL to use relative path instead of absolute path for better test portability 📝 (store.spec.ts): update test URL to use relative path instead of absolute path for better test portability 📝 (textAreaModalComponent.spec.ts): update test URL to use relative path instead of absolute path for better test portability * 🚀 (typescript_test.yml): add uvicorn command to run the app with Playwright tests 🔧 (typescript_test.yml): configure uvicorn to use the langflow.main:create_app factory function, listen on all interfaces, use port 7860, enable auto-reload, read environment variables from .env file, and use asyncio event loop * 🔧 (typescript_test.yml): fix path to .env file in the uvicorn command to correctly load environment variables * 🔧 (typescript_test.yml): fix path to .env file in uvicorn command to correctly locate the file * 🐛 (typescript_test.yml): remove unnecessary --env-file flag from uvicorn command to fix an issue with loading environment variables * 🔧 (typescript_test.yml): run uvicorn command in the background and add a 2-second sleep to allow the server to start before running Playwright tests * ✨ (typescript_test.yml): update Playwright test command to use a single worker (--workers=1) to avoid race conditions and improve stability during test execution * ✨ (.github/workflows/typescript_test.yml): remove unnecessary flags from the Playwright test command to simplify the command and improve readability * 🔧 (typescript_test.yml): add command to install Playwright dependencies before running Playwright tests to ensure all required dependencies are installed * ⬆️ (typescript_test.yml): upgrade Playwright installation command to use 'npm install' instead of 'npx playwright install --with-deps' to simplify the installation process * ✅ (typescript_test.yml): add npm start command before running the tests to ensure the frontend server is running during the tests * 🔧 (typescript_test.yml): run 'npm start' command in the background to allow the next step to execute concurrently ✨ (typescript_test.yml): add step to upload blob report to GitHub Actions Artifacts for easier access and analysis * ✨ (typescript_test.yml): update Playwright test command to include shard index and total for parallel test execution * 🔧 (playwright.config.ts): add conditional dotenv configuration based on process.env.CI to prevent loading .env file in CI environment * 🔧 (playwright.config.ts): update dotenv configuration to only load .env file when not running in a CI environment 📝 (playwright.config.ts): add comment explaining the purpose of the dotenv configuration and providing a link to the Playwright documentation for test configuration * ♻️ (playwright.config.ts): comment out dotenv.config() calls to improve performance and remove unnecessary code * 📝 (playwright.config.ts): comment out the forbidOnly and retries options to disable them 📝 (playwright.config.ts): change the reporter option to always use the "blob" reporter 📝 (playwright.config.ts): comment out the globalTeardown option to disable it 📝 (playwright.config.ts): set the reuseExistingServer option to always be true * ♻️ (playwright.config.ts): refactor fullyParallel option to be set to false instead of true to disable running tests in parallel * ✨ (.github/workflows/typescript_test.yml): remove shardIndex and shardTotal arguments from the Playwright test command to simplify the command and avoid unnecessary complexity * 🐛 (playwright.config.ts): add --loop asyncio flag to uvicorn command to fix asyncio event loop issue * 📝 (playwright.config.ts): add support for reading environment variables from a .env file ♻️ (playwright.config.ts): refactor code to use path module instead of importing it from @playwright/test ✅ (playwright.config.ts): enable forbidOnly option to fail the build on CI if test.only is accidentally left in the source code ✅ (playwright.config.ts): enable retries option to retry tests on CI 2 times ♻️ (playwright.config.ts): refactor code to use globalTeardown option to specify the path to globalTeardown.ts file * 🔧 (typescript_test.yml): run Playwright tests in the background using the '&' operator to improve workflow efficiency ♻️ (playwright.config.ts): refactor workers configuration to use 10 workers on CI and 1 worker otherwise to optimize test execution 🐛 (darkStore.tsx): fix issue where stars and lastUpdated values were not being refreshed correctly on CI environment * ♻️ (darkStore.tsx): remove unnecessary empty line to improve code readability * 🔧 (typescript_test.yml): remove unnecessary ampersand (&) at the end of the 'npx playwright test' command to prevent running the command in the background * 📝 (darkStore.tsx): set "githubStars" to "0" in localStorage when running in CI environment to ensure consistent test results 🐛 (filterEdge.spec.ts): update test assertions to match changes in the application UI * 📝 (api.tsx): add condition to reject promise if error occurs during API request to GitHub to prevent auto-login flow 📝 (auto_login.spec.ts): update page.goto() URLs to use relative paths instead of absolute URLs 📝 (chatInputOutput.spec.ts): move dotenv.config() call after page.goto() to ensure proper environment variable loading 📝 (codeAreaModalComponent.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (curl_api_generation.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (dragAndDrop.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (dropdownComponent.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (floatComponent.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (flowPage.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (globalVariables.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (group.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (inputComponent.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (intComponent.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (keyPairListComponent.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (langflowShortcuts.spec.ts): update page.goto() URL to use relative path instead of absolute URL 📝 (nestedComponent.spec.ts): update page URL to use relative path instead of absolute path for better portability and flexibility 📝 (promptModalComponent.spec.ts): update page URL to use relative path instead of absolute path for better portability and flexibility 📝 (saveComponents.spec.ts): update page URL to use relative path instead of absolute path for better portability and flexibility 📝 (textInputOutput.spec.ts): update page URL to use relative path instead of absolute path for better portability and flexibility 📝 (toggleComponent.spec.ts): update page URL to use relative path instead of absolute path for better portability and flexibility * 🔧 (playwright.config.ts): set workers to a fixed value of 10 to improve test performance and avoid parallel tests on CI 🐛 (group.spec.ts): move page.goto("/") inside the test function to ensure the page is properly loaded before running the test * ✅ (chatInputOutput.spec.ts): add dotenv configuration to load environment variables before running the test 🐛 (chatInputOutput.spec.ts): fix issue where the test was not waiting for the page to load before interacting with it ✅ (curl_api_generation.spec.ts): add dotenv configuration to load environment variables before running the test 🐛 (curl_api_generation.spec.ts): fix issue where the test was not waiting for the page to load before interacting with it * 🔧 (playwright.config.ts): update number of workers based on the value of the CI environment variable 🐛 (chatInputOutput.spec.ts): fix potential null reference error when getting modal count 🐛 (codeAreaModalComponent.spec.ts): fix potential null reference error when getting modal count 🐛 (curl_api_generation.spec.ts): fix potential null reference error when getting modal count 🐛 (dropdownComponent.spec.ts): fix potential null reference error when getting modal count 🐛 (filterEdge.spec.ts): fix potential null reference error when getting modal count 🐛 (globalVariables.spec.ts): fix potential null reference error when getting modal count 🐛 (group.spec.ts): fix potential null reference error when getting modal count 🐛 (inputComponent.spec.ts): fix potential null reference error when getting modal count 🐛 (inputListComponent.spec.ts): fix potential null reference error when getting modal count 🐛 (intComponent.spec.ts): fix potential null reference error when getting modal count 🐛 (keyPairListComponent.spec.ts): fix potential null reference error when getting modal count 🐛 (langflowShortcuts.spec.ts): fix potential null reference error when getting modal count 🐛 (nestedComponent.spec.ts): fix potential null reference error when getting modal count 🐛 (promptModalComponent.spec.ts): fix potential null pointer exception when accessing page object 🐛 (python_api_generation.spec.ts): fix potential null pointer exception when accessing page object 🐛 (saveComponents.spec.ts): fix potential null pointer exception when accessing page object 🐛 (textAreaModalComponent.spec.ts): fix potential null pointer exception when accessing page object 🐛 (textInputOutput.spec.ts): fix potential null pointer exception when accessing page object 🐛 (toggleComponent.spec.ts): fix potential null pointer exception when accessing page object 🐛 (tweaks_test.spec.ts): fix potential null pointer exception when accessing page object * 🔧 (playwright.config.ts): update workers configuration to use 10 workers on CI and default to an empty value otherwise 🔧 (playwright.config.ts): update reporter configuration to use "blob" reporter on CI and "html" reporter otherwise * 🔧 (playwright.config.ts): update workers configuration to use a default value of 5 when not running on CI environment, to improve test performance and resource usage * ✨ (playwright.config.ts): enable fully parallel test execution to improve test performance 🐛 (chatInputOutput.spec.ts): handle potential error when counting modal titles to prevent test failures 🐛 (codeAreaModalComponent.spec.ts): handle potential error when counting modal titles to prevent test failures 🐛 (curl_api_generation.spec.ts): handle potential error when counting modal titles to prevent test failures 🐛 (dragAndDrop.spec.ts): handle potential error when counting modal titles to prevent test failures 🐛 (dropdownComponent.spec.ts): handle potential error when counting modal titles to prevent test failures 🐛 (filterEdge.spec.ts): handle potential error when counting modal titles to prevent test failures 🐛 (flowPage.spec.ts): handle potential error when counting modal titles to prevent test failures 🐛 (globalVariables.spec.ts): handle potential error when counting modal titles to prevent test failures 🐛 (group.spec.ts): Fix bug in group and ungroup updating values test where modalCount was not correctly initialized 🐛 (inputComponent.spec.ts): Fix bug in InputComponent test where modalCount was not correctly initialized 🐛 (inputListComponent.spec.ts): Fix bug in InputListComponent test where modalCount was not correctly initialized 🐛 (intComponent.spec.ts): Fix bug in IntComponent test where modalCount was not correctly initialized 🐛 (keyPairListComponent.spec.ts): Fix bug in KeypairListComponent test where modalCount was not correctly initialized 🐛 (langflowShortcuts.spec.ts): Fix bug in LangflowShortcuts test where modalCount was not correctly initialized 🐛 (nestedComponent.spec.ts): Fix bug in NestedComponent test where modalCount was not correctly initialized 🐛 (promptModalComponent.spec.ts): Fix bug in PromptTemplateComponent test where modalCount was not correctly initialized 🐛 (python_api_generation.spec.ts): Fix bug in python_api_generation test where modalCount was not correctly initialized 🐛 (saveComponents.spec.ts): Fix bug in save group component tests where modalCount was not correctly initialized 🐛 (textAreaModalComponent.spec.ts): Fix bug in TextAreaModalComponent test where modalCount was not correctly initialized ✅ (textInputOutput.spec.ts): handle error when getting modal title element and set modalCount to 0 in case of error ✅ (toggleComponent.spec.ts): handle error when getting modal title element and set modalCount to 0 in case of error ✅ (tweaks_test.spec.ts): handle error when getting modal title element and set modalCount to 0 in case of error * ⬆️ (playwright.config.ts): downgrade the number of workers from 10 to 5 to reduce resource usage and improve test stability * ⬆️ (playwright.config.ts): decrease the number of workers to 1 to avoid parallel tests on CI 📝 (playwright.config.ts): comment out the workers configuration and add a new line with a single worker to clarify the intention ✨ (playwright.config.ts): add a new file "temp" to the frontend directory * 📝 (chatInputOutput.spec.ts): add support for loading environment variables from .env file for local development and CI/CD environments 📝 (textInputOutput.spec.ts): add support for loading environment variables from .env file for local development and CI/CD environments * 🔧 (typescript_test.yml): add step to create .env file and populate it with secret environment variables 🚀 (typescript_test.yml): run Playwright tests after creating .env file to ensure tests have access to necessary environment variables * ✅ (dragAndDrop.spec.ts): add a test to close the modal by clicking on the "Close" button * 🔧 (typescript_test.yml): update Playwright test command to include shard index and total for distributed test execution ♻️ (playwright.config.ts): refactor workers configuration to use environment variable CI to determine the number of workers for parallel tests * ⬆️ (playwright.config.ts): downgrade the number of workers to 1 to avoid parallel tests on CI environment * 📝 (filterEdge.spec.ts): remove unnecessary click on element with id 'headlessui-disclosure-button-:rld:' ♻️ (filterEdge.spec.ts): remove redundant assertions for elements with ids 'saved_componentsBasic RAG' and 'saved_componentsGroup' ♻️ (floatComponent.spec.ts): refactor code to handle modal dynamically by checking for modal title element and waiting for it to appear before clicking on 'new-project-btn' element * 🔧 (playwright.config.ts): update number of workers to 5 when running on CI to improve test parallelization 🐛 (filterEdge.spec.ts): add a 2-second delay before asserting visibility of tooltips to ensure they are fully rendered before checking visibility * 📝 (index.tsx): add data-testid attribute to the flow name element for easier testing and querying 📝 (index.tsx): add data-testid attribute to the public checkbox for easier testing and querying 📝 (test_file.txt): add a test file for end-to-end testing purposes 📝 (fileUploadComponent.spec.ts): add end-to-end test for file upload functionality ✨ (flowSettings.spec.ts): add end-to-end test for flow settings functionality ✨ (store.spec.ts): add end-to-end test for sharing a component with the share button * 🔧 (playwright.config.ts): set workers to 1 to avoid parallel tests execution and improve stability 📝 (test_file.txt): remove newline at the end of the file for consistency ♻️ (flowPage.spec.ts): refactor code to remove unnecessary lines and commented out code ♻️ (flowSettings.spec.ts): refactor code to generate a random flow name instead of hardcoding it * 🔧 (typescript_test.yml): remove shardIndex and shardTotal arguments from the 'npx playwright test' command to simplify the command and remove unnecessary complexity 🐛 (textInputOutput.spec.ts): change 'textContent()' to 'inputValue()' to correctly retrieve the value of the input field * ♻️ (typescript_test.yml): refactor test workflow to remove unnecessary matrix configuration for shardIndex and shardTotal ✅ (typescript_test.yml): update test workflow to run tests on a single shard instead of multiple shards for simplicity and efficiency * 🔧 (playwright.config.ts): add clipboard permissions for chromium and firefox projects to enable clipboard read and write functionality 🔧 (curl_api_generation.spec.ts): remove unnecessary context permission grant for clipboard read and write 🔧 (python_api_generation.spec.ts): remove unnecessary context permission grant for clipboard read and write 🔧 (tweaks_test.spec.ts): remove unnecessary context permission grant for clipboard read and write --------- Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@logspace.ai> |
||
|---|---|---|
| .devcontainer | ||
| .github | ||
| .vscode | ||
| deploy | ||
| docker_example | ||
| docs | ||
| scripts | ||
| src | ||
| tests | ||
| .dockerignore | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .readthedocs.yaml | ||
| base.Dockerfile | ||
| build_and_push.Dockerfile | ||
| build_and_push_base.Dockerfile | ||
| cdk.Dockerfile | ||
| CODE_OF_CONDUCT.md | ||
| container-cmd-cdk.sh | ||
| CONTRIBUTING.md | ||
| dev.Dockerfile | ||
| docker-compose.debug.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| example.har | ||
| GCP_DEPLOYMENT.md | ||
| LICENSE | ||
| Makefile | ||
| package-lock.json | ||
| package.json | ||
| poetry.lock | ||
| pyproject.toml | ||
| README.md | ||
| render.yaml | ||
Langflow is a new, visual way to build, iterate and deploy AI apps.
⚡️ Documentation and Community
📦 Installation
You can install Langflow with pip:
# Make sure you have Python 3.10 installed on your system.
# Install the pre-release version
python -m pip install langflow --pre --force-reinstall
# or stable version
python -m pip install langflow -U
Then, run Langflow with:
python -m langflow run
You can also preview Langflow in HuggingFace Spaces. Clone the space using this link, to create your own Langflow workspace in minutes.
🎨 Creating Flows
Creating flows with Langflow is easy. Simply drag components from the sidebar onto the canvas and connect them to start building your application.
Explore by editing prompt parameters, grouping components into a single high-level component, and building your own Custom Components.
Once you’re done, you can export your flow as a JSON file.
Load the flow with:
from langflow.load import run_flow_from_json
results = run_flow_from_json("path/to/flow.json", input_value="Hello, World!")
🖥️ Command Line Interface (CLI)
Langflow provides a command-line interface (CLI) for easy management and configuration.
Usage
You can run the Langflow using the following command:
langflow run [OPTIONS]
Each option is detailed below:
--help: Displays all available options.--host: Defines the host to bind the server to. Can be set using theLANGFLOW_HOSTenvironment variable. The default is127.0.0.1.--workers: Sets the number of worker processes. Can be set using theLANGFLOW_WORKERSenvironment variable. The default is1.--timeout: Sets the worker timeout in seconds. The default is60.--port: Sets the port to listen on. Can be set using theLANGFLOW_PORTenvironment variable. The default is7860.--config: Defines the path to the configuration file. The default isconfig.yaml.--env-file: Specifies the path to the .env file containing environment variables. The default is.env.--log-level: Defines the logging level. Can be set using theLANGFLOW_LOG_LEVELenvironment variable. The default iscritical.--components-path: Specifies the path to the directory containing custom components. Can be set using theLANGFLOW_COMPONENTS_PATHenvironment variable. The default islangflow/components.--log-file: Specifies the path to the log file. Can be set using theLANGFLOW_LOG_FILEenvironment variable. The default islogs/langflow.log.--cache: Selects the type of cache to use. Options areInMemoryCacheandSQLiteCache. Can be set using theLANGFLOW_LANGCHAIN_CACHEenvironment variable. The default isSQLiteCache.--dev/--no-dev: Toggles the development mode. The default isno-dev.--path: Specifies the path to the frontend directory containing build files. This option is for development purposes only. Can be set using theLANGFLOW_FRONTEND_PATHenvironment variable.--open-browser/--no-open-browser: Toggles the option to open the browser after starting the server. Can be set using theLANGFLOW_OPEN_BROWSERenvironment variable. The default isopen-browser.--remove-api-keys/--no-remove-api-keys: Toggles the option to remove API keys from the projects saved in the database. Can be set using theLANGFLOW_REMOVE_API_KEYSenvironment variable. The default isno-remove-api-keys.--install-completion [bash|zsh|fish|powershell|pwsh]: Installs completion for the specified shell.--show-completion [bash|zsh|fish|powershell|pwsh]: Shows completion for the specified shell, allowing you to copy it or customize the installation.--backend-only: This parameter, with a default value ofFalse, allows running only the backend server without the frontend. It can also be set using theLANGFLOW_BACKEND_ONLYenvironment variable.--store: This parameter, with a default value ofTrue, enables the store features, use--no-storeto deactivate it. It can be configured using theLANGFLOW_STOREenvironment variable.
These parameters are important for users who need to customize the behavior of Langflow, especially in development or specialized deployment scenarios.
Environment Variables
You can configure many of the CLI options using environment variables. These can be exported in your operating system or added to a .env file and loaded using the --env-file option.
A sample .env file named .env.example is included with the project. Copy this file to a new file named .env and replace the example values with your actual settings. If you're setting values in both your OS and the .env file, the .env settings will take precedence.
Deployment
Deploy Langflow on Google Cloud Platform
Follow our step-by-step guide to deploy Langflow on Google Cloud Platform (GCP) using Google Cloud Shell. The guide is available in the Langflow in Google Cloud Platform document.
Alternatively, click the "Open in Cloud Shell" button below to launch Google Cloud Shell, clone the Langflow repository, and start an interactive tutorial that will guide you through the process of setting up the necessary resources and deploying Langflow on your GCP project.
Deploy on Railway
Deploy on Render
👋 Contributing
We welcome contributions from developers of all levels to our open-source project on GitHub. If you'd like to contribute, please check our contributing guidelines and help make Langflow more accessible.
🌟 Contributors
📄 License
Langflow is released under the MIT License. See the LICENSE file for details.
