* add package.json Signed-off-by: Jess Frazelle <github@jessfraz.com> initial run; Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> more fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> clientsidescne Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> paths Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fix styles Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> combine Signed-off-by: Jess Frazelle <github@jessfraz.com> eslint rule Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> my ocd Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> constants file Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> no more import sceneInfra Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> try fix circular import Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
132 lines
3.7 KiB
TypeScript
132 lines
3.7 KiB
TypeScript
import type { Page } from '@playwright/test'
|
|
import type { EngineCommand } from '@src/lang/std/artifactGraph'
|
|
import { uuidv4 } from '@src/lib/utils'
|
|
|
|
import type { HomePageFixture } from '@e2e/playwright/fixtures/homePageFixture'
|
|
import type { SceneFixture } from '@e2e/playwright/fixtures/sceneFixture'
|
|
import { getUtils } from '@e2e/playwright/test-utils'
|
|
import { expect, test } from '@e2e/playwright/zoo-test'
|
|
|
|
test.describe(
|
|
'Can create sketches on all planes and their back sides',
|
|
{ tag: ['@skipWin'] },
|
|
() => {
|
|
const sketchOnPlaneAndBackSideTest = async (
|
|
page: Page,
|
|
homePage: HomePageFixture,
|
|
scene: SceneFixture,
|
|
plane: string,
|
|
clickCoords: { x: number; y: number }
|
|
) => {
|
|
const u = await getUtils(page)
|
|
await page.setBodyDimensions({ width: 1200, height: 500 })
|
|
|
|
await homePage.goToModelingScene()
|
|
const XYPlanRed: [number, number, number] = [98, 50, 51]
|
|
await scene.expectPixelColor(XYPlanRed, { x: 700, y: 300 }, 15)
|
|
|
|
await u.openDebugPanel()
|
|
|
|
const coord =
|
|
plane === '-XY' || plane === '-YZ' || plane === 'XZ' ? -100 : 100
|
|
const camCommand: EngineCommand = {
|
|
type: 'modeling_cmd_req',
|
|
cmd_id: uuidv4(),
|
|
cmd: {
|
|
type: 'default_camera_look_at',
|
|
center: { x: 0, y: 0, z: 0 },
|
|
vantage: { x: coord, y: coord, z: coord },
|
|
up: { x: 0, y: 0, z: 1 },
|
|
},
|
|
}
|
|
const updateCamCommand: EngineCommand = {
|
|
type: 'modeling_cmd_req',
|
|
cmd_id: uuidv4(),
|
|
cmd: {
|
|
type: 'default_camera_get_settings',
|
|
},
|
|
}
|
|
|
|
const code = `@settings(defaultLengthUnit = in)sketch001 = startSketchOn(${plane})profile001 = startProfileAt([0.91, -1.22], sketch001)`
|
|
|
|
await u.openDebugPanel()
|
|
|
|
await u.clearCommandLogs()
|
|
await page.getByRole('button', { name: 'Start Sketch' }).click()
|
|
|
|
await u.sendCustomCmd(camCommand)
|
|
await page.waitForTimeout(100)
|
|
await u.sendCustomCmd(updateCamCommand)
|
|
|
|
await u.closeDebugPanel()
|
|
await page.mouse.click(clickCoords.x, clickCoords.y)
|
|
await page.waitForTimeout(600) // wait for animation
|
|
|
|
await expect(
|
|
page.getByRole('button', { name: 'line Line', exact: true })
|
|
).toBeVisible()
|
|
|
|
await u.closeDebugPanel()
|
|
await page.mouse.click(707, 393)
|
|
|
|
await expect(page.locator('.cm-content')).toHaveText(code)
|
|
|
|
await page
|
|
.getByRole('button', { name: 'line Line', exact: true })
|
|
.first()
|
|
.click()
|
|
await u.openAndClearDebugPanel()
|
|
await page.getByRole('button', { name: 'Exit Sketch' }).click()
|
|
await u.expectCmdLog('[data-message-type="execution-done"]')
|
|
|
|
await u.clearCommandLogs()
|
|
await u.removeCurrentCode()
|
|
}
|
|
|
|
const planeConfigs = [
|
|
{
|
|
plane: 'XY',
|
|
coords: { x: 600, y: 388 },
|
|
description: 'red plane',
|
|
},
|
|
{
|
|
plane: 'YZ',
|
|
coords: { x: 700, y: 250 },
|
|
description: 'green plane',
|
|
},
|
|
{
|
|
plane: 'XZ',
|
|
coords: { x: 684, y: 427 },
|
|
description: 'blue plane',
|
|
},
|
|
{
|
|
plane: '-XY',
|
|
coords: { x: 600, y: 118 },
|
|
description: 'back of red plane',
|
|
},
|
|
{
|
|
plane: '-YZ',
|
|
coords: { x: 700, y: 219 },
|
|
description: 'back of green plane',
|
|
},
|
|
{
|
|
plane: '-XZ',
|
|
coords: { x: 700, y: 80 },
|
|
description: 'back of blue plane',
|
|
},
|
|
]
|
|
|
|
for (const config of planeConfigs) {
|
|
test(config.plane, async ({ page, homePage, scene }) => {
|
|
await sketchOnPlaneAndBackSideTest(
|
|
page,
|
|
homePage,
|
|
scene,
|
|
config.plane,
|
|
config.coords
|
|
)
|
|
})
|
|
}
|
|
}
|
|
)
|