54 lines
1.9 KiB
TypeScript
54 lines
1.9 KiB
TypeScript
import test, { expect } from '@playwright/test'
|
|
import cuid from 'cuid'
|
|
import path from 'path'
|
|
import { parse } from 'papaparse'
|
|
import { typebotViewer } from '../services/selectorUtils'
|
|
import { importTypebotInDatabase } from '../services/database'
|
|
import { readFileSync } from 'fs'
|
|
|
|
test('should work as expected', async ({ page, context }) => {
|
|
const typebotId = cuid()
|
|
await importTypebotInDatabase(
|
|
path.join(__dirname, '../fixtures/typebots/fileUpload.json'),
|
|
{ id: typebotId, publicId: `${typebotId}-public` }
|
|
)
|
|
await page.goto(`/${typebotId}-public`)
|
|
await typebotViewer(page)
|
|
.locator(`input[type="file"]`)
|
|
.setInputFiles([
|
|
path.join(__dirname, '../fixtures/typebots/api.json'),
|
|
path.join(__dirname, '../fixtures/typebots/fileUpload.json'),
|
|
path.join(__dirname, '../fixtures/typebots/hugeGroup.json'),
|
|
])
|
|
await expect(typebotViewer(page).locator(`text="3"`)).toBeVisible()
|
|
await typebotViewer(page).locator('text="Upload 3 files"').click()
|
|
await expect(
|
|
typebotViewer(page).locator(`text="3 files uploaded"`)
|
|
).toBeVisible()
|
|
await page.goto(`http://localhost:3000/typebots/${typebotId}/results`)
|
|
await expect(page.locator('text="api.json"')).toHaveAttribute(
|
|
'href',
|
|
/.+\/api\.json/
|
|
)
|
|
await expect(page.locator('text="fileUpload.json"')).toHaveAttribute(
|
|
'href',
|
|
/.+\/fileUpload\.json/
|
|
)
|
|
await expect(page.locator('text="api.json"')).toHaveAttribute(
|
|
'href',
|
|
/.+\/api\.json/
|
|
)
|
|
|
|
await page.click('[data-testid="checkbox"] >> nth=0')
|
|
const [download] = await Promise.all([
|
|
page.waitForEvent('download'),
|
|
page.locator('button:has-text("Export1")').click(),
|
|
])
|
|
const downloadPath = await download.path()
|
|
expect(path).toBeDefined()
|
|
const file = readFileSync(downloadPath as string).toString()
|
|
const { data } = parse(file)
|
|
expect(data).toHaveLength(2)
|
|
expect((data[1] as unknown[])[1]).toContain('http://localhost:9000')
|
|
})
|