2
0
Files
bot/apps/builder/playwright/tests/collaboration.spec.ts

114 lines
3.6 KiB
TypeScript
Raw Normal View History

2022-02-24 11:13:19 +01:00
import test, { expect } from '@playwright/test'
import cuid from 'cuid'
2022-05-13 15:22:44 -07:00
import { CollaborationType, Plan, WorkspaceRole } from 'db'
import prisma from 'libs/prisma'
2022-06-11 07:27:38 +02:00
import { InputBlockType, defaultTextInputOptions } from 'models'
import {
createResults,
createTypebots,
2022-06-11 07:27:38 +02:00
parseDefaultGroupWithBlock,
} from '../services/database'
2022-02-24 11:13:19 +01:00
test.describe('Typebot owner', () => {
test('Can invite collaborators', async ({ page }) => {
2022-05-13 15:22:44 -07:00
const typebotId = cuid()
const guestWorkspaceId = cuid()
await prisma.workspace.create({
data: {
id: guestWorkspaceId,
name: 'Guest Workspace',
plan: Plan.FREE,
members: {
createMany: {
data: [{ role: WorkspaceRole.ADMIN, userId: 'proUser' }],
},
},
},
})
await createTypebots([
{
id: typebotId,
name: 'Guest typebot',
workspaceId: guestWorkspaceId,
2022-06-11 07:27:38 +02:00
...parseDefaultGroupWithBlock({
type: InputBlockType.TEXT,
2022-05-13 15:22:44 -07:00
options: defaultTextInputOptions,
}),
},
])
2022-02-24 11:13:19 +01:00
await page.goto(`/typebots/${typebotId}/edit`)
await page.click('button[aria-label="Show collaboration menu"]')
await expect(page.locator('text=Free user')).toBeHidden()
await page.fill(
'input[placeholder="colleague@company.com"]',
'guest@email.com'
)
await page.click('text=Can view')
await page.click('text=Can edit')
await page.click('text=Invite')
await expect(page.locator('text=Pending')).toBeVisible()
await expect(page.locator('text=Free user')).toBeHidden()
await page.fill(
'input[placeholder="colleague@company.com"]',
2022-05-13 15:22:44 -07:00
'free-user@email.com'
2022-02-24 11:13:19 +01:00
)
await page.click('text=Can edit')
await page.click('text=Can view')
await page.click('text=Invite')
await expect(page.locator('text=Free user')).toBeVisible()
await page.click('text="guest@email.com"')
await page.click('text="Remove"')
await expect(page.locator('text="guest@email.com"')).toBeHidden()
})
})
test.describe('Collaborator', () => {
test('should display shared typebots', async ({ page }) => {
2022-05-13 15:22:44 -07:00
const typebotId = cuid()
const guestWorkspaceId = cuid()
await prisma.workspace.create({
data: {
id: guestWorkspaceId,
name: 'Guest Workspace #2',
plan: Plan.FREE,
members: {
createMany: {
data: [{ role: WorkspaceRole.GUEST, userId: 'proUser' }],
},
},
},
})
await createTypebots([
{
id: typebotId,
name: 'Guest typebot',
workspaceId: guestWorkspaceId,
2022-06-11 07:27:38 +02:00
...parseDefaultGroupWithBlock({
type: InputBlockType.TEXT,
2022-05-13 15:22:44 -07:00
options: defaultTextInputOptions,
}),
},
])
await prisma.collaboratorsOnTypebots.create({
data: {
typebotId,
userId: 'proUser',
type: CollaborationType.READ,
},
})
await createResults({ typebotId })
await page.goto(`/typebots`)
await page.click("text=Pro user's workspace")
await page.click('text=Guest workspace #2')
await page.click('text=Guest typebot')
2022-02-24 11:13:19 +01:00
await page.click('button[aria-label="Show collaboration menu"]')
2022-05-13 15:22:44 -07:00
await page.click('text=Everyone at Guest workspace')
2022-02-24 11:13:19 +01:00
await expect(page.locator('text="Remove"')).toBeHidden()
2022-05-13 15:22:44 -07:00
await expect(page.locator('text=Pro user')).toBeVisible()
2022-06-11 07:27:38 +02:00
await page.click('text=Group #1', { force: true })
await expect(page.locator('input[value="Group #1"]')).toBeHidden()
await page.goto(`/typebots/${typebotId}/results`)
await expect(page.locator('text="content199"')).toBeVisible()
2022-02-24 11:13:19 +01:00
})
})