fmt
This commit is contained in:
@ -27,7 +27,7 @@ document.addEventListener('mousemove', (e) =>
|
||||
)
|
||||
*/
|
||||
|
||||
const deg = Math.PI*2 / 360
|
||||
const deg = (Math.PI * 2) / 360
|
||||
|
||||
const commonPoints = {
|
||||
startAt: '[9.06, -12.22]',
|
||||
@ -47,9 +47,9 @@ const getTools = (opts) => {
|
||||
// NOTE: these pretty much can't be perfect because of screen scaling.
|
||||
// Handle on a case-by-case.
|
||||
const toU = (x, y) => [
|
||||
kcRound( x*0.0854),
|
||||
kcRound(-y*0.0854), // Y is inverted in our coordinate system
|
||||
];
|
||||
kcRound(x * 0.0854),
|
||||
kcRound(-y * 0.0854), // Y is inverted in our coordinate system
|
||||
]
|
||||
|
||||
// Turn the array into a string with specific formatting
|
||||
const fromUToString = (xy) => `[${xy[0]}, ${xy[1]}]`
|
||||
@ -58,10 +58,11 @@ const getTools = (opts) => {
|
||||
const toSU = (xy) => fromUToString(toU(xy[0], xy[1]))
|
||||
|
||||
// Make it easier to click around from center ("click [from] zero zero")
|
||||
const click00 = (x, y) => opts.page.mouse.click(opts.center.x + x, opts.center.y + y)
|
||||
const click00 = (x, y) =>
|
||||
opts.page.mouse.click(opts.center.x + x, opts.center.y + y)
|
||||
|
||||
// Relative clicker, must keep state
|
||||
let last = { x: 0, y: 0 };
|
||||
let last = { x: 0, y: 0 }
|
||||
const click00r = (x, y) => {
|
||||
// reset relative coordinates when anything is undefined
|
||||
if (x === undefined || y === undefined) {
|
||||
@ -1535,14 +1536,14 @@ const part001 = startSketchOn('XZ')
|
||||
test('Can add multiple sketches', async ({ page }) => {
|
||||
test.skip(process.platform === 'darwin', 'Can add multiple sketches')
|
||||
const u = await getUtils(page)
|
||||
const viewportSize = { width: 1200, height: 500, };
|
||||
const viewportSize = { width: 1200, height: 500 }
|
||||
await page.setViewportSize(viewportSize)
|
||||
await page.goto('/')
|
||||
await u.waitForAuthSkipAppStart()
|
||||
await u.openDebugPanel()
|
||||
|
||||
const center = { x: viewportSize.width / 2, y: viewportSize.height / 2 };
|
||||
const { toSU, click00r, expectCodeToBe } = getTools({ center, page });
|
||||
const center = { x: viewportSize.width / 2, y: viewportSize.height / 2 }
|
||||
const { toSU, click00r, expectCodeToBe } = getTools({ center, page })
|
||||
|
||||
await expect(
|
||||
page.getByRole('button', { name: 'Start Sketch' })
|
||||
@ -1556,7 +1557,7 @@ test('Can add multiple sketches', async ({ page }) => {
|
||||
200
|
||||
)
|
||||
|
||||
let codeStr = "const part001 = startSketchOn('XY')";
|
||||
let codeStr = "const part001 = startSketchOn('XY')"
|
||||
|
||||
await page.mouse.click(center.x, viewportSize.height * 0.55)
|
||||
await expectCodeToBe(codeStr)
|
||||
@ -1568,15 +1569,15 @@ test('Can add multiple sketches', async ({ page }) => {
|
||||
await expectCodeToBe(codeStr)
|
||||
|
||||
await click00r(50, 0)
|
||||
codeStr += ` |> line(${toSU([50, 0])}, %)`;
|
||||
codeStr += ` |> line(${toSU([50, 0])}, %)`
|
||||
await expectCodeToBe(codeStr)
|
||||
|
||||
await click00r(0, 50)
|
||||
codeStr += ` |> line(${toSU([0, 50])}, %)`;
|
||||
codeStr += ` |> line(${toSU([0, 50])}, %)`
|
||||
await expectCodeToBe(codeStr)
|
||||
|
||||
await click00r(-50, 0)
|
||||
codeStr += ` |> line(${toSU([-50, 0])}, %)`;
|
||||
codeStr += ` |> line(${toSU([-50, 0])}, %)`
|
||||
await expectCodeToBe(codeStr)
|
||||
|
||||
// exit the sketch, reset relative clicker
|
||||
@ -1594,7 +1595,7 @@ test('Can add multiple sketches', async ({ page }) => {
|
||||
// so selecting the plane again is a bit easier.
|
||||
await page.mouse.click(center.x + 30, center.y)
|
||||
await page.waitForTimeout(500) // TODO detect animation ending, or disable animation
|
||||
codeStr += "const part002 = startSketchOn('XY')";
|
||||
codeStr += "const part002 = startSketchOn('XY')"
|
||||
await expectCodeToBe(codeStr)
|
||||
await u.closeDebugPanel()
|
||||
|
||||
@ -1603,15 +1604,15 @@ test('Can add multiple sketches', async ({ page }) => {
|
||||
await expectCodeToBe(codeStr)
|
||||
|
||||
await click00r(30, 0)
|
||||
codeStr += ` |> line(${toSU([30 - 0.1 /* imprecision */, 0])}, %)`;
|
||||
codeStr += ` |> line(${toSU([30 - 0.1 /* imprecision */, 0])}, %)`
|
||||
await expectCodeToBe(codeStr)
|
||||
|
||||
await click00r(0, 30)
|
||||
codeStr += ` |> line(${toSU([0, 30])}, %)`;
|
||||
codeStr += ` |> line(${toSU([0, 30])}, %)`
|
||||
await expectCodeToBe(codeStr)
|
||||
|
||||
await click00r(-30, 0)
|
||||
codeStr += ` |> line(${toSU([-30 + 0.1, 0])}, %)`;
|
||||
codeStr += ` |> line(${toSU([-30 + 0.1, 0])}, %)`
|
||||
await expectCodeToBe(codeStr)
|
||||
|
||||
click00r(undefined, undefined)
|
||||
@ -2966,22 +2967,16 @@ const part002 = startSketchOn('XZ')
|
||||
})
|
||||
|
||||
const wiggleMove = async (page, x, y, steps, dist, ang, amplitude, freq) => {
|
||||
const tau = Math.PI*2
|
||||
const tau = Math.PI * 2
|
||||
const deg = tau / 360
|
||||
const step = dist / steps;
|
||||
const step = dist / steps
|
||||
for (let i = 0, j = 0; i < dist; i += step, j += 1) {
|
||||
const [x1, y1] = [
|
||||
0,
|
||||
Math.sin(tau / steps * j * freq) * amplitude,
|
||||
]
|
||||
const [x1, y1] = [0, Math.sin((tau / steps) * j * freq) * amplitude]
|
||||
const [x2, y2] = [
|
||||
Math.cos(-ang*deg)*i - Math.sin(-ang*deg)*y1,
|
||||
Math.sin(-ang*deg)*i + Math.cos(-ang*deg)*y1,
|
||||
]
|
||||
const [xr, yr] = [
|
||||
x2,
|
||||
y2
|
||||
Math.cos(-ang * deg) * i - Math.sin(-ang * deg) * y1,
|
||||
Math.sin(-ang * deg) * i + Math.cos(-ang * deg) * y1,
|
||||
]
|
||||
const [xr, yr] = [x2, y2]
|
||||
await page.mouse.move(x + xr, y + yr, { steps: 2 })
|
||||
}
|
||||
}
|
||||
@ -3024,9 +3019,10 @@ test.describe('Testing segment overlays', () => {
|
||||
|
||||
await page.mouse.move(0, 0)
|
||||
await page.waitForTimeout(1000)
|
||||
let x = 0, y = 0
|
||||
x = hoverPos.x + Math.cos(ang*deg)*32
|
||||
y = hoverPos.y - Math.sin(ang*deg)*32
|
||||
let x = 0,
|
||||
y = 0
|
||||
x = hoverPos.x + Math.cos(ang * deg) * 32
|
||||
y = hoverPos.y - Math.sin(ang * deg) * 32
|
||||
await page.mouse.move(x, y)
|
||||
await wiggleMove(page, x, y, 20, 30, ang, 10, 5)
|
||||
|
||||
@ -3048,8 +3044,8 @@ test.describe('Testing segment overlays', () => {
|
||||
|
||||
await page.mouse.move(0, 0)
|
||||
await page.waitForTimeout(1000)
|
||||
x = hoverPos.x + Math.cos(ang*deg)*32
|
||||
y = hoverPos.y - Math.sin(ang*deg)*32
|
||||
x = hoverPos.x + Math.cos(ang * deg) * 32
|
||||
y = hoverPos.y - Math.sin(ang * deg) * 32
|
||||
await page.mouse.move(x, y)
|
||||
await wiggleMove(page, x, y, 20, 30, ang, 10, 5)
|
||||
|
||||
@ -3100,13 +3096,13 @@ test.describe('Testing segment overlays', () => {
|
||||
}) => {
|
||||
await page.mouse.move(0, 0)
|
||||
await page.waitForTimeout(1000)
|
||||
let x = 0, y = 0
|
||||
x = hoverPos.x + Math.cos(ang*deg)*32
|
||||
y = hoverPos.y - Math.sin(ang*deg)*32
|
||||
let x = 0,
|
||||
y = 0
|
||||
x = hoverPos.x + Math.cos(ang * deg) * 32
|
||||
y = hoverPos.y - Math.sin(ang * deg) * 32
|
||||
await page.mouse.move(x, y)
|
||||
await wiggleMove(page, x, y, 20, 30, ang, 10, 5)
|
||||
|
||||
|
||||
await expect(page.getByText('Added variable')).not.toBeVisible()
|
||||
await expect(page.locator('.cm-content')).toContainText(
|
||||
expectBeforeUnconstrained
|
||||
@ -3128,8 +3124,8 @@ test.describe('Testing segment overlays', () => {
|
||||
|
||||
await page.mouse.move(0, 0)
|
||||
await page.waitForTimeout(1000)
|
||||
x = hoverPos.x + Math.cos(ang*deg)*32
|
||||
y = hoverPos.y - Math.sin(ang*deg)*32
|
||||
x = hoverPos.x + Math.cos(ang * deg) * 32
|
||||
y = hoverPos.y - Math.sin(ang * deg) * 32
|
||||
await page.mouse.move(x, y)
|
||||
await wiggleMove(page, x, y, 20, 30, ang, 10, 5)
|
||||
|
||||
@ -3217,14 +3213,14 @@ test.describe('Testing segment overlays', () => {
|
||||
|
||||
// Drag the sketch into view
|
||||
await page.mouse.move(600, 64)
|
||||
await page.mouse.down({ button: "middle" })
|
||||
await page.mouse.down({ button: 'middle' })
|
||||
await page.mouse.move(600, 450, { steps: 10 })
|
||||
await page.mouse.up({ button: "middle" })
|
||||
await page.mouse.up({ button: 'middle' })
|
||||
|
||||
await page.mouse.move(600, 64)
|
||||
await page.mouse.down({ button: "middle" })
|
||||
await page.mouse.down({ button: 'middle' })
|
||||
await page.mouse.move(600, 120, { steps: 10 })
|
||||
await page.mouse.up({ button: "middle" })
|
||||
await page.mouse.up({ button: 'middle' })
|
||||
|
||||
let ang = 0
|
||||
|
||||
@ -3237,7 +3233,7 @@ test.describe('Testing segment overlays', () => {
|
||||
expectBeforeUnconstrained: '|> line([0.5, -14 + 0], %)',
|
||||
expectAfterUnconstrained: '|> line([0.5, -14], %)',
|
||||
expectFinal: '|> line([0.5, yRel001], %)',
|
||||
ang: ang+180,
|
||||
ang: ang + 180,
|
||||
})
|
||||
console.log('line2')
|
||||
await clickUnconstrained({
|
||||
@ -3246,7 +3242,7 @@ test.describe('Testing segment overlays', () => {
|
||||
expectBeforeUnconstrained: '|> line([0.5, yRel001], %)',
|
||||
expectAfterUnconstrained: 'line([xRel001, yRel001], %)',
|
||||
expectFinal: '|> line([0.5, yRel001], %)',
|
||||
ang: ang+180,
|
||||
ang: ang + 180,
|
||||
})
|
||||
|
||||
const angledLine = await u.getBoundingBox(`[data-overlay-index="1"]`)
|
||||
@ -3259,7 +3255,7 @@ test.describe('Testing segment overlays', () => {
|
||||
'angledLine({ angle: 3 + 0, length: 32 + 0 }, %)',
|
||||
expectAfterUnconstrained: 'angledLine({ angle: 3, length: 32 + 0 }, %)',
|
||||
expectFinal: 'angledLine({ angle: angle001, length: 32 + 0 }, %)',
|
||||
ang: ang+180,
|
||||
ang: ang + 180,
|
||||
})
|
||||
console.log('angledLine2')
|
||||
await clickConstrained({
|
||||
@ -3270,7 +3266,7 @@ test.describe('Testing segment overlays', () => {
|
||||
expectAfterUnconstrained:
|
||||
'angledLine({ angle: angle001, length: 32 }, %)',
|
||||
expectFinal: 'angledLine({ angle: angle001, length: len001 }, %)',
|
||||
ang: ang+180,
|
||||
ang: ang + 180,
|
||||
})
|
||||
|
||||
await page.mouse.move(700, 250)
|
||||
@ -3290,7 +3286,7 @@ test.describe('Testing segment overlays', () => {
|
||||
expectAfterUnconstrained: 'lineTo([5 + 33, 31.5], %)',
|
||||
expectFinal: 'lineTo([5 + 33, yAbs001], %)',
|
||||
steps: 8,
|
||||
ang: ang+180,
|
||||
ang: ang + 180,
|
||||
})
|
||||
console.log('lineTo2')
|
||||
await clickConstrained({
|
||||
@ -3300,7 +3296,7 @@ test.describe('Testing segment overlays', () => {
|
||||
expectAfterUnconstrained: 'lineTo([38, yAbs001], %)',
|
||||
expectFinal: 'lineTo([xAbs001, yAbs001], %)',
|
||||
steps: 8,
|
||||
ang: ang+180,
|
||||
ang: ang + 180,
|
||||
})
|
||||
|
||||
const xLineTo = await u.getBoundingBox(`[data-overlay-index="3"]`)
|
||||
@ -3312,7 +3308,7 @@ test.describe('Testing segment overlays', () => {
|
||||
expectBeforeUnconstrained: 'xLineTo(5 + 9 - 5, %)',
|
||||
expectAfterUnconstrained: 'xLineTo(9, %)',
|
||||
expectFinal: 'xLineTo(xAbs002, %)',
|
||||
ang: ang+180,
|
||||
ang: ang + 180,
|
||||
steps: 8,
|
||||
})
|
||||
})
|
||||
@ -3454,7 +3450,7 @@ const part001 = startSketchOn('XZ')
|
||||
expectBeforeUnconstrained: 'yLine(21.14 + 0, %)',
|
||||
expectAfterUnconstrained: 'yLine(21.14, %)',
|
||||
expectFinal: 'yLine(yRel001, %)',
|
||||
ang: ang + 180
|
||||
ang: ang + 180,
|
||||
})
|
||||
|
||||
const angledLineOfXLength = await u.getBoundingBox(
|
||||
@ -3471,7 +3467,7 @@ const part001 = startSketchOn('XZ')
|
||||
'angledLineOfXLength({ angle: -179, length: 23.14 }, %)',
|
||||
expectFinal:
|
||||
'angledLineOfXLength({ angle: angle001, length: 23.14 }, %)',
|
||||
ang: ang + 180
|
||||
ang: ang + 180,
|
||||
})
|
||||
console.log('angledLineOfXLength2')
|
||||
await clickUnconstrained({
|
||||
@ -3484,7 +3480,7 @@ const part001 = startSketchOn('XZ')
|
||||
expectFinal:
|
||||
'angledLineOfXLength({ angle: angle001, length: 23.14 }, %)',
|
||||
steps: 7,
|
||||
ang: ang + 180
|
||||
ang: ang + 180,
|
||||
})
|
||||
|
||||
const angledLineOfYLength = await u.getBoundingBox(
|
||||
@ -3575,7 +3571,7 @@ const part001 = startSketchOn('XZ')
|
||||
expectBeforeUnconstrained: 'angledLineToX({ angle: 3 + 0, to: 26 }, %)',
|
||||
expectAfterUnconstrained: 'angledLineToX({ angle: 3, to: 26 }, %)',
|
||||
expectFinal: 'angledLineToX({ angle: angle001, to: 26 }, %)',
|
||||
ang: ang + 180
|
||||
ang: ang + 180,
|
||||
})
|
||||
console.log('angledLineToX2')
|
||||
await clickUnconstrained({
|
||||
@ -3586,7 +3582,7 @@ const part001 = startSketchOn('XZ')
|
||||
expectAfterUnconstrained:
|
||||
'angledLineToX({ angle: angle001, to: xAbs001 }, %)',
|
||||
expectFinal: 'angledLineToX({ angle: angle001, to: 26 }, %)',
|
||||
ang: ang + 180
|
||||
ang: ang + 180,
|
||||
})
|
||||
|
||||
const angledLineToY = await u.getBoundingBox(`[data-overlay-index="10"]`)
|
||||
@ -3601,7 +3597,7 @@ const part001 = startSketchOn('XZ')
|
||||
'angledLineToY({ angle: angle002, to: 9.14 + 0 }, %)',
|
||||
expectFinal: 'angledLineToY({ angle: 89, to: 9.14 + 0 }, %)',
|
||||
steps: process.platform === 'darwin' ? 8 : 9,
|
||||
ang: ang + 180
|
||||
ang: ang + 180,
|
||||
})
|
||||
console.log('angledLineToY2')
|
||||
await clickConstrained({
|
||||
@ -3611,7 +3607,7 @@ const part001 = startSketchOn('XZ')
|
||||
'angledLineToY({ angle: 89, to: 9.14 + 0 }, %)',
|
||||
expectAfterUnconstrained: 'angledLineToY({ angle: 89, to: 9.14 }, %)',
|
||||
expectFinal: 'angledLineToY({ angle: 89, to: yAbs001 }, %)',
|
||||
ang: ang + 180
|
||||
ang: ang + 180,
|
||||
})
|
||||
|
||||
const angledLineThatIntersects = await u.getBoundingBox(
|
||||
|
||||
Reference in New Issue
Block a user