diff --git a/docs/docs/developers/guides/clone-a-project.md b/docs/docs/developers/guides/clone-a-project.md index 84cca425ce9..add31641d12 100644 --- a/docs/docs/developers/guides/clone-a-project.md +++ b/docs/docs/developers/guides/clone-a-project.md @@ -42,10 +42,16 @@ cd
+ +If your project is not synced to a GitHub repository, use: ```bash -# Clone from Rill rill project clone ``` +If your project is synced to a GitHub repository, use: + +```bash +rill start https://github.com/username/rill-project.git +``` ## Step 2: Explore the Project Structure diff --git a/web-admin/src/features/projects/status/ProjectClone.svelte b/web-admin/src/features/projects/status/ProjectClone.svelte new file mode 100644 index 00000000000..5e9d71886a8 --- /dev/null +++ b/web-admin/src/features/projects/status/ProjectClone.svelte @@ -0,0 +1,136 @@ + + +{#if $proj.data} +
+ + Local Development + + + + + + + +
+ + Clone this project to develop locally. + + Learn more -> + + + +
+ {#if isGithubConnected} + + +
+ + Then pull environment variables: + + +
+ {:else} + + {/if} +
+
+
+
+
+{/if} + + diff --git a/web-admin/src/routes/[organization]/[project]/-/status/+page.svelte b/web-admin/src/routes/[organization]/[project]/-/status/+page.svelte index ba2ab04ec94..07ada8e7161 100644 --- a/web-admin/src/routes/[organization]/[project]/-/status/+page.svelte +++ b/web-admin/src/routes/[organization]/[project]/-/status/+page.svelte @@ -1,6 +1,7 @@ - +
-
- - +

+ Project status +

+ +
+
+ + +
+
diff --git a/web-admin/tests/projects.spec.ts b/web-admin/tests/projects.spec.ts index 75a24e526f2..a89d5c3b51f 100644 --- a/web-admin/tests/projects.spec.ts +++ b/web-admin/tests/projects.spec.ts @@ -9,4 +9,29 @@ test.describe("Projects", () => { adminPage.getByRole("link", { name: "Settings" }), ).toBeVisible(); }); + + test("status page should show Local Development section", async ({ + adminPage, + }) => { + await adminPage.goto("/e2e/openrtb/-/status"); + + // Check Local Development header is visible + await expect(adminPage.getByText("Local Development")).toBeVisible(); + + // Click the Download project button to open popover + await adminPage.getByRole("button", { name: "Download project" }).click(); + + // Check Learn more link is visible in popover (filter by surrounding text to avoid ambiguity) + await expect( + adminPage + .locator("span") + .filter({ hasText: "Clone this project to develop locally" }) + .getByRole("link", { name: "Learn more ->" }), + ).toBeVisible(); + + // Check clone command is visible (for non-GitHub connected project) + await expect( + adminPage.getByText("rill project clone openrtb"), + ).toBeVisible(); + }); });