Prompt gallery (#957)

- [x] show prompt instead of app in autocomplete
- [x] use proper array/list for db (tags)
- [x] don't do <dyad-prompt> - replace inline
This commit is contained in:
Will Chen
2025-08-18 13:25:11 -07:00
committed by GitHub
parent a547735714
commit 573642ae5f
26 changed files with 1540 additions and 42 deletions

View File

@@ -727,6 +727,30 @@ export class PageObject {
await this.page.getByRole("link", { name: "Settings" }).click();
}
async goToLibraryTab() {
await this.page.getByRole("link", { name: "Library" }).click();
}
async createPrompt({
title,
description,
content,
}: {
title: string;
description?: string;
content: string;
}) {
await this.page.getByRole("button", { name: "New Prompt" }).click();
await this.page.getByRole("textbox", { name: "Title" }).fill(title);
if (description) {
await this.page
.getByRole("textbox", { name: "Description (optional)" })
.fill(description);
}
await this.page.getByRole("textbox", { name: "Content" }).fill(content);
await this.page.getByRole("button", { name: "Save" }).click();
}
getTitleBarAppNameButton() {
return this.page.getByTestId("title-bar-app-name-button");
}

View File

@@ -0,0 +1,56 @@
import { test } from "./helpers/test_helper";
import { expect } from "@playwright/test";
test("create and edit prompt", async ({ po }) => {
await po.setUp();
await po.goToLibraryTab();
await po.createPrompt({
title: "title1",
description: "desc",
content: "prompt1content",
});
await expect(po.page.getByTestId("prompt-card")).toMatchAriaSnapshot();
await po.page.getByTestId("edit-prompt-button").click();
await po.page
.getByRole("textbox", { name: "Content" })
.fill("prompt1content-edited");
await po.page.getByRole("button", { name: "Save" }).click();
await expect(po.page.getByTestId("prompt-card")).toMatchAriaSnapshot();
});
test("delete prompt", async ({ po }) => {
await po.setUp();
await po.goToLibraryTab();
await po.createPrompt({
title: "title1",
description: "desc",
content: "prompt1content",
});
await po.page.getByTestId("delete-prompt-button").click();
await po.page.getByRole("button", { name: "Delete" }).click();
await expect(po.page.getByTestId("prompt-card")).not.toBeVisible();
});
test("use prompt", async ({ po }) => {
await po.setUp();
await po.goToLibraryTab();
await po.createPrompt({
title: "title1",
description: "desc",
content: "prompt1content",
});
await po.goToAppsTab();
await po.getChatInput().click();
await po.getChatInput().fill("[dump] @");
await po.page.getByRole("menuitem", { name: "Choose title1" }).click();
await po.page.getByRole("button", { name: "Send message" }).click();
await po.waitForChatCompletion();
await po.snapshotServerDump("last-message");
});

View File

@@ -0,0 +1,7 @@
- heading "title1" [level=3]
- paragraph: desc
- button:
- img
- button:
- img
- text: prompt1content

View File

@@ -0,0 +1,7 @@
- heading "title1" [level=3]
- paragraph: desc
- button:
- img
- button:
- img
- text: prompt1content-edited

View File

@@ -0,0 +1,3 @@
===
role: user
message: [dump] prompt1content