diff --git a/.github/workflows/python_test.yml b/.github/workflows/python_test.yml new file mode 100644 index 0000000000..629633f23d --- /dev/null +++ b/.github/workflows/python_test.yml @@ -0,0 +1,43 @@ +name: test + +on: + push: + branches: [main] + paths: + - "poetry.lock" + - "pyproject.toml" + - "src/backend/**" + pull_request: + branches: [dev] + paths: + - "poetry.lock" + - "pyproject.toml" + - "src/backend/**" + +env: + POETRY_VERSION: "1.8.2" + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: + - "3.10" + - "3.11" + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + steps: + - uses: actions/checkout@v4 + - name: Install poetry + run: pipx install poetry==$POETRY_VERSION + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: "poetry" + - name: Install dependencies + run: poetry install + - name: Run unit tests + run: | + make tests diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 10ab9b3244..4a70c2300d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,7 @@ on: - "src/backend/**" env: - POETRY_VERSION: "1.5.0" + POETRY_VERSION: "1.8.2" jobs: build: @@ -37,7 +37,9 @@ jobs: python-version: ${{ matrix.python-version }} cache: "poetry" - name: Install dependencies - run: poetry install + run: | + poetry env use ${{ matrix.python-version }} + poetry install - name: Run unit tests run: | make tests diff --git a/.github/workflows/typescript_test.yml b/.github/workflows/typescript_test.yml new file mode 100644 index 0000000000..a75327785f --- /dev/null +++ b/.github/workflows/typescript_test.yml @@ -0,0 +1,149 @@ +name: Run Frontend Tests + +on: + pull_request: + paths: + - "src/frontend/**" + +env: + POETRY_VERSION: "1.8.2" + NODE_VERSION: "21" + PYTHON_VERSION: "3.10" + # Define the directory where Playwright browsers will be installed. + # Adjust if your project uses a different path. + PLAYWRIGHT_BROWSERS_PATH: "ms-playwright" + +jobs: + setup-and-test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + shardIndex: [1, 2, 3, 4] + shardTotal: [4] + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v3 + id: setup-node + with: + node-version: ${{ env.NODE_VERSION }} + cache: "npm" + + - name: Install Node.js dependencies + run: | + cd src/frontend + npm ci + if: ${{ steps.setup-node.outputs.cache-hit != 'true' }} + + # Attempt to restore the correct Playwright browser binaries based on the + # currently installed version of Playwright (The browser binary versions + # may change with Playwright versions). + # Note: Playwright's cache directory is hard coded because that's what it + # says to do in the docs. There doesn't appear to be a command that prints + # it out for us. + # - uses: actions/cache@v4 + # id: playwright-cache + # with: + # path: ${{ env.PLAYWRIGHT_BROWSERS_PATH }} + # key: "${{ runner.os }}-playwright-${{ hashFiles('src/frontend/package-lock.json') }}" + # # As a fallback, if the Playwright version has changed, try use the + # # most recently cached version. There's a good chance that at least one + # # of the browser binary versions haven't been updated, so Playwright can + # # skip installing that in the next step. + # # Note: When falling back to an old cache, `cache-hit` (used below) + # # will be `false`. This allows us to restore the potentially out of + # # date cache, but still let Playwright decide if it needs to download + # # new binaries or not. + # restore-keys: | + # ${{ runner.os }}-playwright- + - name: Cache playwright binaries + uses: actions/cache@v4 + id: playwright-cache + with: + path: | + ~/.cache/ms-playwright + key: ${{ runner.os }}-playwright-${{ hashFiles('src/frontend/package-lock.json') }} + - name: Install Frontend dependencies + run: | + cd src/frontend + npm ci + + - name: Install Playwright's browser binaries + run: | + cd src/frontend + npx playwright install --with-deps + if: steps.playwright-cache.outputs.cache-hit != 'true' + - name: Install Playwright's dependencies + run: | + cd src/frontend + npx playwright install-deps + if: steps.playwright-cache.outputs.cache-hit != 'true' + + # If the Playwright browser binaries weren't able to be restored, we tell + # paywright to install everything for us. + # - name: Install Playwright's dependencies + # if: steps.playwright-cache.outputs.cache-hit != 'true' + # run: npx playwright install --with-deps + + - name: Install Poetry + run: pipx install "poetry==${{ env.POETRY_VERSION }}" + + - name: Set up Python + uses: actions/setup-python@v5 + id: setup-python + with: + python-version: ${{ env.PYTHON_VERSION }} + cache: "poetry" + + - name: Install Python dependencies + run: | + poetry env use ${{ env.PYTHON_VERSION }} + poetry install + if: ${{ steps.setup-python.outputs.cache-hit != 'true' }} + + - name: Run Playwright Tests + run: | + cd src/frontend + npx playwright test --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} + + - name: Upload blob report to GitHub Actions Artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: blob-report-${{ matrix.shardIndex }} + path: src/frontend/blob-report + retention-days: 1 + + merge-reports: + needs: setup-and-test + runs-on: ubuntu-latest + if: always() + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Download blob reports from GitHub Actions Artifacts + uses: actions/download-artifact@v4 + with: + path: all-blob-reports + pattern: blob-report-* + merge-multiple: true + + - name: Merge into HTML Report + run: | + npx playwright merge-reports --reporter html ./all-blob-reports + + - name: Upload HTML report + uses: actions/upload-artifact@v4 + with: + name: html-report--attempt-${{ github.run_attempt }} + path: playwright-report + retention-days: 14 diff --git a/.gitignore b/.gitignore index a2ff9a8837..fb5586bc52 100644 --- a/.gitignore +++ b/.gitignore @@ -262,3 +262,5 @@ src/backend/base/langflow/frontend/ .docker scratchpad* chroma*/* +stuff/* +src/frontend/playwright-report/index.html diff --git a/Makefile b/Makefile index cb8991f563..bad35eef38 100644 --- a/Makefile +++ b/Makefile @@ -47,9 +47,9 @@ run_frontend: tests_frontend: ifeq ($(UI), true) - cd src/frontend && ./run-tests.sh --ui + cd src/frontend && npx playwright test --ui --project=chromium else - cd src/frontend && ./run-tests.sh + cd src/frontend && npx playwright test --project=chromium endif run_cli: diff --git a/src/frontend/.github/workflows/playwright.yml b/src/frontend/.github/workflows/playwright.yml deleted file mode 100644 index 90b6b700d4..0000000000 --- a/src/frontend/.github/workflows/playwright.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Playwright Tests -on: - push: - branches: [ main, master ] - pull_request: - branches: [ main, master ] -jobs: - test: - timeout-minutes: 60 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - name: Install dependencies - run: npm ci - - name: Install Playwright Browsers - run: npx playwright install --with-deps - - name: Run Playwright tests - run: npx playwright test - - uses: actions/upload-artifact@v3 - if: always() - with: - name: playwright-report - path: playwright-report/ - retention-days: 30 diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index 2d61fd033e..10ad180738 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -5770,9 +5770,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -7079,9 +7079,9 @@ } }, "node_modules/katex": { - "version": "0.16.9", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz", - "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz", + "integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" diff --git a/src/frontend/playwright-report/index.html b/src/frontend/playwright-report/index.html deleted file mode 100644 index 131efdcae9..0000000000 --- a/src/frontend/playwright-report/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - Document - - - - - diff --git a/src/frontend/playwright.config.ts b/src/frontend/playwright.config.ts index 30e7216c09..59f30c4bae 100644 --- a/src/frontend/playwright.config.ts +++ b/src/frontend/playwright.config.ts @@ -12,7 +12,7 @@ import { defineConfig, devices } from "@playwright/test"; export default defineConfig({ testDir: "./tests", /* Run tests in files in parallel */ - fullyParallel: false, + fullyParallel: true, /* Fail the build on CI if you accidentally left test.only in the source code. */ forbidOnly: !!process.env.CI, /* Retry on CI only */ @@ -20,18 +20,22 @@ export default defineConfig({ /* Opt out of parallel tests on CI. */ workers: process.env.CI ? 2 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: [ - ["html", { open: "never", outputFolder: "playwright-report/test-results" }], - ], + timeout: 120 * 1000, + // reporter: [ + // ["html", { open: "never", outputFolder: "playwright-report/test-results" }], + // ], + reporter: process.env.CI ? "blob" : "html", /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { /* Base URL to use in actions like `await page.goto('/')`. */ - // baseURL: "http://127.0.0.1:3000", + baseURL: "http://localhost:3000/", /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ trace: "on-first-retry", }, + globalTeardown: require.resolve("./tests/globalTeardown.ts"), + /* Configure projects for major browsers */ projects: [ { @@ -48,39 +52,28 @@ export default defineConfig({ // name: "webkit", // use: { ...devices["Desktop Safari"] }, // }, - - /* Test against mobile viewports. */ - // { - // name: 'Mobile Chrome', - // use: { ...devices['Pixel 5'] }, - // }, - // { - // name: 'Mobile Safari', - // use: { ...devices['iPhone 12'] }, - // }, - - /* Test against branded browsers. */ - // { - // name: 'Microsoft Edge', - // use: { ...devices['Desktop Edge'], channel: 'msedge' }, - // }, - // { - // name: 'Google Chrome', - // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, - // }, ], - /* Run your local dev server before starting the tests */ - // webServer: [ - // { - // command: "npm run backend", - // reuseExistingServer: !process.env.CI, - // timeout: 120 * 1000, - // }, - // { - // command: "npm run start", - // url: "http://127.0.0.1:3000", - // reuseExistingServer: !process.env.CI, - // }, - // ], + webServer: [ + { + command: + "poetry run uvicorn --factory langflow.main:create_app --host 127.0.0.1 --port 7860", + port: 7860, + env: { + LANGFLOW_DATABASE_URL: "sqlite:///./temp", + LANGFLOW_AUTO_LOGIN: "true", + }, + stdout: "ignore", + + reuseExistingServer: !process.env.CI, + timeout: 120 * 1000, + }, + { + command: "npm start", + port: 3000, + env: { + VITE_PROXY_TARGET: "http://127.0.0.1:7860", + }, + }, + ], }); diff --git a/src/frontend/run-tests.sh b/src/frontend/run-tests.sh index bb4535f5bc..f04a096623 100755 --- a/src/frontend/run-tests.sh +++ b/src/frontend/run-tests.sh @@ -3,6 +3,17 @@ # Default value for the --ui flag ui=false +# Absolute path to the project root directory +PROJECT_ROOT="../../" + +# Check if necessary commands are available +for cmd in npx poetry fuser; do + if ! command -v $cmd &> /dev/null; then + echo "Error: Required command '$cmd' is not installed. Aborting." + exit 1 + fi +done + # Parse command-line arguments while [[ $# -gt 0 ]]; do key="$1" @@ -23,54 +34,85 @@ done terminate_process_by_port() { port="$1" echo "Terminating process on port: $port" - fuser -k -n tcp "$port" # Forcefully terminate processes using the specified port - echo "Process terminated." + if ! fuser -k -n tcp "$port"; then + echo "Failed to terminate process on port $port. Please check manually." + else + echo "Process terminated." + fi } delete_temp() { - cd ../../ - echo "Deleting temp database" - rm temp - echo "Temp database deleted." + if cd "$PROJECT_ROOT"; then + echo "Deleting temp database" + rm -f temp && echo "Temp database deleted." || echo "Failed to delete temp database." + else + echo "Failed to navigate to project root for cleanup." + fi } - # Trap signals to ensure cleanup on script termination trap 'terminate_process_by_port 7860; terminate_process_by_port 3000; delete_temp' EXIT -# install playwright if there is not installed yet -npx playwright install +# Ensure the script is executed from the project root directory +if ! cd "$PROJECT_ROOT"; then + echo "Error: Failed to navigate to project root directory. Aborting." + exit 1 +fi -# Navigate to the project root directory (where the Makefile is located) -cd ../../ +# Install playwright if not installed yet +if ! npx playwright install; then + echo "Error: Failed to install Playwright. Aborting." + exit 1 +fi -# Start the frontend using 'make frontend' in the background -make frontend & +# Start the frontend +make frontend > /dev/null 2>&1 & -# Give some time for the frontend to start (adjust sleep duration as needed) +# Adjust sleep duration as needed sleep 10 -#install backend -poetry install --extras deploy - -# Start the backend using 'make backend' in the background -LANGFLOW_DATABASE_URL=sqlite:///./temp LANGFLOW_AUTO_LOGIN=True poetry run langflow run --backend-only --port 7860 --host 0.0.0.0 --no-open-browser --env-file .env & +# Install backend dependencies +if ! poetry install; then + echo "Error: Failed to install backend dependencies. Aborting." + exit 1 +fi -# Give some time for the backend to start (adjust sleep duration as needed) +# Start the backend +LANGFLOW_DATABASE_URL=sqlite:///./temp LANGFLOW_AUTO_LOGIN=True poetry run langflow run --backend-only --port 7860 --host 0.0.0.0 --no-open-browser > /dev/null 2>&1 & +backend_pid=$! # Capture PID of the backend process +# Adjust sleep duration as needed sleep 25 # Navigate to the test directory -cd src/frontend +if ! cd src/frontend; then + echo "Error: Failed to navigate to test directory. Aborting." + kill $backend_pid # Terminate the backend process if navigation fails + echo "Backend process terminated." + exit 1 +fi + +# Check if backend is running +if ! lsof -i :7860; then + echo "Error: Backend is not running. Aborting." + exit 1 +fi -# Run Playwright tests with or without UI based on the --ui flag +# Run Playwright tests if [ "$ui" = true ]; then - PLAYWRIGHT_HTML_REPORT=playwright-report/e2e npx playwright test tests/end-to-end --ui --project=chromium + TEST_COMMAND="npx playwright test tests/end-to-end --ui --project=chromium" else - PLAYWRIGHT_HTML_REPORT=playwright-report/e2e npx playwright test tests/end-to-end --project=chromium + TEST_COMMAND="npx playwright test tests/end-to-end --project=chromium" fi -npx playwright show-report +if ! PLAYWRIGHT_HTML_REPORT=playwright-report/e2e $TEST_COMMAND; then + echo "Error: Playwright tests failed. Aborting." + exit 1 +fi + +if [ "$ui" = true ]; then + echo "Opening Playwright report..." + npx playwright show-report +fi -# After the tests are finished, you can add cleanup or teardown logic here if needed -# The trap will automatically terminate processes by port on script exit +trap 'terminate_process_by_port 7860; terminate_process_by_port 3000; delete_temp; kill $backend_pid 2>/dev/null' EXIT \ No newline at end of file diff --git a/src/frontend/tests/end-to-end/auto_login.spec.ts b/src/frontend/tests/end-to-end/auto_login.spec.ts index 7e847cefd8..582e52bb81 100644 --- a/src/frontend/tests/end-to-end/auto_login.spec.ts +++ b/src/frontend/tests/end-to-end/auto_login.spec.ts @@ -1,28 +1,28 @@ import { test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(16000); - test.setTimeout(140000); + // await page.waitForTimeout(16000); + // test.setTimeout(140000); }); test.describe("Auto_login tests", () => { test("auto_login sign in", async ({ page }) => { - await page.goto("http:localhost:3000/"); + await page.goto("/"); await page.locator('//*[@id="new-project-btn"]').click(); }); test("auto_login block_admin", async ({ page }) => { - await page.goto("http:localhost:3000/"); + await page.goto("/"); await page.locator('//*[@id="new-project-btn"]').click(); await page.waitForTimeout(5000); - await page.goto("http:localhost:3000/login"); + await page.goto("/login"); await page.locator('//*[@id="new-project-btn"]').click(); await page.waitForTimeout(5000); - await page.goto("http:localhost:3000/admin"); + await page.goto("/admin"); await page.locator('//*[@id="new-project-btn"]').click(); await page.waitForTimeout(5000); - await page.goto("http:localhost:3000/admin/login"); + await page.goto("/admin/login"); await page.locator('//*[@id="new-project-btn"]').click(); await page.waitForTimeout(5000); }); diff --git a/src/frontend/tests/end-to-end/codeAreaModalComponent.spec.ts b/src/frontend/tests/end-to-end/codeAreaModalComponent.spec.ts index 1ee611fc44..2dac888acf 100644 --- a/src/frontend/tests/end-to-end/codeAreaModalComponent.spec.ts +++ b/src/frontend/tests/end-to-end/codeAreaModalComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(2000); - test.setTimeout(120000); + // await page.waitForTimeout(2000); + // test.setTimeout(120000); }); test("CodeAreaModalComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/dragAndDrop.spec.ts b/src/frontend/tests/end-to-end/dragAndDrop.spec.ts index bcaa08db06..144835cd0a 100644 --- a/src/frontend/tests/end-to-end/dragAndDrop.spec.ts +++ b/src/frontend/tests/end-to-end/dragAndDrop.spec.ts @@ -1,13 +1,13 @@ import { expect, test } from "@playwright/test"; import { readFileSync } from "fs"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(3000); - test.setTimeout(120000); + // await page.waitForTimeout(3000); + // test.setTimeout(120000); }); test.describe("drag and drop test", () => { /// test("drop collection", async ({ page }) => { - await page.goto("http:localhost:3000/"); + await page.goto("/"); await page.locator("span").filter({ hasText: "My Collection" }).isVisible(); // Read your file into a buffer. const jsonContent = readFileSync( diff --git a/src/frontend/tests/end-to-end/dropdownComponent.spec.ts b/src/frontend/tests/end-to-end/dropdownComponent.spec.ts index 52f8da0a10..a0995a3e0c 100644 --- a/src/frontend/tests/end-to-end/dropdownComponent.spec.ts +++ b/src/frontend/tests/end-to-end/dropdownComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(4000); - test.setTimeout(120000); + // await page.waitForTimeout(4000); + // test.setTimeout(120000); }); test("dropDownComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); @@ -255,6 +255,6 @@ class AmazonBedrockComponent(CustomComponent): `; await page.locator("textarea").fill(emptyOptionsCode); - await page.getByRole('button', { name: 'Check & Save' }).click(); + await page.getByRole("button", { name: "Check & Save" }).click(); await page.getByText("No parameters are available for display.").isVisible(); -}) +}); diff --git a/src/frontend/tests/end-to-end/floatComponent.spec.ts b/src/frontend/tests/end-to-end/floatComponent.spec.ts index ec4363b388..2e0a2a8ad9 100644 --- a/src/frontend/tests/end-to-end/floatComponent.spec.ts +++ b/src/frontend/tests/end-to-end/floatComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(5000); - test.setTimeout(120000); + // await page.waitForTimeout(5000); + // test.setTimeout(120000); }); test("FloatComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/flowPage.spec.ts b/src/frontend/tests/end-to-end/flowPage.spec.ts index 69f812f8a3..a5e628a537 100644 --- a/src/frontend/tests/end-to-end/flowPage.spec.ts +++ b/src/frontend/tests/end-to-end/flowPage.spec.ts @@ -1,17 +1,17 @@ import { Page, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(6000); - test.setTimeout(120000); + // await page.waitForTimeout(6000); + // test.setTimeout(120000); }); test.describe("Flow Page tests", () => { async function goToFlowPage(page: Page) { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.getByRole("button", { name: "New Project" }).click(); } test("save", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/group.spec.ts b/src/frontend/tests/end-to-end/group.spec.ts index fe717b8f85..f563bc1fe4 100644 --- a/src/frontend/tests/end-to-end/group.spec.ts +++ b/src/frontend/tests/end-to-end/group.spec.ts @@ -1,13 +1,13 @@ import { expect, test } from "@playwright/test"; import { readFileSync } from "fs"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(7000); - test.setTimeout(120000); + // await page.waitForTimeout(7000); + // test.setTimeout(120000); }); test.describe("group node test", () => { /// test("group and ungroup updating values", async ({ page }) => { - await page.goto("http:localhost:3000/"); + await page.goto("/"); await page.locator('//*[@id="new-project-btn"]').click(); await page.getByTestId("blank-flow").click(); diff --git a/src/frontend/tests/end-to-end/inputComponent.spec.ts b/src/frontend/tests/end-to-end/inputComponent.spec.ts index 002a0e0cbb..c702da4f5e 100644 --- a/src/frontend/tests/end-to-end/inputComponent.spec.ts +++ b/src/frontend/tests/end-to-end/inputComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(8000); - test.setTimeout(120000); + // await page.waitForTimeout(8000); + // test.setTimeout(120000); }); test("InputComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/intComponent.spec.ts b/src/frontend/tests/end-to-end/intComponent.spec.ts index c591cab51e..a802e898a5 100644 --- a/src/frontend/tests/end-to-end/intComponent.spec.ts +++ b/src/frontend/tests/end-to-end/intComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(9000); - test.setTimeout(120000); + // await page.waitForTimeout(9000); + // test.setTimeout(120000); }); test("IntComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/keyPairListComponent.spec.ts b/src/frontend/tests/end-to-end/keyPairListComponent.spec.ts index 53d4543592..1ef6eeb2f9 100644 --- a/src/frontend/tests/end-to-end/keyPairListComponent.spec.ts +++ b/src/frontend/tests/end-to-end/keyPairListComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(20000); - test.setTimeout(120000); + // await page.waitForTimeout(20000); + // test.setTimeout(120000); }); test("KeypairListComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts b/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts index e3d2e39163..157fc44593 100644 --- a/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts +++ b/src/frontend/tests/end-to-end/langflowShortcuts.spec.ts @@ -1,8 +1,8 @@ import { expect, test } from "@playwright/test"; import uaParser from "ua-parser-js"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(11000); - test.setTimeout(120000); + // await page.waitForTimeout(11000); + // test.setTimeout(120000); }); test("LangflowShortcuts", async ({ page }) => { const getUA = await page.evaluate(() => navigator.userAgent); @@ -13,7 +13,7 @@ test("LangflowShortcuts", async ({ page }) => { control = "Meta"; } - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(1000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/nestedComponent.spec.ts b/src/frontend/tests/end-to-end/nestedComponent.spec.ts index 3eed92059f..053c72db23 100644 --- a/src/frontend/tests/end-to-end/nestedComponent.spec.ts +++ b/src/frontend/tests/end-to-end/nestedComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(12000); - test.setTimeout(120000); + // await page.waitForTimeout(12000); + // test.setTimeout(120000); }); test("NestedComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/promptModalComponent.spec.ts b/src/frontend/tests/end-to-end/promptModalComponent.spec.ts index cadf3a0889..f0d118094f 100644 --- a/src/frontend/tests/end-to-end/promptModalComponent.spec.ts +++ b/src/frontend/tests/end-to-end/promptModalComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(13000); - test.setTimeout(120000); + // await page.waitForTimeout(13000); + // test.setTimeout(120000); }); test("PromptTemplateComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/end-to-end/saveComponents.spec.ts b/src/frontend/tests/end-to-end/saveComponents.spec.ts index c9a6925531..772894b5a8 100644 --- a/src/frontend/tests/end-to-end/saveComponents.spec.ts +++ b/src/frontend/tests/end-to-end/saveComponents.spec.ts @@ -1,8 +1,8 @@ import { Page, expect, test } from "@playwright/test"; import { readFileSync } from "fs"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(14000); - test.setTimeout(120000); + // await page.waitForTimeout(14000); + // test.setTimeout(120000); }); test.describe("save component tests", () => { async function saveComponent(page: Page, pattern: RegExp, n: number) { @@ -14,7 +14,7 @@ test.describe("save component tests", () => { /// test("save group component tests", async ({ page }) => { - await page.goto("http:localhost:3000/"); + await page.goto("/"); await page.locator('//*[@id="new-project-btn"]').click(); await page.getByTestId("blank-flow").click(); diff --git a/src/frontend/tests/end-to-end/toggleComponent.spec.ts b/src/frontend/tests/end-to-end/toggleComponent.spec.ts index 7875261a41..cb29b6627f 100644 --- a/src/frontend/tests/end-to-end/toggleComponent.spec.ts +++ b/src/frontend/tests/end-to-end/toggleComponent.spec.ts @@ -1,10 +1,10 @@ import { expect, test } from "@playwright/test"; test.beforeEach(async ({ page }) => { - await page.waitForTimeout(15000); - test.setTimeout(120000); + // await page.waitForTimeout(15000); + // test.setTimeout(120000); }); test("ToggleComponent", async ({ page }) => { - await page.goto("http://localhost:3000/"); + await page.goto("/"); await page.waitForTimeout(2000); await page.locator('//*[@id="new-project-btn"]').click(); diff --git a/src/frontend/tests/globalTeardown.ts b/src/frontend/tests/globalTeardown.ts new file mode 100644 index 0000000000..110978d426 --- /dev/null +++ b/src/frontend/tests/globalTeardown.ts @@ -0,0 +1,25 @@ +// tests/globalTeardown.ts + +import fs from "fs"; +import path from "path"; + +export default async () => { + try { + console.log("Removing the temp database"); + // Check if the file exists in the path + // this file is in src/frontend/tests/globalTeardown.ts + // temp is in src/frontend/temp + const tempDbPath = path.join(__dirname, "..", "temp"); + console.log("tempDbPath", tempDbPath); + // Remove the temp database + fs.rmSync(tempDbPath); + // Check if the file is removed + if (!fs.existsSync(tempDbPath)) { + console.log("Successfully removed the temp database"); + } else { + console.error("Error while removing the temp database"); + } + } catch (error) { + console.error("Error while removing the temp database:", error); + } +};