partial fixes
This commit is contained in:
@ -9,14 +9,15 @@ import {
|
|||||||
sendCustomCmd,
|
sendCustomCmd,
|
||||||
} from '../test-utils'
|
} from '../test-utils'
|
||||||
|
|
||||||
type mouseParams = {
|
type MouseParams = {
|
||||||
pixelDiff?: number
|
pixelDiff?: number
|
||||||
shouldDbClick?: boolean
|
shouldDbClick?: boolean
|
||||||
|
delay?: number
|
||||||
}
|
}
|
||||||
type mouseDragToParams = mouseParams & {
|
type MouseDragToParams = MouseParams & {
|
||||||
fromPoint: { x: number; y: number }
|
fromPoint: { x: number; y: number }
|
||||||
}
|
}
|
||||||
type mouseDragFromParams = mouseParams & {
|
type MouseDragFromParams = MouseParams & {
|
||||||
toPoint: { x: number; y: number }
|
toPoint: { x: number; y: number }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -27,12 +28,12 @@ type SceneSerialised = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClickHandler = (clickParams?: mouseParams) => Promise<void | boolean>
|
type ClickHandler = (clickParams?: MouseParams) => Promise<void | boolean>
|
||||||
type MoveHandler = (moveParams?: mouseParams) => Promise<void | boolean>
|
type MoveHandler = (moveParams?: MouseParams) => Promise<void | boolean>
|
||||||
type DblClickHandler = (clickParams?: mouseParams) => Promise<void | boolean>
|
type DblClickHandler = (clickParams?: MouseParams) => Promise<void | boolean>
|
||||||
type DragToHandler = (dragParams: mouseDragToParams) => Promise<void | boolean>
|
type DragToHandler = (dragParams: MouseDragToParams) => Promise<void | boolean>
|
||||||
type DragFromHandler = (
|
type DragFromHandler = (
|
||||||
dragParams: mouseDragFromParams
|
dragParams: MouseDragFromParams
|
||||||
) => Promise<void | boolean>
|
) => Promise<void | boolean>
|
||||||
|
|
||||||
export class SceneFixture {
|
export class SceneFixture {
|
||||||
@ -73,22 +74,26 @@ export class SceneFixture {
|
|||||||
{ steps }: { steps: number } = { steps: 20 }
|
{ steps }: { steps: number } = { steps: 20 }
|
||||||
): [ClickHandler, MoveHandler, DblClickHandler] =>
|
): [ClickHandler, MoveHandler, DblClickHandler] =>
|
||||||
[
|
[
|
||||||
(clickParams?: mouseParams) => {
|
(clickParams?: MouseParams) => {
|
||||||
if (clickParams?.pixelDiff) {
|
if (clickParams?.pixelDiff) {
|
||||||
return doAndWaitForImageDiff(
|
return doAndWaitForImageDiff(
|
||||||
this.page,
|
this.page,
|
||||||
() =>
|
() =>
|
||||||
clickParams?.shouldDbClick
|
clickParams?.shouldDbClick
|
||||||
? this.page.mouse.dblclick(x, y)
|
? this.page.mouse.dblclick(x, y, {
|
||||||
: this.page.mouse.click(x, y),
|
delay: clickParams?.delay || 0,
|
||||||
|
})
|
||||||
|
: this.page.mouse.click(x, y, {
|
||||||
|
delay: clickParams?.delay || 0,
|
||||||
|
}),
|
||||||
clickParams.pixelDiff
|
clickParams.pixelDiff
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return clickParams?.shouldDbClick
|
return clickParams?.shouldDbClick
|
||||||
? this.page.mouse.dblclick(x, y)
|
? this.page.mouse.dblclick(x, y, { delay: clickParams?.delay || 0 })
|
||||||
: this.page.mouse.click(x, y)
|
: this.page.mouse.click(x, y, { delay: clickParams?.delay || 0 })
|
||||||
},
|
},
|
||||||
(moveParams?: mouseParams) => {
|
(moveParams?: MouseParams) => {
|
||||||
if (moveParams?.pixelDiff) {
|
if (moveParams?.pixelDiff) {
|
||||||
return doAndWaitForImageDiff(
|
return doAndWaitForImageDiff(
|
||||||
this.page,
|
this.page,
|
||||||
@ -98,7 +103,7 @@ export class SceneFixture {
|
|||||||
}
|
}
|
||||||
return this.page.mouse.move(x, y, { steps })
|
return this.page.mouse.move(x, y, { steps })
|
||||||
},
|
},
|
||||||
(clickParams?: mouseParams) => {
|
(clickParams?: MouseParams) => {
|
||||||
if (clickParams?.pixelDiff) {
|
if (clickParams?.pixelDiff) {
|
||||||
return doAndWaitForImageDiff(
|
return doAndWaitForImageDiff(
|
||||||
this.page,
|
this.page,
|
||||||
@ -115,7 +120,7 @@ export class SceneFixture {
|
|||||||
{ steps }: { steps: number } = { steps: 20 }
|
{ steps }: { steps: number } = { steps: 20 }
|
||||||
): [DragToHandler, DragFromHandler] =>
|
): [DragToHandler, DragFromHandler] =>
|
||||||
[
|
[
|
||||||
(dragToParams: mouseDragToParams) => {
|
(dragToParams: MouseDragToParams) => {
|
||||||
if (dragToParams?.pixelDiff) {
|
if (dragToParams?.pixelDiff) {
|
||||||
return doAndWaitForImageDiff(
|
return doAndWaitForImageDiff(
|
||||||
this.page,
|
this.page,
|
||||||
@ -132,7 +137,7 @@ export class SceneFixture {
|
|||||||
targetPosition: { x, y },
|
targetPosition: { x, y },
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
(dragFromParams: mouseDragFromParams) => {
|
(dragFromParams: MouseDragFromParams) => {
|
||||||
if (dragFromParams?.pixelDiff) {
|
if (dragFromParams?.pixelDiff) {
|
||||||
return doAndWaitForImageDiff(
|
return doAndWaitForImageDiff(
|
||||||
this.page,
|
this.page,
|
||||||
|
@ -99,6 +99,7 @@ test.describe('Sketch tests', () => {
|
|||||||
})
|
})
|
||||||
test('Can delete most of a sketch and the line tool will still work', async ({
|
test('Can delete most of a sketch and the line tool will still work', async ({
|
||||||
page,
|
page,
|
||||||
|
scene,
|
||||||
homePage,
|
homePage,
|
||||||
}) => {
|
}) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
@ -114,6 +115,8 @@ test.describe('Sketch tests', () => {
|
|||||||
|
|
||||||
await homePage.goToModelingScene()
|
await homePage.goToModelingScene()
|
||||||
|
|
||||||
|
await scene.expectPixelColor(TEST_COLORS.WHITE, { x: 587, y: 270 }, 15)
|
||||||
|
|
||||||
await expect(async () => {
|
await expect(async () => {
|
||||||
await page.mouse.click(700, 200)
|
await page.mouse.click(700, 200)
|
||||||
await page.getByText('tangentialArcTo([8.33, -1.31], %)').click()
|
await page.getByText('tangentialArcTo([8.33, -1.31], %)').click()
|
||||||
@ -137,10 +140,11 @@ test.describe('Sketch tests', () => {
|
|||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
|
|
||||||
await page.getByRole('button', { name: 'line Line', exact: true }).click()
|
await page.getByRole('button', { name: 'line Line', exact: true }).click()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(500)
|
||||||
// click start profileAt handle to continue profile
|
// click start profileAt handle to continue profile
|
||||||
await page.mouse.click(702, 407)
|
await page.mouse.click(702, 406, { delay: 500 })
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
|
await page.mouse.move(800, 150)
|
||||||
|
|
||||||
await expect(async () => {
|
await expect(async () => {
|
||||||
// click to add segment
|
// click to add segment
|
||||||
@ -1379,19 +1383,19 @@ 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 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 startProfile1()
|
||||||
await editor.expectEditor.toContain(
|
await editor.expectEditor.toContain(
|
||||||
`profile001 = startProfileAt([4.61, 12.21], sketch001)`
|
`profile001 = startProfileAt([-2.17, 12.21], sketch001)`
|
||||||
)
|
)
|
||||||
|
|
||||||
await endLineStartTanArc()
|
await endLineStartTanArc()
|
||||||
await editor.expectEditor.toContain(`|> line([9.02, -0.55], %)`)
|
await editor.expectEditor.toContain(`|> line([9.02, -0.55], %)`)
|
||||||
await toolbar.tangentialArcBtn.click()
|
await toolbar.tangentialArcBtn.click()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await endLineStartTanArc()
|
await page.mouse.click(745, 359)
|
||||||
|
await page.waitForTimeout(100)
|
||||||
|
await endLineStartTanArc({ delay: 544 })
|
||||||
|
|
||||||
await endArcStartLine()
|
await endArcStartLine()
|
||||||
await editor.expectEditor.toContain(
|
await editor.expectEditor.toContain(`|> tangentialArcTo([9.83, 4.14], %)`)
|
||||||
`|> tangentialArcTo([16.61, 4.14], %)`
|
|
||||||
)
|
|
||||||
await toolbar.lineBtn.click()
|
await toolbar.lineBtn.click()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await endArcStartLine()
|
await endArcStartLine()
|
||||||
@ -1399,16 +1403,18 @@ test.describe('multi-profile sketching', () => {
|
|||||||
await page.mouse.click(572, 110)
|
await page.mouse.click(572, 110)
|
||||||
await editor.expectEditor.toContain(`|> line([-11.73, 5.35], %)`)
|
await editor.expectEditor.toContain(`|> line([-11.73, 5.35], %)`)
|
||||||
await startProfile1()
|
await startProfile1()
|
||||||
await editor.expectEditor
|
await editor.expectEditor.toContain(
|
||||||
.toContain(`|> lineTo([profileStartX(%), profileStartY(%)], %)
|
`|> lineTo([profileStartX(%), profileStartY(%)], %)
|
||||||
|> close(%)`)
|
|> close(%)`,
|
||||||
|
{ shouldNormalise: true }
|
||||||
|
)
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
})
|
})
|
||||||
|
|
||||||
await test.step('Without unequipping from the last step, make another profile, and one that is not closed', async () => {
|
await test.step('Without unequipping from the last step, make another profile, and one that is not closed', async () => {
|
||||||
await startProfile2()
|
await startProfile2()
|
||||||
await editor.expectEditor.toContain(
|
await editor.expectEditor.toContain(
|
||||||
`profile002 = startProfileAt([19.12, 11.53], sketch001)`
|
`profile002 = startProfileAt([12.34, 11.53], sketch001)`
|
||||||
)
|
)
|
||||||
await profile2Point2()
|
await profile2Point2()
|
||||||
await editor.expectEditor.toContain(`|> line([9.43, -0.68], %)`)
|
await editor.expectEditor.toContain(`|> line([9.43, -0.68], %)`)
|
||||||
@ -1421,9 +1427,9 @@ test.describe('multi-profile sketching', () => {
|
|||||||
|
|
||||||
await circle1Center()
|
await circle1Center()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await circle1Radius()
|
await circle1Radius({ delay: 500 })
|
||||||
await editor.expectEditor.toContain(
|
await editor.expectEditor.toContain(
|
||||||
`profile003 = circle({ center = [23.19, 6.98], radius = 2.5 }, sketch001)`
|
`profile003 = circle({ center = [16.41, 6.98], radius = 2.5 }, sketch001)`
|
||||||
)
|
)
|
||||||
|
|
||||||
await test.step('hover in empty space to wait for overlays to get out of the way', async () => {
|
await test.step('hover in empty space to wait for overlays to get out of the way', async () => {
|
||||||
|
@ -21,7 +21,6 @@ import { ContextMenu, ContextMenuItem } from './ContextMenu'
|
|||||||
import usePlatform from 'hooks/usePlatform'
|
import usePlatform from 'hooks/usePlatform'
|
||||||
import { FileEntry } from 'lib/project'
|
import { FileEntry } from 'lib/project'
|
||||||
import { useFileSystemWatcher } from 'hooks/useFileSystemWatcher'
|
import { useFileSystemWatcher } from 'hooks/useFileSystemWatcher'
|
||||||
import { normalizeLineEndings } from 'lib/codeEditor'
|
|
||||||
import { reportRejection } from 'lib/trap'
|
import { reportRejection } from 'lib/trap'
|
||||||
|
|
||||||
function getIndentationCSS(level: number) {
|
function getIndentationCSS(level: number) {
|
||||||
|
Reference in New Issue
Block a user