2022-11-15 09:35:48 +01:00
|
|
|
import { createFolders } from '@/test/utils/databaseActions'
|
|
|
|
|
import { deleteButtonInConfirmDialog } from '@/test/utils/selectorUtils'
|
2022-10-06 08:33:46 +02:00
|
|
|
import test, { expect } from '@playwright/test'
|
2023-02-10 15:06:02 +01:00
|
|
|
import { createId } from '@paralleldrive/cuid2'
|
2024-03-15 16:32:29 +01:00
|
|
|
import { createTypebots } from '@typebot.io/playwright/databaseActions'
|
2022-01-28 09:42:31 +01:00
|
|
|
|
2022-09-24 08:58:23 +02:00
|
|
|
test('folders navigation should work', async ({ page }) => {
|
|
|
|
|
await page.goto('/typebots')
|
|
|
|
|
const createFolderButton = page.locator('button:has-text("Create a folder")')
|
|
|
|
|
await expect(createFolderButton).not.toBeDisabled()
|
|
|
|
|
await createFolderButton.click()
|
|
|
|
|
await page.fill('input[value="New folder"]', 'My folder #1')
|
:technologist: (folders) Add folder trpc endpoints (#1218)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced folder management capabilities including creation,
deletion, update, listing, and retrieval within workspaces.
- Added telemetry tracking for client events, Typebot publish events,
and analytics page views.
- Enhanced settings to track client events under specific conditions.
- Implemented server-side logic for analytics tracking with PostHog
integration.
- Added API documentation for folder operations (create, delete, get,
list, update).
- **Refactor**
- Updated `onConfirm` function's return type in `ConfirmModal`.
- Simplified folder creation process in tests.
- Refactored logic for handling file upload blocks and parsing publish
events in Typebot publishing.
- Migrated handler functions to TRPC endpoints for folder operations.
- **Documentation**
- Introduced documentation for new folder and telemetry functionalities.
- **Chores**
- Added new schemas for folders and telemetry events, including event
tracking and folder structure.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-02-05 12:14:03 +01:00
|
|
|
await page.press('input[value="My folder #1"]', 'Enter')
|
2022-12-12 10:29:52 +01:00
|
|
|
await page.click('li:has-text("My folder #1")')
|
2022-09-24 08:58:23 +02:00
|
|
|
await expect(page.locator('h1:has-text("My folder #1")')).toBeVisible()
|
|
|
|
|
await createFolderButton.click()
|
|
|
|
|
await page.fill('input', 'My folder #2')
|
|
|
|
|
await page.press('input', 'Enter')
|
2022-01-28 09:42:31 +01:00
|
|
|
|
2022-09-24 08:58:23 +02:00
|
|
|
await page.click('li:has-text("My folder #2")')
|
|
|
|
|
await expect(page.locator('h1 >> text="My folder #2"')).toBeVisible()
|
2022-01-28 09:42:31 +01:00
|
|
|
|
2022-09-24 08:58:23 +02:00
|
|
|
await page.click('text="Back"')
|
|
|
|
|
await expect(page.locator('span >> text="My folder #2"')).toBeVisible()
|
2022-01-28 09:42:31 +01:00
|
|
|
|
2022-09-24 08:58:23 +02:00
|
|
|
await page.click('text="Back"')
|
|
|
|
|
await expect(page.locator('span >> text=My folder #1')).toBeVisible()
|
|
|
|
|
})
|
2022-01-28 09:42:31 +01:00
|
|
|
|
2022-09-24 08:58:23 +02:00
|
|
|
test('folders and typebots should be deletable', async ({ page }) => {
|
|
|
|
|
await createFolders([{ name: 'Folder #1' }, { name: 'Folder #2' }])
|
2023-03-21 15:42:03 +01:00
|
|
|
const tomorrow = new Date()
|
|
|
|
|
tomorrow.setDate(tomorrow.getDate() + 1)
|
|
|
|
|
await createTypebots([
|
|
|
|
|
{ id: 'deletable-typebot', name: 'Typebot #1', createdAt: tomorrow },
|
|
|
|
|
])
|
2022-09-24 08:58:23 +02:00
|
|
|
await page.goto('/typebots')
|
|
|
|
|
await page.click('button[aria-label="Show Folder #1 menu"]')
|
|
|
|
|
await page.click('li:has-text("Folder #1") >> button:has-text("Delete")')
|
|
|
|
|
await deleteButtonInConfirmDialog(page).click()
|
|
|
|
|
await expect(page.locator('span >> text="Folder #1"')).not.toBeVisible()
|
2023-03-11 11:05:07 +01:00
|
|
|
await page.click('button[aria-label="Show more options"]')
|
2022-09-24 08:58:23 +02:00
|
|
|
await page.click('li:has-text("Typebot #1") >> button:has-text("Delete")')
|
|
|
|
|
await deleteButtonInConfirmDialog(page).click()
|
|
|
|
|
await expect(page.locator('span >> text="Typebot #1"')).not.toBeVisible()
|
|
|
|
|
})
|
2022-01-28 09:42:31 +01:00
|
|
|
|
2022-09-24 08:58:23 +02:00
|
|
|
test('folders and typebots should be movable', async ({ page }) => {
|
2023-02-10 15:06:02 +01:00
|
|
|
const droppableFolderId = createId()
|
2022-09-24 08:58:23 +02:00
|
|
|
await createFolders([{ id: droppableFolderId, name: 'Droppable folder' }])
|
|
|
|
|
await createTypebots([{ name: 'Draggable typebot' }])
|
|
|
|
|
await page.goto('/typebots')
|
|
|
|
|
const typebotButton = page.locator('li:has-text("Draggable typebot")')
|
|
|
|
|
const folderButton = page.locator('li:has-text("Droppable folder")')
|
|
|
|
|
await page.dragAndDrop(
|
|
|
|
|
'li:has-text("Draggable typebot")',
|
|
|
|
|
'li:has-text("Droppable folder")'
|
|
|
|
|
)
|
|
|
|
|
await expect(typebotButton).toBeHidden()
|
|
|
|
|
await folderButton.click()
|
|
|
|
|
await expect(page).toHaveURL(new RegExp(`/folders/${droppableFolderId}`))
|
|
|
|
|
await expect(typebotButton).toBeVisible()
|
|
|
|
|
await page.dragAndDrop(
|
|
|
|
|
'li:has-text("Draggable typebot")',
|
|
|
|
|
'a:has-text("Back")'
|
|
|
|
|
)
|
|
|
|
|
await expect(typebotButton).toBeHidden()
|
|
|
|
|
await page.click('a:has-text("Back")')
|
|
|
|
|
await expect(typebotButton).toBeVisible()
|
|
|
|
|
})
|
2022-02-12 10:23:58 +01:00
|
|
|
|
2022-09-24 08:58:23 +02:00
|
|
|
test.describe('Free user', () => {
|
|
|
|
|
test("create folder shouldn't be available", async ({ page }) => {
|
|
|
|
|
await page.goto('/typebots')
|
|
|
|
|
await page.click('text="Pro workspace"')
|
|
|
|
|
await page.click('text="Free workspace"')
|
2022-10-01 08:36:49 +02:00
|
|
|
await expect(page.locator('[data-testid="starter-lock-tag"]')).toBeVisible()
|
2022-09-24 08:58:23 +02:00
|
|
|
await page.click('text=Create a folder')
|
|
|
|
|
await expect(
|
|
|
|
|
page.locator(
|
|
|
|
|
'text="You need to upgrade your plan in order to create folders"'
|
|
|
|
|
)
|
|
|
|
|
).toBeVisible()
|
2022-02-12 10:23:58 +01:00
|
|
|
})
|
2022-01-28 09:42:31 +01:00
|
|
|
})
|