Spaces:
Running
Running
import { | |
EXAMPLES, | |
EXECUTE_CODE_FAILURE_TITLE, | |
EXECUTE_CODE_SUCCESS_TITLE, | |
PLAN_TITLE, | |
TOOLS_TITLE, | |
} from '@/lib/constants'; | |
import { test, expect, type Page } from '@playwright/test'; | |
test.beforeEach(async ({ page }) => { | |
// https://vercel.com/docs/security/deployment-protection/methods-to-bypass-deployment-protection/protection-bypass-automation | |
await page.setExtraHTTPHeaders({ | |
'x-vercel-protection-bypass': | |
process.env.VERCEL_AUTOMATION_BYPASS_SECRET ?? 'unknown', | |
}); | |
}); | |
test('Main page can be opened', async ({ page }) => { | |
await page.goto('/'); | |
await expect( | |
page.getByRole('heading', { name: 'Vision Agent' }), | |
).toBeVisible(); | |
await page.getByText(EXAMPLES[0].title).click(); | |
await expect(page.getByPlaceholder('Message Vision Agent')).toHaveText( | |
EXAMPLES[0].prompt, | |
); | |
}); | |
const TEST_EXAMPLE_1_CHAT_ID_1 = 'jN6q4YK'; | |
const TEST_EXAMPLE_1_CHAT_ID_2 = 'w5ad73s'; | |
const checkMainElementVisible = async (page: Page, hasFailingCase = false) => { | |
await expect(page.getByText(EXAMPLES[0].prompt)).toBeVisible(); | |
await expect( | |
page.locator(`img[alt*="${EXAMPLES[0].mediaUrl}"]`), | |
).toBeVisible(); | |
await expect(page.getByText(PLAN_TITLE)).toBeVisible(); | |
await expect(page.getByText(TOOLS_TITLE)).toBeVisible(); | |
if (hasFailingCase) { | |
await expect(page.getByText(EXECUTE_CODE_FAILURE_TITLE)).toBeVisible(); | |
} | |
await expect(page.getByText(EXECUTE_CODE_SUCCESS_TITLE)).toBeVisible(); | |
await expect(page.locator(`img[alt="result-image-0"]`).first()).toBeVisible(); | |
const resultDisplayContainer = await page | |
.getByTestId('code-result-display-container') | |
.locator('visible=true'); | |
await expect(resultDisplayContainer).toBeVisible(); | |
await resultDisplayContainer | |
.getByTestId('open-final-test-code-dialog-button') | |
.click(); | |
const dialog = await page.getByRole('dialog'); | |
await expect( | |
dialog.getByRole('heading', { name: 'Test code' }), | |
).toBeVisible(); | |
await dialog | |
.getByRole('button') | |
.filter({ | |
hasText: 'Close', | |
}) | |
.click(); | |
await resultDisplayContainer | |
.getByTestId('view-all-result-images-button') | |
.click(); | |
await expect(page.locator(`img[alt="detail-result-image-0"]`)).toBeVisible(); | |
}; | |
test.describe('Page with example 1 can be opened', () => { | |
test('Page with old data structiure can be opened', async ({ page }) => { | |
await page.goto(`/chat/${TEST_EXAMPLE_1_CHAT_ID_1}`); | |
await checkMainElementVisible(page, true); | |
}); | |
test('Page with new data structiure can be opened', async ({ page }) => { | |
await page.goto(`/chat/${TEST_EXAMPLE_1_CHAT_ID_2}`); | |
await checkMainElementVisible(page); | |
}); | |
}); | |
const TEST_FINAL_ERROR_CHAT_ID_1 = '6bLzMKS'; | |
test('Page with final error in response can be opened', async ({ page }) => { | |
await page.goto(`/chat/${TEST_FINAL_ERROR_CHAT_ID_1}`); | |
await expect(page.getByText('β StreamingError')).toBeVisible(); | |
}); | |