2
0
Files
bot/apps/viewer/playwright/tests/fileUpload.spec.ts

75 lines
2.7 KiB
TypeScript
Raw Normal View History

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 }) => {
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="hugeGroup.json"')).toHaveAttribute(
'href',
/.+\/hugeGroup\.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')
// Waiting for https://github.com/aws/aws-sdk-js/issues/4137
// const urls = (
// await Promise.all(
// [
// page.locator('text="api.json"'),
// page.locator('text="fileUpload.json"'),
// page.locator('text="hugeGroup.json"'),
// ].map((elem) => elem.getAttribute('href'))
// )
// ).filter(isDefined)
// const page2 = await browser.newPage()
// await page2.goto(urls[0])
// await expect(page2.locator('pre')).toBeVisible()
// await page.locator('button >> text="Delete"').click()
// await page.locator('button >> text="Delete" >> nth=1').click()
// await expect(page.locator('text="api.json"')).toBeHidden()
// await page2.goto(urls[0])
// await expect(page2.locator('text="grkwobnowrk')).toBeVisible()
})