This is an automated email from the ASF dual-hosted git repository. yasithdev pushed a commit to branch feat/generic-experiment-launcher in repository https://gitbox.apache.org/repos/asf/airavata-portals.git
commit 618e40d28e1975e246d19bcc11258797d0db168d Author: yasithdev <[email protected]> AuthorDate: Fri Apr 24 23:14:27 2026 -0400 test(launcher): Playwright happy path + add /workspace/launch to smoke --- .../tests/e2e/specs/launch-happy.spec.ts | 38 ++++++++++++++++++++++ .../tests/e2e/specs/smoke.spec.ts | 1 + 2 files changed, 39 insertions(+) diff --git a/airavata-django-portal/tests/e2e/specs/launch-happy.spec.ts b/airavata-django-portal/tests/e2e/specs/launch-happy.spec.ts new file mode 100644 index 000000000..f3fbc8a6a --- /dev/null +++ b/airavata-django-portal/tests/e2e/specs/launch-happy.spec.ts @@ -0,0 +1,38 @@ +import { test, expect } from "../fixtures/auth"; + +test("launch a stub experiment via /workspace/launch", async ({ page }) => { + await page.goto("/workspace/launch"); + await expect(page.getByPlaceholder(/Experiment name/i)).toBeVisible(); + + await page.getByPlaceholder(/Experiment name/i).fill("e2e-stub"); + + // Project picker — pick whatever's available (index 1 = first real option) + const projectSelect = page.locator("select[data-test='exp-project']"); + await projectSelect.selectOption({ index: 1 }); + + // App + interface (stub returns NAMD) + await page.locator("[data-test='app-tile-namd']").click(); + await page.locator("[data-test='iface-card-run']").click(); + + // Inputs + // sim_dir is a dir; pick a storage and a path + const storageSelects = page.locator("select").filter({ hasText: /My Home|Bridges/ }); + await storageSelects.first().selectOption({ index: 1 }); + await page.locator("input[data-test='file-path-sim_dir']").fill("/home/x/sim"); + await page.locator("input[data-test='scalar-steps']").fill("100"); + + // Output: trajectory + await page.locator("input[data-test='file-out-path-trajectory']").fill("/home/x/out.dcd"); + + // Tab 2 + await page.locator("button[role='tab']").nth(1).click(); + await page.locator("select[data-test='cr']").selectOption("bridges-2"); + await page.locator("select[data-test='partition']").selectOption("RM"); + + // Tab 3 + await page.locator("button[role='tab']").nth(2).click(); + await expect(page.locator("pre code")).toContainText("#!/bin/bash"); + await page.locator("button[data-test='launch']").click(); + + await page.waitForURL(/\/workspace\/experiments\//); +}); diff --git a/airavata-django-portal/tests/e2e/specs/smoke.spec.ts b/airavata-django-portal/tests/e2e/specs/smoke.spec.ts index e6a0de4da..d2f2b07aa 100644 --- a/airavata-django-portal/tests/e2e/specs/smoke.spec.ts +++ b/airavata-django-portal/tests/e2e/specs/smoke.spec.ts @@ -2,6 +2,7 @@ import { test, expect } from "../fixtures/auth"; const AUTHENTICATED_PAGES = [ "/workspace/home", + "/workspace/launch", "/workspace/projects", "/workspace/applications", "/workspace/datasets",
