Lint
This commit is contained in:
		@ -850,159 +850,157 @@ openSketch = startSketchOn('XY')
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  test.fixme(`Shift-click to select and deselect sketch segments`, async ({
 | 
			
		||||
    page,
 | 
			
		||||
    homePage,
 | 
			
		||||
    scene,
 | 
			
		||||
    editor,
 | 
			
		||||
  }) => {
 | 
			
		||||
    // Locators
 | 
			
		||||
    const firstPointLocation = { x: 200, y: 100 }
 | 
			
		||||
    const secondPointLocation = { x: 800, y: 100 }
 | 
			
		||||
    const thirdPointLocation = { x: 800, y: 400 }
 | 
			
		||||
    const fristSegmentLocation = { x: 750, y: 100 }
 | 
			
		||||
    const secondSegmentLocation = { x: 800, y: 150 }
 | 
			
		||||
    const planeLocation = { x: 700, y: 200 }
 | 
			
		||||
  test.fixme(
 | 
			
		||||
    `Shift-click to select and deselect sketch segments`,
 | 
			
		||||
    async ({ page, homePage, scene, editor }) => {
 | 
			
		||||
      // Locators
 | 
			
		||||
      const firstPointLocation = { x: 200, y: 100 }
 | 
			
		||||
      const secondPointLocation = { x: 800, y: 100 }
 | 
			
		||||
      const thirdPointLocation = { x: 800, y: 400 }
 | 
			
		||||
      const fristSegmentLocation = { x: 750, y: 100 }
 | 
			
		||||
      const secondSegmentLocation = { x: 800, y: 150 }
 | 
			
		||||
      const planeLocation = { x: 700, y: 200 }
 | 
			
		||||
 | 
			
		||||
    // Click helpers
 | 
			
		||||
    const [clickFirstPoint] = scene.makeMouseHelpers(
 | 
			
		||||
      firstPointLocation.x,
 | 
			
		||||
      firstPointLocation.y
 | 
			
		||||
    )
 | 
			
		||||
    const [clickSecondPoint] = scene.makeMouseHelpers(
 | 
			
		||||
      secondPointLocation.x,
 | 
			
		||||
      secondPointLocation.y
 | 
			
		||||
    )
 | 
			
		||||
    const [clickThirdPoint] = scene.makeMouseHelpers(
 | 
			
		||||
      thirdPointLocation.x,
 | 
			
		||||
      thirdPointLocation.y
 | 
			
		||||
    )
 | 
			
		||||
    const [clickFirstSegment] = scene.makeMouseHelpers(
 | 
			
		||||
      fristSegmentLocation.x,
 | 
			
		||||
      fristSegmentLocation.y
 | 
			
		||||
    )
 | 
			
		||||
    const [clickSecondSegment] = scene.makeMouseHelpers(
 | 
			
		||||
      secondSegmentLocation.x,
 | 
			
		||||
      secondSegmentLocation.y
 | 
			
		||||
    )
 | 
			
		||||
    const [clickPlane] = scene.makeMouseHelpers(
 | 
			
		||||
      planeLocation.x,
 | 
			
		||||
      planeLocation.y
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    // Colors
 | 
			
		||||
    const edgeColorWhite: [number, number, number] = [220, 220, 220]
 | 
			
		||||
    const edgeColorBlue: [number, number, number] = [20, 20, 200]
 | 
			
		||||
    const backgroundColor: [number, number, number] = [30, 30, 30]
 | 
			
		||||
    const tolerance = 40
 | 
			
		||||
    const timeout = 150
 | 
			
		||||
 | 
			
		||||
    // Setup
 | 
			
		||||
    await test.step(`Initial test setup`, async () => {
 | 
			
		||||
      await page.setBodyDimensions({ width: 1000, height: 500 })
 | 
			
		||||
      await homePage.goToModelingScene()
 | 
			
		||||
 | 
			
		||||
      // Wait for the scene and stream to load
 | 
			
		||||
      await scene.expectPixelColor(
 | 
			
		||||
        backgroundColor,
 | 
			
		||||
        secondPointLocation,
 | 
			
		||||
        tolerance
 | 
			
		||||
      // Click helpers
 | 
			
		||||
      const [clickFirstPoint] = scene.makeMouseHelpers(
 | 
			
		||||
        firstPointLocation.x,
 | 
			
		||||
        firstPointLocation.y
 | 
			
		||||
      )
 | 
			
		||||
      const [clickSecondPoint] = scene.makeMouseHelpers(
 | 
			
		||||
        secondPointLocation.x,
 | 
			
		||||
        secondPointLocation.y
 | 
			
		||||
      )
 | 
			
		||||
      const [clickThirdPoint] = scene.makeMouseHelpers(
 | 
			
		||||
        thirdPointLocation.x,
 | 
			
		||||
        thirdPointLocation.y
 | 
			
		||||
      )
 | 
			
		||||
      const [clickFirstSegment] = scene.makeMouseHelpers(
 | 
			
		||||
        fristSegmentLocation.x,
 | 
			
		||||
        fristSegmentLocation.y
 | 
			
		||||
      )
 | 
			
		||||
      const [clickSecondSegment] = scene.makeMouseHelpers(
 | 
			
		||||
        secondSegmentLocation.x,
 | 
			
		||||
        secondSegmentLocation.y
 | 
			
		||||
      )
 | 
			
		||||
      const [clickPlane] = scene.makeMouseHelpers(
 | 
			
		||||
        planeLocation.x,
 | 
			
		||||
        planeLocation.y
 | 
			
		||||
      )
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await test.step('Select and deselect a single sketch segment', async () => {
 | 
			
		||||
      await test.step('Get into sketch mode', async () => {
 | 
			
		||||
        await editor.closePane()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await page.getByRole('button', { name: 'Start Sketch' }).click()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await clickPlane()
 | 
			
		||||
        await page.waitForTimeout(1000)
 | 
			
		||||
      })
 | 
			
		||||
      await test.step('Draw sketch', async () => {
 | 
			
		||||
        await clickFirstPoint()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await clickSecondPoint()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await clickThirdPoint()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
      })
 | 
			
		||||
      await test.step('Deselect line tool', async () => {
 | 
			
		||||
        const btnLine = page.getByTestId('line')
 | 
			
		||||
        const btnLineAriaPressed = await btnLine.getAttribute('aria-pressed')
 | 
			
		||||
        if (btnLineAriaPressed === 'true') {
 | 
			
		||||
          await btnLine.click()
 | 
			
		||||
        }
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
      })
 | 
			
		||||
      await test.step('Select the first segment', async () => {
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await clickFirstSegment()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
      // Colors
 | 
			
		||||
      const edgeColorWhite: [number, number, number] = [220, 220, 220]
 | 
			
		||||
      const edgeColorBlue: [number, number, number] = [20, 20, 200]
 | 
			
		||||
      const backgroundColor: [number, number, number] = [30, 30, 30]
 | 
			
		||||
      const tolerance = 40
 | 
			
		||||
      const timeout = 150
 | 
			
		||||
 | 
			
		||||
      // Setup
 | 
			
		||||
      await test.step(`Initial test setup`, async () => {
 | 
			
		||||
        await page.setBodyDimensions({ width: 1000, height: 500 })
 | 
			
		||||
        await homePage.goToModelingScene()
 | 
			
		||||
 | 
			
		||||
        // Wait for the scene and stream to load
 | 
			
		||||
        await scene.expectPixelColor(
 | 
			
		||||
          edgeColorBlue,
 | 
			
		||||
          fristSegmentLocation,
 | 
			
		||||
          tolerance
 | 
			
		||||
        )
 | 
			
		||||
        await scene.expectPixelColor(
 | 
			
		||||
          edgeColorWhite,
 | 
			
		||||
          secondSegmentLocation,
 | 
			
		||||
          backgroundColor,
 | 
			
		||||
          secondPointLocation,
 | 
			
		||||
          tolerance
 | 
			
		||||
        )
 | 
			
		||||
      })
 | 
			
		||||
      await test.step('Select the second segment (Shift-click)', async () => {
 | 
			
		||||
        await page.keyboard.down('Shift')
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await clickSecondSegment()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await page.keyboard.up('Shift')
 | 
			
		||||
        await scene.expectPixelColor(
 | 
			
		||||
          edgeColorBlue,
 | 
			
		||||
          fristSegmentLocation,
 | 
			
		||||
          tolerance
 | 
			
		||||
        )
 | 
			
		||||
        await scene.expectPixelColor(
 | 
			
		||||
          edgeColorBlue,
 | 
			
		||||
          secondSegmentLocation,
 | 
			
		||||
          tolerance
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
      await test.step('Select and deselect a single sketch segment', async () => {
 | 
			
		||||
        await test.step('Get into sketch mode', async () => {
 | 
			
		||||
          await editor.closePane()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await page.getByRole('button', { name: 'Start Sketch' }).click()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await clickPlane()
 | 
			
		||||
          await page.waitForTimeout(1000)
 | 
			
		||||
        })
 | 
			
		||||
        await test.step('Draw sketch', async () => {
 | 
			
		||||
          await clickFirstPoint()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await clickSecondPoint()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await clickThirdPoint()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
        })
 | 
			
		||||
        await test.step('Deselect line tool', async () => {
 | 
			
		||||
          const btnLine = page.getByTestId('line')
 | 
			
		||||
          const btnLineAriaPressed = await btnLine.getAttribute('aria-pressed')
 | 
			
		||||
          if (btnLineAriaPressed === 'true') {
 | 
			
		||||
            await btnLine.click()
 | 
			
		||||
          }
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
        })
 | 
			
		||||
        await test.step('Select the first segment', async () => {
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await clickFirstSegment()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await scene.expectPixelColor(
 | 
			
		||||
            edgeColorBlue,
 | 
			
		||||
            fristSegmentLocation,
 | 
			
		||||
            tolerance
 | 
			
		||||
          )
 | 
			
		||||
          await scene.expectPixelColor(
 | 
			
		||||
            edgeColorWhite,
 | 
			
		||||
            secondSegmentLocation,
 | 
			
		||||
            tolerance
 | 
			
		||||
          )
 | 
			
		||||
        })
 | 
			
		||||
        await test.step('Select the second segment (Shift-click)', async () => {
 | 
			
		||||
          await page.keyboard.down('Shift')
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await clickSecondSegment()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await page.keyboard.up('Shift')
 | 
			
		||||
          await scene.expectPixelColor(
 | 
			
		||||
            edgeColorBlue,
 | 
			
		||||
            fristSegmentLocation,
 | 
			
		||||
            tolerance
 | 
			
		||||
          )
 | 
			
		||||
          await scene.expectPixelColor(
 | 
			
		||||
            edgeColorBlue,
 | 
			
		||||
            secondSegmentLocation,
 | 
			
		||||
            tolerance
 | 
			
		||||
          )
 | 
			
		||||
        })
 | 
			
		||||
        await test.step('Deselect the first segment', async () => {
 | 
			
		||||
          await page.keyboard.down('Shift')
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await clickFirstSegment()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await page.keyboard.up('Shift')
 | 
			
		||||
          await scene.expectPixelColor(
 | 
			
		||||
            edgeColorWhite,
 | 
			
		||||
            fristSegmentLocation,
 | 
			
		||||
            tolerance
 | 
			
		||||
          )
 | 
			
		||||
          await scene.expectPixelColor(
 | 
			
		||||
            edgeColorBlue,
 | 
			
		||||
            secondSegmentLocation,
 | 
			
		||||
            tolerance
 | 
			
		||||
          )
 | 
			
		||||
        })
 | 
			
		||||
        await test.step('Deselect the second segment', async () => {
 | 
			
		||||
          await page.keyboard.down('Shift')
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await clickSecondSegment()
 | 
			
		||||
          await page.waitForTimeout(timeout)
 | 
			
		||||
          await page.keyboard.up('Shift')
 | 
			
		||||
          await scene.expectPixelColor(
 | 
			
		||||
            edgeColorWhite,
 | 
			
		||||
            fristSegmentLocation,
 | 
			
		||||
            tolerance
 | 
			
		||||
          )
 | 
			
		||||
          await scene.expectPixelColor(
 | 
			
		||||
            edgeColorWhite,
 | 
			
		||||
            secondSegmentLocation,
 | 
			
		||||
            tolerance
 | 
			
		||||
          )
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
      await test.step('Deselect the first segment', async () => {
 | 
			
		||||
        await page.keyboard.down('Shift')
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await clickFirstSegment()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await page.keyboard.up('Shift')
 | 
			
		||||
        await scene.expectPixelColor(
 | 
			
		||||
          edgeColorWhite,
 | 
			
		||||
          fristSegmentLocation,
 | 
			
		||||
          tolerance
 | 
			
		||||
        )
 | 
			
		||||
        await scene.expectPixelColor(
 | 
			
		||||
          edgeColorBlue,
 | 
			
		||||
          secondSegmentLocation,
 | 
			
		||||
          tolerance
 | 
			
		||||
        )
 | 
			
		||||
      })
 | 
			
		||||
      await test.step('Deselect the second segment', async () => {
 | 
			
		||||
        await page.keyboard.down('Shift')
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await clickSecondSegment()
 | 
			
		||||
        await page.waitForTimeout(timeout)
 | 
			
		||||
        await page.keyboard.up('Shift')
 | 
			
		||||
        await scene.expectPixelColor(
 | 
			
		||||
          edgeColorWhite,
 | 
			
		||||
          fristSegmentLocation,
 | 
			
		||||
          tolerance
 | 
			
		||||
        )
 | 
			
		||||
        await scene.expectPixelColor(
 | 
			
		||||
          edgeColorWhite,
 | 
			
		||||
          secondSegmentLocation,
 | 
			
		||||
          tolerance
 | 
			
		||||
        )
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
    }
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  test(`Offset plane point-and-click`, async ({
 | 
			
		||||
    context,
 | 
			
		||||
 | 
			
		||||
@ -452,19 +452,15 @@ profile003 = startProfileAt([40.16, -120.48], sketch006)
 | 
			
		||||
    await page.waitForTimeout(200)
 | 
			
		||||
    await expect(u.codeLocator).not.toContainText(codeToBeDeletedSnippet)
 | 
			
		||||
  })
 | 
			
		||||
  test.fixme('parent Solid should be select and deletable and uses custom planes to position children', async ({
 | 
			
		||||
    page,
 | 
			
		||||
    homePage,
 | 
			
		||||
    scene,
 | 
			
		||||
    cmdBar,
 | 
			
		||||
    editor,
 | 
			
		||||
  }) => {
 | 
			
		||||
    test.setTimeout(90_000)
 | 
			
		||||
    const u = await getUtils(page)
 | 
			
		||||
    await page.addInitScript(async () => {
 | 
			
		||||
      localStorage.setItem(
 | 
			
		||||
        'persistCode',
 | 
			
		||||
        `part001 = startSketchOn('XY')
 | 
			
		||||
  test.fixme(
 | 
			
		||||
    'parent Solid should be select and deletable and uses custom planes to position children',
 | 
			
		||||
    async ({ page, homePage, scene, cmdBar, editor }) => {
 | 
			
		||||
      test.setTimeout(90_000)
 | 
			
		||||
      const u = await getUtils(page)
 | 
			
		||||
      await page.addInitScript(async () => {
 | 
			
		||||
        localStorage.setItem(
 | 
			
		||||
          'persistCode',
 | 
			
		||||
          `part001 = startSketchOn('XY')
 | 
			
		||||
yo = startProfileAt([4.83, 12.56], part001)
 | 
			
		||||
  |> line(end = [15.1, 2.48])
 | 
			
		||||
  |> line(end = [3.15, -9.85], tag = $seg01)
 | 
			
		||||
@ -495,34 +491,35 @@ profile001 = startProfileAt([7.49, 9.96], sketch001)
 | 
			
		||||
  |> close()
 | 
			
		||||
 | 
			
		||||
`
 | 
			
		||||
        )
 | 
			
		||||
      }, KCL_DEFAULT_LENGTH)
 | 
			
		||||
      await page.setBodyDimensions({ width: 1000, height: 500 })
 | 
			
		||||
 | 
			
		||||
      await homePage.goToModelingScene()
 | 
			
		||||
      await scene.settled(cmdBar)
 | 
			
		||||
 | 
			
		||||
      const extrudeWall = { x: 575, y: 238 }
 | 
			
		||||
 | 
			
		||||
      // DELETE with selection on face of parent
 | 
			
		||||
      await page.mouse.click(extrudeWall.x, extrudeWall.y)
 | 
			
		||||
      await page.waitForTimeout(100)
 | 
			
		||||
      await expect(page.locator('.cm-activeLine')).toHaveText(
 | 
			
		||||
        '|> line(end = [-15.17, -4.1])'
 | 
			
		||||
      )
 | 
			
		||||
    }, KCL_DEFAULT_LENGTH)
 | 
			
		||||
    await page.setBodyDimensions({ width: 1000, height: 500 })
 | 
			
		||||
      await u.openAndClearDebugPanel()
 | 
			
		||||
      await page.keyboard.press('Delete')
 | 
			
		||||
      await u.expectCmdLog('[data-message-type="execution-done"]', 10_000)
 | 
			
		||||
      await page.waitForTimeout(200)
 | 
			
		||||
 | 
			
		||||
    await homePage.goToModelingScene()
 | 
			
		||||
    await scene.settled(cmdBar)
 | 
			
		||||
 | 
			
		||||
    const extrudeWall = { x: 575, y: 238 }
 | 
			
		||||
 | 
			
		||||
    // DELETE with selection on face of parent
 | 
			
		||||
    await page.mouse.click(extrudeWall.x, extrudeWall.y)
 | 
			
		||||
    await page.waitForTimeout(100)
 | 
			
		||||
    await expect(page.locator('.cm-activeLine')).toHaveText(
 | 
			
		||||
      '|> line(end = [-15.17, -4.1])'
 | 
			
		||||
    )
 | 
			
		||||
    await u.openAndClearDebugPanel()
 | 
			
		||||
    await page.keyboard.press('Delete')
 | 
			
		||||
    await u.expectCmdLog('[data-message-type="execution-done"]', 10_000)
 | 
			
		||||
    await page.waitForTimeout(200)
 | 
			
		||||
 | 
			
		||||
    await editor.expectEditor.not.toContain(`yoo = extrude(yo, length = 4)`, {
 | 
			
		||||
      shouldNormalise: true,
 | 
			
		||||
    })
 | 
			
		||||
    await editor.expectEditor.toContain(`startSketchOn({plane={origin`, {
 | 
			
		||||
      shouldNormalise: true,
 | 
			
		||||
    })
 | 
			
		||||
    await editor.snapshot()
 | 
			
		||||
  })
 | 
			
		||||
      await editor.expectEditor.not.toContain(`yoo = extrude(yo, length = 4)`, {
 | 
			
		||||
        shouldNormalise: true,
 | 
			
		||||
      })
 | 
			
		||||
      await editor.expectEditor.toContain(`startSketchOn({plane={origin`, {
 | 
			
		||||
        shouldNormalise: true,
 | 
			
		||||
      })
 | 
			
		||||
      await editor.snapshot()
 | 
			
		||||
    }
 | 
			
		||||
  )
 | 
			
		||||
  test('Hovering over 3d features highlights code, clicking puts the cursor in the right place and sends selection id to engine', async ({
 | 
			
		||||
    page,
 | 
			
		||||
    homePage,
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user