|
|
|
@ -1345,7 +1345,11 @@ test.describe('multi-profile sketching', () => {
|
|
|
|
|
page,
|
|
|
|
|
homePage,
|
|
|
|
|
}) => {
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const [selectXZPlane] = scene.makeMouseHelpers(650, 150)
|
|
|
|
|
|
|
|
|
@ -1383,21 +1387,21 @@ test.describe('multi-profile sketching', () => {
|
|
|
|
|
await test.step('Create a close profile stopping mid profile to equip the tangential arc, and than back to the line tool', async () => {
|
|
|
|
|
await startProfile1()
|
|
|
|
|
await editor.expectEditor.toContain(
|
|
|
|
|
`profile001 = startProfileAt([-2.17, 12.21], sketch001)`
|
|
|
|
|
`profile001 = startProfileAt([4.61, 12.21], sketch001)`
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
await endLineStartTanArc()
|
|
|
|
|
await editor.expectEditor.toContain(`|> line([9.02, -0.55], %)`)
|
|
|
|
|
await toolbar.tangentialArcBtn.click()
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await page.mouse.click(745, 359)
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await endLineStartTanArc({ delay: 544 })
|
|
|
|
|
|
|
|
|
|
await endArcStartLine()
|
|
|
|
|
await editor.expectEditor.toContain(`|> tangentialArcTo([9.83, 4.14], %)`)
|
|
|
|
|
await editor.expectEditor.toContain(`|> tangentialArcTo([16.61, 4.14], %)`)
|
|
|
|
|
await toolbar.lineBtn.click()
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await endArcStartLine()
|
|
|
|
|
|
|
|
|
|
await page.mouse.click(572, 110)
|
|
|
|
@ -1408,17 +1412,20 @@ test.describe('multi-profile sketching', () => {
|
|
|
|
|
|> close(%)`,
|
|
|
|
|
{ shouldNormalise: true }
|
|
|
|
|
)
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await test.step('Without unequipping from the last step, make another profile, and one that is not closed', async () => {
|
|
|
|
|
await startProfile2()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor.toContain(
|
|
|
|
|
`profile002 = startProfileAt([12.34, 11.53], sketch001)`
|
|
|
|
|
`profile002 = startProfileAt([19.12, 11.53], sketch001)`
|
|
|
|
|
)
|
|
|
|
|
await profile2Point2()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor.toContain(`|> line([9.43, -0.68], %)`)
|
|
|
|
|
await profile2Point3()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor.toContain(`|> line([2.17, -5.97], %)`)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
@ -1426,10 +1433,11 @@ test.describe('multi-profile sketching', () => {
|
|
|
|
|
await toolbar.circleBtn.click()
|
|
|
|
|
|
|
|
|
|
await circle1Center()
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await circle1Radius({ delay: 500 })
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor.toContain(
|
|
|
|
|
`profile003 = circle({ center = [16.41, 6.98], radius = 2.5 }, sketch001)`
|
|
|
|
|
`profile003 = circle({ center = [23.19, 6.98], radius = 2.5 }, sketch001)`
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
await test.step('hover in empty space to wait for overlays to get out of the way', async () => {
|
|
|
|
@ -1438,13 +1446,14 @@ test.describe('multi-profile sketching', () => {
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await circle2Center()
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await circle2Radius()
|
|
|
|
|
await editor.expectEditor.toContain(
|
|
|
|
|
`profile004 = circle({ center = [23.74, 1.9], radius = 0.72 }, sketch001)`
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
await test.step('create two corner rectangles in a row without unequip', async () => {
|
|
|
|
|
await page.screenshot({ path: 'rectangle.png' })
|
|
|
|
|
await toolbar.rectangleBtn.click()
|
|
|
|
|
|
|
|
|
|
await crnRect1point1()
|
|
|
|
@ -1460,14 +1469,15 @@ test.describe('multi-profile sketching', () => {
|
|
|
|
|
-segLen(rectangleSegmentA001)
|
|
|
|
|
], %)
|
|
|
|
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
|
|
|
|
|> close(%)`)
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
|> close(%)`.replaceAll("\n", ""))
|
|
|
|
|
|
|
|
|
|
await crnRect2point1()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor.toContain(
|
|
|
|
|
`profile006 = startProfileAt([11.05, 2.37], sketch001)`
|
|
|
|
|
)
|
|
|
|
|
await crnRect2point2()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor
|
|
|
|
|
.toContain(`|> angledLine([0, 5.49], %, $rectangleSegmentA002)
|
|
|
|
|
|> angledLine([
|
|
|
|
@ -1479,48 +1489,52 @@ test.describe('multi-profile sketching', () => {
|
|
|
|
|
-segLen(rectangleSegmentA002)
|
|
|
|
|
], %)
|
|
|
|
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
|
|
|
|
|> close(%)`)
|
|
|
|
|
|> close(%)`.replaceAll("\n", ""))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await test.step('create two center rectangles in a row without unequip', async () => {
|
|
|
|
|
await toolbar.selectCenterRectangle()
|
|
|
|
|
|
|
|
|
|
await cntrRect1point1()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor.toContain(
|
|
|
|
|
`profile007 = startProfileAt([8.41, -9.29], sketch001)`
|
|
|
|
|
)
|
|
|
|
|
await cntrRect1point2()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor
|
|
|
|
|
.toContain(`|> angledLine([0, 7.06], %, $rectangleSegmentA003)
|
|
|
|
|
|> angledLine([
|
|
|
|
|
|> angledLine([
|
|
|
|
|
segAng(rectangleSegmentA003) + 90,
|
|
|
|
|
4.34
|
|
|
|
|
], %)
|
|
|
|
|
|> angledLine([
|
|
|
|
|
|> angledLine([
|
|
|
|
|
segAng(rectangleSegmentA003),
|
|
|
|
|
-segLen(rectangleSegmentA003)
|
|
|
|
|
], %)
|
|
|
|
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
|
|
|
|
|> close(%)`)
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
|
|
|
|
|> close(%)`.replaceAll("\n", ""))
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
|
|
|
|
|
await cntrRect2point1()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor.toContain(
|
|
|
|
|
`profile008 = startProfileAt([19.33, -5.56], sketch001)`
|
|
|
|
|
)
|
|
|
|
|
await cntrRect2point2()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await editor.expectEditor
|
|
|
|
|
.toContain(`|> angledLine([0, 3.12], %, $rectangleSegmentA004)
|
|
|
|
|
|> angledLine([
|
|
|
|
|
|> angledLine([
|
|
|
|
|
segAng(rectangleSegmentA004) + 90,
|
|
|
|
|
6.24
|
|
|
|
|
], %)
|
|
|
|
|
|> angledLine([
|
|
|
|
|
|> angledLine([
|
|
|
|
|
segAng(rectangleSegmentA004),
|
|
|
|
|
-segLen(rectangleSegmentA004)
|
|
|
|
|
], %)
|
|
|
|
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
|
|
|
|
|> close(%)`)
|
|
|
|
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
|
|
|
|
|> close(%)`.replaceAll("\n", ""))
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
@ -1556,8 +1570,13 @@ profile003 = circle({ center = [6.92, -4.2], radius = 3.16 }, sketch001)
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const [pointOnSegment] = scene.makeMouseHelpers(590, 141)
|
|
|
|
|
const [profileEnd] = scene.makeMouseHelpers(970, 105)
|
|
|
|
|
const profileEndMv = scene.makeMouseHelpers(951, 101)[1]
|
|
|
|
@ -1574,9 +1593,11 @@ profile003 = circle({ center = [6.92, -4.2], radius = 3.16 }, sketch001)
|
|
|
|
|
const [rectEnd] = scene.makeMouseHelpers(757, 395)
|
|
|
|
|
|
|
|
|
|
await test.step('enter sketch and setup', async () => {
|
|
|
|
|
await page.screenshot({ path: "toolbar1.png" })
|
|
|
|
|
await pointOnSegment({ shouldDbClick: true })
|
|
|
|
|
await page.waitForTimeout(600)
|
|
|
|
|
|
|
|
|
|
await page.screenshot({ path: "toolbar2.png" })
|
|
|
|
|
await toolbar.lineBtn.click()
|
|
|
|
|
await page.waitForTimeout(100)
|
|
|
|
|
})
|
|
|
|
@ -1638,7 +1659,7 @@ profile003 = circle({ center = [6.92, -4.2], radius = 3.16 }, sketch001)
|
|
|
|
|
-segLen(rectangleSegmentA002)
|
|
|
|
|
], %)
|
|
|
|
|
|> lineTo([profileStartX(%), profileStartY(%)], %)
|
|
|
|
|
|> close(%)`)
|
|
|
|
|
|> close(%)`.replaceAll("\n", ""))
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
test('Can delete a profile in the editor while is sketch mode, and sketch mode does not break, can ctrl+z to undo after constraint with variable was added', async ({
|
|
|
|
@ -1674,7 +1695,11 @@ profile003 = circle({ center = [6.92, -4.2], radius = 3.16 }, sketch001)
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const [pointOnSegment] = scene.makeMouseHelpers(590, 141)
|
|
|
|
|
const [segment1Click] = scene.makeMouseHelpers(616, 131)
|
|
|
|
@ -1780,7 +1805,11 @@ extrude001 = extrude(5, profile003)
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const [pointOnSegment] = scene.makeMouseHelpers(574, 207)
|
|
|
|
|
|
|
|
|
@ -1807,7 +1836,11 @@ extrude001 = extrude(5, profile003)
|
|
|
|
|
localStorage.setItem('persistCode', `myVar = 5`)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const [selectXZPlane] = scene.makeMouseHelpers(650, 150)
|
|
|
|
|
|
|
|
|
@ -1858,7 +1891,11 @@ profile002 = startProfileAt([85.81, 52.55], sketch002)
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const [startProfileAt] = scene.makeMouseHelpers(606, 184)
|
|
|
|
|
const [nextPoint] = scene.makeMouseHelpers(763, 130)
|
|
|
|
@ -1897,7 +1934,11 @@ extrude001 = extrude(75, thePart)
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const [objClick] = scene.makeMouseHelpers(565, 343)
|
|
|
|
|
const [profilePoint1] = scene.makeMouseHelpers(609, 289)
|
|
|
|
@ -1911,8 +1952,7 @@ extrude001 = extrude(75, thePart)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await test.step('expect code to match initial conditions still', async () => {
|
|
|
|
|
await editor.expectEditor.toContain(`thePart = startSketchOn('XZ')
|
|
|
|
|
|> startProfileAt([7.53, 10.51], %)`)
|
|
|
|
|
await editor.expectEditor.toContain(`thePart = startSketchOn('XZ') |> startProfileAt([7.53, 10.51], %)`)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await test.step('equiping the line tool should break up the pipe expression', async () => {
|
|
|
|
@ -2018,7 +2058,11 @@ revolve002 = revolve({ angle = 45, axis = seg02 }, profile008)
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const camPositionForSelectingSketchOnWallProfiles = () =>
|
|
|
|
|
scene.moveCameraTo(
|
|
|
|
@ -2179,7 +2223,12 @@ loft([profile001, profile002])
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const [baseProfileEdgeClick] = scene.makeMouseHelpers(621, 292)
|
|
|
|
|
|
|
|
|
|
const [rect1Crn1] = scene.makeMouseHelpers(592, 283)
|
|
|
|
@ -2230,13 +2279,21 @@ loft([profile001, profile002])
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
await page.setBodyDimensions({ width: 1000, height: 500 })
|
|
|
|
|
await homePage.goToModelingScene()
|
|
|
|
|
await expect(
|
|
|
|
|
page.getByRole('button', { name: 'Start Sketch' })
|
|
|
|
|
).not.toBeDisabled()
|
|
|
|
|
|
|
|
|
|
const topProfileEdgeClickCoords = { x: 602, y: 185 } as const
|
|
|
|
|
const [topProfileEdgeClick] = scene.makeMouseHelpers(
|
|
|
|
|
topProfileEdgeClickCoords.x,
|
|
|
|
|
topProfileEdgeClickCoords.y
|
|
|
|
|
)
|
|
|
|
|
const [sideProfileEdgeClick] = scene.makeMouseHelpers(
|
|
|
|
|
788,
|
|
|
|
|
188,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const [rect1Crn1] = scene.makeMouseHelpers(592, 283)
|
|
|
|
|
const [rect1Crn2] = scene.makeMouseHelpers(797, 268)
|
|
|
|
@ -2247,8 +2304,11 @@ loft([profile001, profile002])
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
await topProfileEdgeClick()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await toolbar.editSketch()
|
|
|
|
|
await page.waitForTimeout(600)
|
|
|
|
|
await sideProfileEdgeClick()
|
|
|
|
|
await page.waitForTimeout(300)
|
|
|
|
|
await scene.expectPixelColor(TEST_COLORS.BLUE, { x: 788, y: 188 }, 15)
|
|
|
|
|
|
|
|
|
|
await toolbar.rectangleBtn.click()
|
|
|
|
|