test the wasm side (#6726)
Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
		@ -3,23 +3,18 @@ import { expect, test } from '@e2e/playwright/zoo-test'
 | 
			
		||||
import * as fsp from 'fs/promises'
 | 
			
		||||
 | 
			
		||||
test.describe('Import UI tests', () => {
 | 
			
		||||
  test('shows toast when trying to sketch on imported face, and hovering over imported geometry should NOT highlight any code', async ({
 | 
			
		||||
    context,
 | 
			
		||||
    page,
 | 
			
		||||
    homePage,
 | 
			
		||||
    toolbar,
 | 
			
		||||
    scene,
 | 
			
		||||
    editor,
 | 
			
		||||
    cmdBar,
 | 
			
		||||
  }) => {
 | 
			
		||||
    await context.folderSetupFn(async (dir) => {
 | 
			
		||||
      const projectDir = path.join(dir, 'import-test')
 | 
			
		||||
      await fsp.mkdir(projectDir, { recursive: true })
 | 
			
		||||
  test(
 | 
			
		||||
    'shows toast when trying to sketch on imported face, and hovering over imported geometry should NOT highlight any code',
 | 
			
		||||
    { tag: ['@electron', '@macos', '@windows'] },
 | 
			
		||||
    async ({ context, page, homePage, toolbar, scene, editor, cmdBar }) => {
 | 
			
		||||
      await context.folderSetupFn(async (dir) => {
 | 
			
		||||
        const projectDir = path.join(dir, 'import-test')
 | 
			
		||||
        await fsp.mkdir(projectDir, { recursive: true })
 | 
			
		||||
 | 
			
		||||
      // Create the imported file
 | 
			
		||||
      await fsp.writeFile(
 | 
			
		||||
        path.join(projectDir, 'toBeImported.kcl'),
 | 
			
		||||
        `sketch001 = startSketchOn(XZ)
 | 
			
		||||
        // Create the imported file
 | 
			
		||||
        await fsp.writeFile(
 | 
			
		||||
          path.join(projectDir, 'toBeImported.kcl'),
 | 
			
		||||
          `sketch001 = startSketchOn(XZ)
 | 
			
		||||
profile001 = startProfile(sketch001, at = [281.54, 305.81])
 | 
			
		||||
  |> angledLine(angle = 0, length = 123.43, tag = $rectangleSegmentA001)
 | 
			
		||||
  |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 85.99)
 | 
			
		||||
@ -27,12 +22,12 @@ profile001 = startProfile(sketch001, at = [281.54, 305.81])
 | 
			
		||||
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
			
		||||
  |> close()
 | 
			
		||||
extrude(profile001, length = 100)`
 | 
			
		||||
      )
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
      // Create the main file that imports
 | 
			
		||||
      await fsp.writeFile(
 | 
			
		||||
        path.join(projectDir, 'main.kcl'),
 | 
			
		||||
        `import "toBeImported.kcl" as importedCube
 | 
			
		||||
        // Create the main file that imports
 | 
			
		||||
        await fsp.writeFile(
 | 
			
		||||
          path.join(projectDir, 'main.kcl'),
 | 
			
		||||
          `import "toBeImported.kcl" as importedCube
 | 
			
		||||
 | 
			
		||||
importedCube
 | 
			
		||||
 | 
			
		||||
@ -46,63 +41,66 @@ profile001 = startProfile(sketch001, at = [-134.53, -56.17])
 | 
			
		||||
extrude001 = extrude(profile001, length = 100)
 | 
			
		||||
sketch003 = startSketchOn(extrude001, face = seg02)
 | 
			
		||||
sketch002 = startSketchOn(extrude001, face = seg01)`
 | 
			
		||||
        )
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      await homePage.openProject('import-test')
 | 
			
		||||
      await scene.settled(cmdBar)
 | 
			
		||||
 | 
			
		||||
      await scene.moveCameraTo(
 | 
			
		||||
        {
 | 
			
		||||
          x: -114,
 | 
			
		||||
          y: -897,
 | 
			
		||||
          z: 475,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          x: -114,
 | 
			
		||||
          y: -51,
 | 
			
		||||
          z: 83,
 | 
			
		||||
        }
 | 
			
		||||
      )
 | 
			
		||||
      const [_, hoverOverNonImport] = scene.makeMouseHelpers(611, 364)
 | 
			
		||||
      const [importedFaceClick, hoverOverImported] = scene.makeMouseHelpers(
 | 
			
		||||
        940,
 | 
			
		||||
        150
 | 
			
		||||
      )
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await homePage.openProject('import-test')
 | 
			
		||||
    await scene.settled(cmdBar)
 | 
			
		||||
 | 
			
		||||
    await scene.moveCameraTo(
 | 
			
		||||
      {
 | 
			
		||||
        x: -114,
 | 
			
		||||
        y: -897,
 | 
			
		||||
        z: 475,
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        x: -114,
 | 
			
		||||
        y: -51,
 | 
			
		||||
        z: 83,
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    const [_, hoverOverNonImport] = scene.makeMouseHelpers(611, 364)
 | 
			
		||||
    const [importedFaceClick, hoverOverImported] = scene.makeMouseHelpers(
 | 
			
		||||
      940,
 | 
			
		||||
      150
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    await test.step('check code highlight works for code define in the file being edited', async () => {
 | 
			
		||||
      await hoverOverNonImport()
 | 
			
		||||
      await editor.expectState({
 | 
			
		||||
        highlightedCode: 'startProfile(sketch001,at = [-134.53,-56.17])',
 | 
			
		||||
        diagnostics: [],
 | 
			
		||||
        activeLines: ['import"toBeImported.kcl"asimportedCube'],
 | 
			
		||||
      await test.step('check code highlight works for code define in the file being edited', async () => {
 | 
			
		||||
        await hoverOverNonImport()
 | 
			
		||||
        await editor.expectState({
 | 
			
		||||
          highlightedCode: 'startProfile(sketch001,at = [-134.53,-56.17])',
 | 
			
		||||
          diagnostics: [],
 | 
			
		||||
          activeLines: ['import"toBeImported.kcl"asimportedCube'],
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await test.step('check code does nothing when geometry is defined in an import', async () => {
 | 
			
		||||
      await hoverOverImported()
 | 
			
		||||
      await editor.expectState({
 | 
			
		||||
        highlightedCode: '',
 | 
			
		||||
        diagnostics: [],
 | 
			
		||||
        activeLines: ['import"toBeImported.kcl"asimportedCube'],
 | 
			
		||||
      await test.step('check code does nothing when geometry is defined in an import', async () => {
 | 
			
		||||
        await hoverOverImported()
 | 
			
		||||
        await editor.expectState({
 | 
			
		||||
          highlightedCode: '',
 | 
			
		||||
          diagnostics: [],
 | 
			
		||||
          activeLines: ['import"toBeImported.kcl"asimportedCube'],
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await test.step('check the user is warned when sketching on a imported face', async () => {
 | 
			
		||||
      // Start sketch mode
 | 
			
		||||
      await toolbar.startSketchPlaneSelection()
 | 
			
		||||
      await test.step('check the user is warned when sketching on a imported face', async () => {
 | 
			
		||||
        // Start sketch mode
 | 
			
		||||
        await toolbar.startSketchPlaneSelection()
 | 
			
		||||
 | 
			
		||||
      // Click on a face from the imported model
 | 
			
		||||
      await importedFaceClick()
 | 
			
		||||
        // Click on a face from the imported model
 | 
			
		||||
        await importedFaceClick()
 | 
			
		||||
 | 
			
		||||
      // Verify toast appears with correct content
 | 
			
		||||
      await expect(page.getByText('This face is from an import')).toBeVisible()
 | 
			
		||||
      await expect(
 | 
			
		||||
        page.locator('.font-mono').getByText('toBeImported.kcl')
 | 
			
		||||
      ).toBeVisible()
 | 
			
		||||
      await expect(
 | 
			
		||||
        page.getByText('Please select this from the files pane to edit')
 | 
			
		||||
      ).toBeVisible()
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
        // Verify toast appears with correct content
 | 
			
		||||
        await expect(
 | 
			
		||||
          page.getByText('This face is from an import')
 | 
			
		||||
        ).toBeVisible()
 | 
			
		||||
        await expect(
 | 
			
		||||
          page.locator('.font-mono').getByText('toBeImported.kcl')
 | 
			
		||||
        ).toBeVisible()
 | 
			
		||||
        await expect(
 | 
			
		||||
          page.getByText('Please select this from the files pane to edit')
 | 
			
		||||
        ).toBeVisible()
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  )
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user