135 lines
3.8 KiB
TypeScript
135 lines
3.8 KiB
TypeScript
![]() |
import { test, expect } from '@playwright/test'
|
||
|
import { secrets } from './secrets'
|
||
|
import { EngineCommand } from '../../src/lang/std/engineConnection'
|
||
|
import { v4 as uuidv4 } from 'uuid'
|
||
|
import { getUtils } from './test-utils'
|
||
|
|
||
|
test.beforeEach(async ({ context, page }) => {
|
||
|
await context.addInitScript(async (token) => {
|
||
|
localStorage.setItem('TOKEN_PERSIST_KEY', token)
|
||
|
localStorage.setItem('persistCode', ``)
|
||
|
localStorage.setItem(
|
||
|
'SETTINGS_PERSIST_KEY',
|
||
|
JSON.stringify({
|
||
|
baseUnit: 'in',
|
||
|
cameraControls: 'KittyCAD',
|
||
|
defaultDirectory: '',
|
||
|
defaultProjectName: 'project-$nnn',
|
||
|
onboardingStatus: 'dismissed',
|
||
|
showDebugPanel: true,
|
||
|
textWrapping: 'On',
|
||
|
theme: 'system',
|
||
|
unitSystem: 'imperial',
|
||
|
})
|
||
|
)
|
||
|
}, secrets.token)
|
||
|
// reducedMotion kills animations, which speeds up tests and reduces flakiness
|
||
|
await page.emulateMedia({ reducedMotion: 'reduce' })
|
||
|
})
|
||
|
|
||
|
test.setTimeout(60000)
|
||
|
|
||
|
test('change camera, show planes', async ({ page, context }) => {
|
||
|
const u = getUtils(page)
|
||
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||
|
await page.goto('localhost:3000')
|
||
|
await u.waitForAuthSkipAppStart()
|
||
|
await u.openAndClearDebugPanel()
|
||
|
|
||
|
const camCmd: EngineCommand = {
|
||
|
type: 'modeling_cmd_req',
|
||
|
cmd_id: uuidv4(),
|
||
|
cmd: {
|
||
|
type: 'default_camera_look_at',
|
||
|
center: { x: 0, y: 0, z: 0 },
|
||
|
up: { x: 0, y: 0, z: 1 },
|
||
|
vantage: { x: 0, y: 50, z: 50 },
|
||
|
},
|
||
|
}
|
||
|
|
||
|
await u.sendCustomCmd(camCmd)
|
||
|
await u.waitForCmdReceive('default_camera_look_at')
|
||
|
|
||
|
// rotate
|
||
|
await u.closeDebugPanel()
|
||
|
await page.mouse.move(700, 200)
|
||
|
await page.mouse.down({ button: 'right' })
|
||
|
await page.mouse.move(600, 300)
|
||
|
await page.mouse.up({ button: 'right' })
|
||
|
|
||
|
await u.openDebugPanel()
|
||
|
await u.waitForCmdReceive('camera_drag_end')
|
||
|
await page.waitForTimeout(500)
|
||
|
await u.clearCommandLogs()
|
||
|
|
||
|
await page.getByRole('button', { name: 'Start Sketch' }).click()
|
||
|
|
||
|
await u.waitForDefaultPlanesVisibilityChange()
|
||
|
await u.closeDebugPanel()
|
||
|
|
||
|
await expect(page).toHaveScreenshot({
|
||
|
maxDiffPixels: 100,
|
||
|
})
|
||
|
|
||
|
await u.openAndClearDebugPanel()
|
||
|
await page.getByRole('button', { name: 'Exit Sketch' }).click()
|
||
|
await u.waitForDefaultPlanesVisibilityChange()
|
||
|
|
||
|
await u.sendCustomCmd(camCmd)
|
||
|
await u.waitForCmdReceive('default_camera_look_at')
|
||
|
|
||
|
await u.clearCommandLogs()
|
||
|
await u.closeDebugPanel()
|
||
|
// pan
|
||
|
await page.keyboard.down('Shift')
|
||
|
await page.mouse.move(600, 200)
|
||
|
await page.mouse.down({ button: 'right' })
|
||
|
await page.mouse.move(700, 200)
|
||
|
await page.mouse.up({ button: 'right' })
|
||
|
await page.keyboard.up('Shift')
|
||
|
|
||
|
await u.openDebugPanel()
|
||
|
await u.waitForCmdReceive('camera_drag_end')
|
||
|
await page.waitForTimeout(300)
|
||
|
await u.clearCommandLogs()
|
||
|
|
||
|
await page.getByRole('button', { name: 'Start Sketch' }).click()
|
||
|
await u.waitForDefaultPlanesVisibilityChange()
|
||
|
await u.closeDebugPanel()
|
||
|
|
||
|
await expect(page).toHaveScreenshot({
|
||
|
maxDiffPixels: 100,
|
||
|
})
|
||
|
|
||
|
await u.openAndClearDebugPanel()
|
||
|
await page.getByRole('button', { name: 'Exit Sketch' }).click()
|
||
|
await u.waitForDefaultPlanesVisibilityChange()
|
||
|
|
||
|
await u.sendCustomCmd(camCmd)
|
||
|
await u.waitForCmdReceive('default_camera_look_at')
|
||
|
|
||
|
await u.clearCommandLogs()
|
||
|
await u.closeDebugPanel()
|
||
|
|
||
|
// zoom
|
||
|
await page.keyboard.down('Control')
|
||
|
await page.mouse.move(700, 400)
|
||
|
await page.mouse.down({ button: 'right' })
|
||
|
await page.mouse.move(700, 350)
|
||
|
await page.mouse.up({ button: 'right' })
|
||
|
await page.keyboard.up('Control')
|
||
|
|
||
|
await u.openDebugPanel()
|
||
|
await u.waitForCmdReceive('camera_drag_end')
|
||
|
await page.waitForTimeout(300)
|
||
|
await u.clearCommandLogs()
|
||
|
|
||
|
await page.getByRole('button', { name: 'Start Sketch' }).click()
|
||
|
await u.waitForDefaultPlanesVisibilityChange()
|
||
|
await u.closeDebugPanel()
|
||
|
|
||
|
await expect(page).toHaveScreenshot({
|
||
|
maxDiffPixels: 100,
|
||
|
})
|
||
|
})
|