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",

Reply via email to