tests for weird text-to-cad toast (#3448)
* tests for weird text-to-cad toast Signed-off-by: Jess Frazelle <github@jessfraz.com> * test the inverse Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
@ -78,6 +78,55 @@ test.describe('Text-to-CAD tests', () => {
|
|||||||
await expect(successToastMessage).not.toBeVisible()
|
await expect(successToastMessage).not.toBeVisible()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('success model, then ignore success toast, user can create new prompt from command bar', async ({
|
||||||
|
page,
|
||||||
|
}) => {
|
||||||
|
const u = await getUtils(page)
|
||||||
|
|
||||||
|
await page.setViewportSize({ width: 1000, height: 500 })
|
||||||
|
|
||||||
|
await u.waitForAuthSkipAppStart()
|
||||||
|
|
||||||
|
await sendPromptFromCommandBar(page, 'a 2x6 lego')
|
||||||
|
|
||||||
|
// Find the toast.
|
||||||
|
// Look out for the toast message
|
||||||
|
const submittingToastMessage = page.getByText(
|
||||||
|
`Submitting to Text-to-CAD API...`
|
||||||
|
)
|
||||||
|
await expect(submittingToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
await page.waitForTimeout(5000)
|
||||||
|
|
||||||
|
const generatingToastMessage = page.getByText(
|
||||||
|
`Generating parametric model...`
|
||||||
|
)
|
||||||
|
await expect(generatingToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
const successToastMessage = page.getByText(`Text-to-CAD successful`)
|
||||||
|
await expect(successToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
await expect(page.getByText('Copied')).not.toBeVisible()
|
||||||
|
|
||||||
|
await expect(successToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
// Can send a new prompt from the command bar.
|
||||||
|
await sendPromptFromCommandBar(page, 'a 2x4 lego')
|
||||||
|
|
||||||
|
// Find the toast.
|
||||||
|
// Look out for the toast message
|
||||||
|
await expect(submittingToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
await page.waitForTimeout(5000)
|
||||||
|
|
||||||
|
await expect(generatingToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
// Expect 2 success toasts.
|
||||||
|
await expect(successToastMessage).toHaveCount(2)
|
||||||
|
await expect(page.getByText('a 2x4 lego')).toBeVisible()
|
||||||
|
await expect(page.getByText('a 2x6 lego')).toBeVisible()
|
||||||
|
})
|
||||||
|
|
||||||
test('you can reject text-to-cad output and it does nothing', async ({
|
test('you can reject text-to-cad output and it does nothing', async ({
|
||||||
page,
|
page,
|
||||||
}) => {
|
}) => {
|
||||||
@ -184,7 +233,9 @@ test.describe('Text-to-CAD tests', () => {
|
|||||||
await expect(failureToastMessage).not.toBeVisible()
|
await expect(failureToastMessage).not.toBeVisible()
|
||||||
})
|
})
|
||||||
|
|
||||||
test('sending a bad prompt fails, can start over', async ({ page }) => {
|
test('sending a bad prompt fails, can start over from toast', async ({
|
||||||
|
page,
|
||||||
|
}) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
|
|
||||||
await page.setViewportSize({ width: 1000, height: 500 })
|
await page.setViewportSize({ width: 1000, height: 500 })
|
||||||
@ -273,6 +324,85 @@ test.describe('Text-to-CAD tests', () => {
|
|||||||
await expect(successToastMessage).toBeVisible()
|
await expect(successToastMessage).toBeVisible()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('sending a bad prompt fails, can ignore toast, can start over from command bar', async ({
|
||||||
|
page,
|
||||||
|
}) => {
|
||||||
|
const u = await getUtils(page)
|
||||||
|
|
||||||
|
await page.setViewportSize({ width: 1000, height: 500 })
|
||||||
|
|
||||||
|
await u.waitForAuthSkipAppStart()
|
||||||
|
|
||||||
|
const commandBarButton = page.getByRole('button', { name: 'Commands' })
|
||||||
|
await expect(commandBarButton).toBeVisible()
|
||||||
|
// Click the command bar button
|
||||||
|
await commandBarButton.click()
|
||||||
|
|
||||||
|
// Wait for the command bar to appear
|
||||||
|
const cmdSearchBar = page.getByPlaceholder('Search commands')
|
||||||
|
await expect(cmdSearchBar).toBeVisible()
|
||||||
|
|
||||||
|
const textToCadCommand = page.getByText('Text-to-CAD')
|
||||||
|
await expect(textToCadCommand.first()).toBeVisible()
|
||||||
|
// Click the Text-to-CAD command
|
||||||
|
await textToCadCommand.first().click()
|
||||||
|
|
||||||
|
// Enter the prompt.
|
||||||
|
const prompt = page.getByText('Prompt')
|
||||||
|
await expect(prompt.first()).toBeVisible()
|
||||||
|
|
||||||
|
const badPrompt =
|
||||||
|
'akjsndladf lajbhflauweyfa;wieufjn;wieJNUF;.wjdfn weh Fwhefb'
|
||||||
|
|
||||||
|
// Type the prompt.
|
||||||
|
await page.keyboard.type(badPrompt)
|
||||||
|
await page.waitForTimeout(1000)
|
||||||
|
await page.keyboard.press('Enter')
|
||||||
|
|
||||||
|
// Find the toast.
|
||||||
|
// Look out for the toast message
|
||||||
|
const submittingToastMessage = page.getByText(
|
||||||
|
`Submitting to Text-to-CAD API...`
|
||||||
|
)
|
||||||
|
await expect(submittingToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
const generatingToastMessage = page.getByText(
|
||||||
|
`Generating parametric model...`
|
||||||
|
)
|
||||||
|
await expect(generatingToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
const failureToastMessage = page.getByText(
|
||||||
|
`The prompt must clearly describe a CAD model`
|
||||||
|
)
|
||||||
|
await expect(failureToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
await page.waitForTimeout(1000)
|
||||||
|
|
||||||
|
// Make sure the toast did not say it was successful.
|
||||||
|
const successToastMessage = page.getByText(`Text-to-CAD successful`)
|
||||||
|
await expect(successToastMessage).not.toBeVisible()
|
||||||
|
await expect(page.getByText(`Text-to-CAD failed`)).toBeVisible()
|
||||||
|
|
||||||
|
// They should be able to try again from the command bar.
|
||||||
|
await sendPromptFromCommandBar(page, 'a 2x4 lego')
|
||||||
|
|
||||||
|
// Find the toast.
|
||||||
|
// Look out for the toast message
|
||||||
|
await expect(submittingToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
await page.waitForTimeout(5000)
|
||||||
|
|
||||||
|
await expect(generatingToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
await expect(successToastMessage).toBeVisible()
|
||||||
|
|
||||||
|
await expect(page.getByText('Copied')).not.toBeVisible()
|
||||||
|
|
||||||
|
// old failure toast should stick around.
|
||||||
|
await expect(failureToastMessage).toBeVisible()
|
||||||
|
await expect(page.getByText(`Text-to-CAD failed`)).toBeVisible()
|
||||||
|
})
|
||||||
|
|
||||||
test('ensure you can shift+enter in the prompt box', async ({ page }) => {
|
test('ensure you can shift+enter in the prompt box', async ({ page }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
|
|
||||||
@ -342,7 +472,7 @@ async function sendPromptFromCommandBar(page: Page, promptStr: string) {
|
|||||||
const cmdSearchBar = page.getByPlaceholder('Search commands')
|
const cmdSearchBar = page.getByPlaceholder('Search commands')
|
||||||
await expect(cmdSearchBar).toBeVisible()
|
await expect(cmdSearchBar).toBeVisible()
|
||||||
|
|
||||||
const textToCadCommand = page.getByText('Text-to-CAD')
|
const textToCadCommand = page.getByText('Use the Zoo Text-to-CAD API ')
|
||||||
await expect(textToCadCommand.first()).toBeVisible()
|
await expect(textToCadCommand.first()).toBeVisible()
|
||||||
// Click the Text-to-CAD command
|
// Click the Text-to-CAD command
|
||||||
await textToCadCommand.first().click()
|
await textToCadCommand.first().click()
|
||||||
|
Reference in New Issue
Block a user