refresh e2e (#307)

This commit is contained in:
Will Chen
2025-06-02 15:53:06 -07:00
committed by GitHub
parent 46d398b4e9
commit e905e9e10f
4 changed files with 46 additions and 0 deletions

View File

@@ -54,6 +54,22 @@ class PageObject {
await this.page.getByRole("button", { name: "Restart" }).click(); await this.page.getByRole("button", { name: "Restart" }).click();
} }
async clickPreviewRefresh() {
await this.page.getByTestId("preview-refresh-button").click();
}
async clickPreviewNavigateBack() {
await this.page.getByTestId("preview-navigate-back-button").click();
}
async clickPreviewNavigateForward() {
await this.page.getByTestId("preview-navigate-forward-button").click();
}
async clickPreviewOpenBrowser() {
await this.page.getByTestId("preview-open-browser-button").click();
}
locateLoadingAppPreview() { locateLoadingAppPreview() {
return this.page.getByText("Loading app preview..."); return this.page.getByText("Loading app preview...");
} }

19
e2e-tests/refresh.spec.ts Normal file
View File

@@ -0,0 +1,19 @@
import { test } from "./helpers/test_helper";
test("refresh app", async ({ po }) => {
await po.setUp({ autoApprove: true });
await po.sendPrompt("hi");
// Drop the document.body inside the contentFrame to make
// sure refresh works.
await po
.getPreviewIframeElement()
.contentFrame()
.locator("body")
.evaluate((body) => {
body.remove();
});
await po.clickPreviewRefresh();
await po.snapshotPreview();
});

View File

@@ -0,0 +1,7 @@
- region "Notifications (F8)":
- list
- region "Notifications alt+T"
- heading "Welcome to Your Blank App" [level=1]
- paragraph: Start building your amazing project here!
- link "Made with Dyad":
- /url: https://www.dyad.sh/

View File

@@ -372,6 +372,7 @@ export const PreviewIframe = ({ loading }: { loading: boolean }) => {
className="p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed dark:text-gray-300" className="p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed dark:text-gray-300"
disabled={!canGoBack || loading || !selectedAppId} disabled={!canGoBack || loading || !selectedAppId}
onClick={handleNavigateBack} onClick={handleNavigateBack}
data-testid="preview-navigate-back-button"
> >
<ArrowLeft size={16} /> <ArrowLeft size={16} />
</button> </button>
@@ -379,6 +380,7 @@ export const PreviewIframe = ({ loading }: { loading: boolean }) => {
className="p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed dark:text-gray-300" className="p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed dark:text-gray-300"
disabled={!canGoForward || loading || !selectedAppId} disabled={!canGoForward || loading || !selectedAppId}
onClick={handleNavigateForward} onClick={handleNavigateForward}
data-testid="preview-navigate-forward-button"
> >
<ArrowRight size={16} /> <ArrowRight size={16} />
</button> </button>
@@ -386,6 +388,7 @@ export const PreviewIframe = ({ loading }: { loading: boolean }) => {
onClick={handleReload} onClick={handleReload}
className="p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed dark:text-gray-300" className="p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed dark:text-gray-300"
disabled={loading || !selectedAppId} disabled={loading || !selectedAppId}
data-testid="preview-refresh-button"
> >
<RefreshCw size={16} /> <RefreshCw size={16} />
</button> </button>
@@ -429,6 +432,7 @@ export const PreviewIframe = ({ loading }: { loading: boolean }) => {
{/* Action Buttons */} {/* Action Buttons */}
<div className="flex space-x-1"> <div className="flex space-x-1">
<button <button
data-testid="preview-open-browser-button"
onClick={() => { onClick={() => {
if (originalUrl) { if (originalUrl) {
IpcClient.getInstance().openExternalUrl(originalUrl); IpcClient.getInstance().openExternalUrl(originalUrl);