Files
modeling-app/e2e/playwright/projects.spec.ts

70 lines
2.1 KiB
TypeScript
Raw Normal View History

import { test, expect } from '@playwright/test'
import { getUtils, setupElectron, tearDown } from './test-utils'
2024-08-12 18:06:08 -04:00
test.afterEach(async ({ page }, testInfo) => {
await tearDown(page, testInfo)
})
2024-08-13 17:02:24 +10:00
test(
'When the project folder is empty, user can create new project and open it.',
{ tag: '@electron' },
async ({ page: _ }, testInfo) => {
const { electronApp, page } = await setupElectron({ testInfo })
2024-08-13 17:02:24 +10:00
const u = await getUtils(page)
2024-08-13 19:36:39 +02:00
await page.goto('http://localhost:3000/')
2024-08-13 17:02:24 +10:00
page.on('console', console.log)
2024-08-13 17:02:24 +10:00
// expect to see text "No Projects found"
await expect(page.getByText('No Projects found')).toBeVisible()
2024-08-13 17:02:24 +10:00
await page.getByRole('button', { name: 'New project' }).click()
2024-08-13 17:02:24 +10:00
await expect(page.getByText('Successfully created')).toBeVisible()
await expect(page.getByText('Successfully created')).not.toBeVisible()
2024-08-13 17:02:24 +10:00
await expect(page.getByText('project-000')).toBeVisible()
2024-08-13 17:02:24 +10:00
await page.getByText('project-000').click()
2024-08-13 17:02:24 +10:00
await expect(page.getByTestId('loading')).toBeAttached()
await expect(page.getByTestId('loading')).not.toBeAttached({
timeout: 20_000,
})
2024-08-13 17:02:24 +10:00
await expect(
page.getByRole('button', { name: 'Start Sketch' })
).toBeEnabled({
timeout: 20_000,
})
2024-08-13 17:02:24 +10:00
await page.locator('.cm-content')
.fill(`const sketch001 = startSketchOn('XZ')
|> startProfileAt([-87.4, 282.92], %)
|> line([324.07, 27.199], %, $seg01)
|> line([118.328, -291.754], %)
|> line([-180.04, -202.08], %)
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
const extrude001 = extrude(200, sketch001)`)
2024-08-13 17:02:24 +10:00
const pointOnModel = { x: 660, y: 250 }
2024-08-13 17:02:24 +10:00
// check the model loaded by checking it's grey
await expect
.poll(() => u.getGreatestPixDiff(pointOnModel, [132, 132, 132]), {
timeout: 10_000,
})
.toBeLessThan(10)
2024-08-13 17:02:24 +10:00
await page.mouse.click(pointOnModel.x, pointOnModel.y)
// check user can interact with model by checking it turns yellow
await expect
.poll(() => u.getGreatestPixDiff(pointOnModel, [176, 180, 132]))
.toBeLessThan(10)
2024-08-13 17:02:24 +10:00
await electronApp.close()
}
)