basic-flow.spec.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { expect, test } from '@playwright/test'
  2. import fs from 'node:fs/promises'
  3. import path from 'node:path'
  4. import { fileURLToPath } from 'node:url'
  5. const here = path.dirname(fileURLToPath(import.meta.url))
  6. const rootDir = path.resolve(here, '..', '..')
  7. const samplesDir = process.env.SCREENSHOT_DIR ?? path.join(rootDir, 'samples')
  8. const zip1 = path.join(rootDir, 'samples', '2a03f38ddcdc7281d8e53a3c.zip')
  9. const zip2 = path.join(rootDir, 'samples', '5b4c3cc15ee5190007a11d0b.zip')
  10. test('basic upload -> wall -> viewer flow', async ({ page }) => {
  11. await fs.mkdir(samplesDir, { recursive: true })
  12. await page.goto('/')
  13. await expect(page.getByTestId('wall-grid')).toBeVisible()
  14. await page.getByTestId('upload-input').setInputFiles(zip1)
  15. await expect(page.getByTestId('upload-button')).toHaveText('+', { timeout: 90_000 })
  16. await expect(page.getByTestId('wall-tile').first()).toBeVisible({ timeout: 60_000 })
  17. await page.screenshot({ path: path.join(samplesDir, '01-upload-finalize.png'), fullPage: true })
  18. await page.getByTestId('wall-tile').first().click()
  19. await expect(page.getByTestId('viewer-image')).toBeVisible()
  20. await page.screenshot({ path: path.join(samplesDir, '02-viewer.png'), fullPage: true })
  21. await page.getByTestId('viewer-close').click()
  22. await expect(page.getByTestId('wall-grid')).toBeVisible()
  23. await page.screenshot({ path: path.join(samplesDir, '03-wall.png'), fullPage: true })
  24. await page.getByTestId('upload-input').setInputFiles(zip2)
  25. await expect(page.getByTestId('upload-button')).toHaveText('+', { timeout: 120_000 })
  26. await expect(page.getByTestId('wall-tile').first()).toBeVisible({ timeout: 60_000 })
  27. await page.screenshot({ path: path.join(samplesDir, '04-second-album.png'), fullPage: true })
  28. })