smoke.spec.ts
1 import { expect, test } from '@playwright/test' 2 3 test('Has title', async ({ page }) => { 4 await page.goto('/') 5 6 await expect(page).toHaveTitle(/Evidently/) 7 }) 8 9 // We don't need this since visual testing enabled 10 test.skip('Can view Snapshot', async ({ page }) => { 11 await page.goto('/') 12 await page.getByRole('link', { name: 'Demo project - Bikes' }).click() 13 await page.getByText('Bike Rental Demand Forecast').click() 14 await page.getByRole('tab', { name: 'Reports' }).click() 15 16 await expect(page.getByRole('columnheader', { name: 'Report ID' })).toBeVisible() 17 await expect(page.getByRole('columnheader', { name: 'Tags' })).toBeVisible() 18 await expect(page.getByRole('columnheader', { name: 'Timestamp' })).toBeVisible() 19 await expect(page.getByRole('columnheader', { name: 'Actions' })).toBeVisible() 20 21 await page.getByRole('link', { name: 'View' }).first().click() 22 await expect(page.getByText('Dataset Summary', { exact: true })).toBeVisible() 23 }) 24 25 test('Download reports', async ({ page }) => { 26 await page.goto('/') 27 await page.getByRole('link', { name: 'Demo project - Bikes' }).click() 28 29 await page.waitForLoadState('domcontentloaded') 30 31 for (const tab of ['Reports']) { 32 await page.getByRole('tab', { name: tab }).click() 33 34 for (const downloadType of ['Download HTML', 'Download JSON']) { 35 await page.getByText('Download').first().click() 36 37 const downloadPromise = page.waitForEvent('download') 38 39 await page.getByRole('menuitem', { name: downloadType }).click() 40 41 const download = await downloadPromise 42 43 expect(await download.failure()).toBeNull() 44 } 45 } 46 }) 47 48 test('Filter Reports by tags', async ({ page }) => { 49 await page.goto('/') 50 await page.getByRole('link', { name: 'Demo project - Bikes' }).click() 51 52 for (const [tab, columnName] of [['Reports', 'Report ID']]) { 53 await page.getByRole('tab', { name: tab }).click() 54 await expect(page.getByRole('columnheader', { name: columnName })).toBeVisible() 55 56 const rowsNumberBeforeFiltration = await page.getByRole('row').count() 57 58 await page 59 .getByRole('button', { name: /high_seasonality|production_critical|tabular_data/ }) 60 .first() 61 .click() 62 63 const rowsNumberAfterFiltration = await page.getByRole('row').count() 64 65 // console.log( 66 // 'rowsNumberBeforeFiltration, rowsNumberAfterFiltration', 67 // rowsNumberBeforeFiltration, 68 // rowsNumberAfterFiltration 69 // ) 70 71 expect(rowsNumberBeforeFiltration).toBeGreaterThan(rowsNumberAfterFiltration) 72 } 73 }) 74 75 test('Altering project title and description', async ({ page }) => { 76 await page.goto('/') 77 78 await expect(page.getByText('Project List')).toBeVisible() 79 80 await page.getByRole('link', { name: 'Demo project - Bikes' }).hover() 81 82 await page 83 .getByText('Demo project - BikesA toy demo project using Bike Demand forecasting dataset') 84 .getByTestId('EditIcon') 85 .click() 86 87 await page.locator('input[name="name"]').fill('Bikes new title') 88 await page.locator('input[name="description"]').fill('Bikes new description') 89 90 await page.getByText('Save').click() 91 92 await page.waitForLoadState('domcontentloaded') 93 94 await expect(page.getByText('Bikes new title')).toBeVisible() 95 await expect(page.getByText('Bikes new description')).toBeVisible() 96 97 await page.getByRole('link', { name: 'Bikes new title' }).hover() 98 99 await page.getByText('Bikes new titleBikes new description').getByTestId('EditIcon').click() 100 101 await page.locator('input[name="name"]').fill('Demo project - Bikes') 102 await page 103 .locator('input[name="description"]') 104 .fill('A toy demo project using Bike Demand forecasting dataset') 105 106 await page.getByText('Save').click() 107 108 await page.waitForLoadState('domcontentloaded') 109 })