Move all tests over to electron (#4484)
* Move all tests over to electron * Pass the correct param to playwright-electron.sh * Add shebang to script and add macos-14-large as a target * Get sketch-tests.spec.ts passing in electron * Try out 4 workers * Got testing-segment-overlays passing * Pass testing-selections.spec.ts * Go back to fix up sketch-tests test * Pass various.spec.ts, by far the hardest one * Pass can-sketch-on-all-planes... with ease * Pass command bar tests * fmt * Completely fix code mirror text navigating for tests * Pass debug pane tests * Pass desktop export tests * Pass editor tests * Pass file tree tests * Pass onboarding tests * Corrected a fixme in file-tree.spec! * Painfully fix hardcoded coordinates in point-click.spec * Pass machine.spec tests * Pass projects, fought hard with filechooser * Pass regresion-tests.spec tests * Pass network and connection tests * Pass camera-movement.spec tests * Extreme time eaten by gizmo test fixes. All passing now. * Merge main (tests changed x_x) and pass all constraints.spec tests (pain) * Pass another painful spec suite: testing-settings * Pass perspective-toggle, interesting note * Pass samples loading tests * Pass app header tests * Pass text-to-cad tests * Pass segment-overlays (minor ache) and ability to switch to web if needed :) * Fix a ton of syntax changes and deflake 2 more tests (pain) * Correct all tsc errors * Remove to-electron script * Add an f-ton of shit because playwright doesnt want S P R E A D * Try CI again * Stop snapshots of exports (already test in e2e) * Fix flake in double click editor * Hopefully help CI flake * Fixmes, fixmes everywhere * One more fixme to settings * Skip another code pane flake * Port jess's projects.spec tests * fixup * Reuse electron window; difficult task * Rebased and refixed * Remove duplicate cases * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest-8-cores) * Reduce the workers to something CI can handle * Lower it further, we need to think about the others * Update package.json Co-authored-by: Pierre Jacquier <pierrejacquier39@gmail.com> * Update package.json Co-authored-by: Pierre Jacquier <pierrejacquier39@gmail.com> * Fix the last tests and tsc errors * Timeout to 120 and windows-2022-16core * Fix windows runner detection, enable concurrency temporarily * Hopefully this time fix windows runner detection * Comment out Vector, add back removed camera test code * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: macos-14-large) * A snapshot a day keeps the bugs away! 📷🐛 (OS: macos-14-large) * Fix camera tests again * Massively deflake a whole class of tests * A snapshot a day keeps the bugs away! 📷🐛 (OS: macos-14-large) * A snapshot a day keeps the bugs away! 📷🐛 (OS: macos-14-large) * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest-8-cores) * Try new CI and fix small onboarding test * Derp * No github tuning * Try mac * Add back all the OS * Lord, hallow be thy name * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest-8-cores) * One last try with window-16-cores * Trigger CI * Try AWS Windows runner * Passing on windows locally with a few skips * Skip more win tests, add back all three oses * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-16-cores) * Add two more fixmes * 2 more fixmes * skip segment overlays on win32 * Another fixme * Trigger CI * Trigger CI * Quick clean up * Move all tests over to electron * Pass the correct param to playwright-electron.sh * Add shebang to script and add macos-14-large as a target * Get sketch-tests.spec.ts passing in electron * Try out 4 workers * Got testing-segment-overlays passing * Pass testing-selections.spec.ts * Go back to fix up sketch-tests test * Pass various.spec.ts, by far the hardest one * Pass can-sketch-on-all-planes... with ease * Pass command bar tests * fmt * Completely fix code mirror text navigating for tests * Pass debug pane tests * Pass desktop export tests * Pass editor tests * Pass file tree tests * Pass onboarding tests * Corrected a fixme in file-tree.spec! * Painfully fix hardcoded coordinates in point-click.spec * Pass machine.spec tests * Pass projects, fought hard with filechooser * Pass regresion-tests.spec tests * Pass network and connection tests * Pass camera-movement.spec tests * Extreme time eaten by gizmo test fixes. All passing now. * Merge main (tests changed x_x) and pass all constraints.spec tests (pain) * Pass another painful spec suite: testing-settings * Pass perspective-toggle, interesting note * Pass samples loading tests * Pass app header tests * Pass text-to-cad tests * Pass segment-overlays (minor ache) and ability to switch to web if needed :) * Fix a ton of syntax changes and deflake 2 more tests (pain) * Correct all tsc errors * Remove to-electron script * Add an f-ton of shit because playwright doesnt want S P R E A D * Try CI again * Stop snapshots of exports (already test in e2e) * Fix flake in double click editor * Hopefully help CI flake * Fixmes, fixmes everywhere * One more fixme to settings * Skip another code pane flake * Port jess's projects.spec tests * fixup * Reuse electron window; difficult task * Rebased and refixed * Remove duplicate cases * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest-8-cores) * Reduce the workers to something CI can handle * Lower it further, we need to think about the others * Update package.json Co-authored-by: Pierre Jacquier <pierrejacquier39@gmail.com> * Update package.json Co-authored-by: Pierre Jacquier <pierrejacquier39@gmail.com> * Fix the last tests and tsc errors * Timeout to 120 and windows-2022-16core * Fix windows runner detection, enable concurrency temporarily * Hopefully this time fix windows runner detection * Comment out Vector, add back removed camera test code * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: macos-14-large) * A snapshot a day keeps the bugs away! 📷🐛 (OS: macos-14-large) * Fix camera tests again * Massively deflake a whole class of tests * A snapshot a day keeps the bugs away! 📷🐛 (OS: macos-14-large) * A snapshot a day keeps the bugs away! 📷🐛 (OS: macos-14-large) * Try new CI and fix small onboarding test * Derp * No github tuning * Try mac * Add back all the OS * Lord, hallow be thy name * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest-8-cores) * Try AWS Windows runner * Passing on windows locally with a few skips * Trigger CI * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * fmt, tsc, lint * Enable two fixmes again * Fix lint, codespell, fmt * Fix lint * Don't run e2e on draft, add back concurrency, clean up * One last windows skip --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Pierre Jacquier <pierrejacquier39@gmail.com> Co-authored-by: Pierre Jacquier <pierre@zoo.dev>
This commit is contained in:
		@ -1,23 +1,20 @@
 | 
			
		||||
import { test, expect } from '@playwright/test'
 | 
			
		||||
import { test, expect } from './zoo-test'
 | 
			
		||||
import { EngineCommand } from 'lang/std/artifactGraph'
 | 
			
		||||
import { uuidv4 } from 'lib/utils'
 | 
			
		||||
import { getUtils, setup, tearDown } from './test-utils'
 | 
			
		||||
 | 
			
		||||
test.beforeEach(async ({ context, page }, testInfo) => {
 | 
			
		||||
  await setup(context, page, testInfo)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test.afterEach(async ({ page }, testInfo) => {
 | 
			
		||||
  await tearDown(page, testInfo)
 | 
			
		||||
})
 | 
			
		||||
import { getUtils } from './test-utils'
 | 
			
		||||
 | 
			
		||||
test.describe('Testing Camera Movement', () => {
 | 
			
		||||
  test('Can move camera reliably', async ({ page, context }) => {
 | 
			
		||||
    test.skip(process.platform === 'darwin', 'Can move camera reliably')
 | 
			
		||||
  test('Can move camera reliably', async ({ page, context, homePage }) => {
 | 
			
		||||
    // TODO: fix this test on windows too after the electron migration
 | 
			
		||||
    const winOrMac =
 | 
			
		||||
      process.platform === 'win32' || process.platform === 'darwin'
 | 
			
		||||
    // eslint-disable-next-line
 | 
			
		||||
    test.skip(winOrMac, 'Skip on windows')
 | 
			
		||||
    const u = await getUtils(page)
 | 
			
		||||
    await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
    await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
 | 
			
		||||
    await u.waitForAuthSkipAppStart()
 | 
			
		||||
    await homePage.goToModelingScene()
 | 
			
		||||
    await u.waitForPageLoad()
 | 
			
		||||
    await u.openAndClearDebugPanel()
 | 
			
		||||
    await u.closeKclCodePanel()
 | 
			
		||||
 | 
			
		||||
@ -181,170 +178,177 @@ test.describe('Testing Camera Movement', () => {
 | 
			
		||||
    }, [0, -85, -85])
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  test('Zoom should be consistent when exiting or entering sketches', async ({
 | 
			
		||||
    page,
 | 
			
		||||
  }) => {
 | 
			
		||||
    // start new sketch pan and zoom before exiting, when exiting the sketch should stay in the same place
 | 
			
		||||
    // than zoom and pan outside of sketch mode and enter again and it should not change from where it is
 | 
			
		||||
    // than again for sketching
 | 
			
		||||
  // TODO: fix after electron migration is merged
 | 
			
		||||
  test.fixme(
 | 
			
		||||
    'Zoom should be consistent when exiting or entering sketches',
 | 
			
		||||
    async ({ page, homePage }) => {
 | 
			
		||||
      // start new sketch pan and zoom before exiting, when exiting the sketch should stay in the same place
 | 
			
		||||
      // than zoom and pan outside of sketch mode and enter again and it should not change from where it is
 | 
			
		||||
      // than again for sketching
 | 
			
		||||
 | 
			
		||||
    test.skip(process.platform !== 'darwin', 'Zoom should be consistent')
 | 
			
		||||
    const u = await getUtils(page)
 | 
			
		||||
    await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
      const u = await getUtils(page)
 | 
			
		||||
      await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
 | 
			
		||||
    await u.waitForAuthSkipAppStart()
 | 
			
		||||
    await u.openDebugPanel()
 | 
			
		||||
      await homePage.goToModelingScene()
 | 
			
		||||
      await u.waitForPageLoad()
 | 
			
		||||
      await u.openDebugPanel()
 | 
			
		||||
 | 
			
		||||
    await expect(
 | 
			
		||||
      page.getByRole('button', { name: 'Start Sketch' })
 | 
			
		||||
    ).not.toBeDisabled()
 | 
			
		||||
    await expect(
 | 
			
		||||
      page.getByRole('button', { name: 'Start Sketch' })
 | 
			
		||||
    ).toBeVisible()
 | 
			
		||||
      await expect(
 | 
			
		||||
        page.getByRole('button', { name: 'Start Sketch' })
 | 
			
		||||
      ).not.toBeDisabled()
 | 
			
		||||
      await expect(
 | 
			
		||||
        page.getByRole('button', { name: 'Start Sketch' })
 | 
			
		||||
      ).toBeVisible()
 | 
			
		||||
 | 
			
		||||
    // click on "Start Sketch" button
 | 
			
		||||
    await u.clearCommandLogs()
 | 
			
		||||
    await page.getByRole('button', { name: 'Start Sketch' }).click()
 | 
			
		||||
    await page.waitForTimeout(100)
 | 
			
		||||
 | 
			
		||||
    // select a plane
 | 
			
		||||
    await page.mouse.click(700, 325)
 | 
			
		||||
 | 
			
		||||
    let code = `sketch001 = startSketchOn('XY')`
 | 
			
		||||
    await expect(u.codeLocator).toHaveText(code)
 | 
			
		||||
    await u.closeDebugPanel()
 | 
			
		||||
 | 
			
		||||
    await page.waitForTimeout(500) // TODO detect animation ending, or disable animation
 | 
			
		||||
 | 
			
		||||
    // move the camera slightly
 | 
			
		||||
    await page.keyboard.down('Shift')
 | 
			
		||||
    await page.mouse.move(700, 300)
 | 
			
		||||
    await page.mouse.down({ button: 'right' })
 | 
			
		||||
    await page.mouse.move(800, 200)
 | 
			
		||||
    await page.mouse.up({ button: 'right' })
 | 
			
		||||
    await page.keyboard.up('Shift')
 | 
			
		||||
 | 
			
		||||
    let y = 350,
 | 
			
		||||
      x = 948
 | 
			
		||||
 | 
			
		||||
    await u.canvasLocator.click({ position: { x: 783, y } })
 | 
			
		||||
    code += `\n  |> startProfileAt([8.12, -12.98], %)`
 | 
			
		||||
    // await expect(u.codeLocator).toHaveText(code)
 | 
			
		||||
    await u.canvasLocator.click({ position: { x, y } })
 | 
			
		||||
    code += `\n  |> line([11.18, 0], %)`
 | 
			
		||||
    // await expect(u.codeLocator).toHaveText(code)
 | 
			
		||||
    await u.canvasLocator.click({ position: { x, y: 275 } })
 | 
			
		||||
    code += `\n  |> line([0, 6.99], %)`
 | 
			
		||||
    // await expect(u.codeLocator).toHaveText(code)
 | 
			
		||||
 | 
			
		||||
    // click the line button
 | 
			
		||||
    await page.getByRole('button', { name: 'line Line', exact: true }).click()
 | 
			
		||||
 | 
			
		||||
    const hoverOverNothing = async () => {
 | 
			
		||||
      // await u.canvasLocator.hover({position: {x: 700, y: 325}})
 | 
			
		||||
      await page.mouse.move(700, 325)
 | 
			
		||||
      // click on "Start Sketch" button
 | 
			
		||||
      await u.clearCommandLogs()
 | 
			
		||||
      await page.getByRole('button', { name: 'Start Sketch' }).click()
 | 
			
		||||
      await page.waitForTimeout(100)
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight')).not.toBeVisible({
 | 
			
		||||
 | 
			
		||||
      // select a plane
 | 
			
		||||
      await page.mouse.click(700, 325)
 | 
			
		||||
 | 
			
		||||
      let code = `sketch001 = startSketchOn('XY')`
 | 
			
		||||
      await expect(u.codeLocator).toHaveText(code)
 | 
			
		||||
      await u.closeDebugPanel()
 | 
			
		||||
 | 
			
		||||
      await page.waitForTimeout(500) // TODO detect animation ending, or disable animation
 | 
			
		||||
 | 
			
		||||
      // move the camera slightly
 | 
			
		||||
      await page.keyboard.down('Shift')
 | 
			
		||||
      await page.mouse.move(700, 300)
 | 
			
		||||
      await page.mouse.down({ button: 'right' })
 | 
			
		||||
      await page.mouse.move(800, 200)
 | 
			
		||||
      await page.mouse.up({ button: 'right' })
 | 
			
		||||
      await page.keyboard.up('Shift')
 | 
			
		||||
 | 
			
		||||
      let y = 350,
 | 
			
		||||
        x = 948
 | 
			
		||||
 | 
			
		||||
      await u.canvasLocator.click({ position: { x: 783, y } })
 | 
			
		||||
      code += `\n  |> startProfileAt([8.12, -12.98], %)`
 | 
			
		||||
      // await expect(u.codeLocator).toHaveText(code)
 | 
			
		||||
      await u.canvasLocator.click({ position: { x, y } })
 | 
			
		||||
      code += `\n  |> line([11.18, 0], %)`
 | 
			
		||||
      // await expect(u.codeLocator).toHaveText(code)
 | 
			
		||||
      await u.canvasLocator.click({ position: { x, y: 275 } })
 | 
			
		||||
      code += `\n  |> line([0, 6.99], %)`
 | 
			
		||||
      // await expect(u.codeLocator).toHaveText(code)
 | 
			
		||||
 | 
			
		||||
      // click the line button
 | 
			
		||||
      await page.getByRole('button', { name: 'line Line', exact: true }).click()
 | 
			
		||||
 | 
			
		||||
      const hoverOverNothing = async () => {
 | 
			
		||||
        // await u.canvasLocator.hover({position: {x: 700, y: 325}})
 | 
			
		||||
        await page.mouse.move(700, 325)
 | 
			
		||||
        await page.waitForTimeout(100)
 | 
			
		||||
        await expect(page.getByTestId('hover-highlight')).not.toBeVisible({
 | 
			
		||||
          timeout: 10_000,
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight')).not.toBeVisible()
 | 
			
		||||
 | 
			
		||||
      await page.waitForTimeout(200)
 | 
			
		||||
      // hover over horizontal line
 | 
			
		||||
      await u.canvasLocator.hover({ position: { x: 800, y } })
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
      await page.waitForTimeout(200)
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
      await page.waitForTimeout(200)
 | 
			
		||||
      // hover over vertical line
 | 
			
		||||
      await u.canvasLocator.hover({ position: { x, y: 325 } })
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
      // click exit sketch
 | 
			
		||||
      await page.getByRole('button', { name: 'Exit Sketch' }).click()
 | 
			
		||||
      await page.waitForTimeout(400)
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
      await page.waitForTimeout(200)
 | 
			
		||||
      // hover over horizontal line
 | 
			
		||||
      await page.mouse.move(858, y, { steps: 5 })
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
      // hover over vertical line
 | 
			
		||||
      await page.mouse.move(x, 325)
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
      // hover over vertical line
 | 
			
		||||
      await page.mouse.move(857, y)
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
      // now click it
 | 
			
		||||
      await page.mouse.click(857, y)
 | 
			
		||||
 | 
			
		||||
      await expect(
 | 
			
		||||
        page.getByRole('button', { name: 'Edit Sketch' })
 | 
			
		||||
      ).toBeVisible()
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
      await page.getByRole('button', { name: 'Edit Sketch' }).click()
 | 
			
		||||
 | 
			
		||||
      await page.waitForTimeout(400)
 | 
			
		||||
 | 
			
		||||
      x = 975
 | 
			
		||||
      y = 468
 | 
			
		||||
 | 
			
		||||
      await page.waitForTimeout(100)
 | 
			
		||||
      await page.mouse.move(x, 419, { steps: 5 })
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
      await page.mouse.move(855, y)
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
      await page.getByRole('button', { name: 'Exit Sketch' }).click()
 | 
			
		||||
      await page.waitForTimeout(200)
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
      await page.waitForTimeout(200)
 | 
			
		||||
 | 
			
		||||
      await page.mouse.move(x, 419)
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
      await page.mouse.move(855, y)
 | 
			
		||||
      await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
        timeout: 10_000,
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight')).not.toBeVisible()
 | 
			
		||||
 | 
			
		||||
    await page.waitForTimeout(200)
 | 
			
		||||
    // hover over horizontal line
 | 
			
		||||
    await u.canvasLocator.hover({ position: { x: 800, y } })
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
    await page.waitForTimeout(200)
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
    await page.waitForTimeout(200)
 | 
			
		||||
    // hover over vertical line
 | 
			
		||||
    await u.canvasLocator.hover({ position: { x, y: 325 } })
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
    // click exit sketch
 | 
			
		||||
    await page.getByRole('button', { name: 'Exit Sketch' }).click()
 | 
			
		||||
    await page.waitForTimeout(400)
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
    await page.waitForTimeout(200)
 | 
			
		||||
    // hover over horizontal line
 | 
			
		||||
    await page.mouse.move(858, y, { steps: 5 })
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
    // hover over vertical line
 | 
			
		||||
    await page.mouse.move(x, 325)
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
    // hover over vertical line
 | 
			
		||||
    await page.mouse.move(857, y)
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
    // now click it
 | 
			
		||||
    await page.mouse.click(857, y)
 | 
			
		||||
 | 
			
		||||
    await expect(
 | 
			
		||||
      page.getByRole('button', { name: 'Edit Sketch' })
 | 
			
		||||
    ).toBeVisible()
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
    await page.getByRole('button', { name: 'Edit Sketch' }).click()
 | 
			
		||||
 | 
			
		||||
    await page.waitForTimeout(400)
 | 
			
		||||
 | 
			
		||||
    x = 975
 | 
			
		||||
    y = 468
 | 
			
		||||
 | 
			
		||||
    await page.waitForTimeout(100)
 | 
			
		||||
    await page.mouse.move(x, 419, { steps: 5 })
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
    await page.mouse.move(855, y)
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
    await page.getByRole('button', { name: 'Exit Sketch' }).click()
 | 
			
		||||
    await page.waitForTimeout(200)
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
    await page.waitForTimeout(200)
 | 
			
		||||
 | 
			
		||||
    await page.mouse.move(x, 419)
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await hoverOverNothing()
 | 
			
		||||
 | 
			
		||||
    await page.mouse.move(855, y)
 | 
			
		||||
    await expect(page.getByTestId('hover-highlight').first()).toBeVisible({
 | 
			
		||||
      timeout: 10_000,
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  test(`Zoom by scroll should not fire while orbiting`, async ({ page }) => {
 | 
			
		||||
  test(`Zoom by scroll should not fire while orbiting`, async ({
 | 
			
		||||
    homePage,
 | 
			
		||||
    page,
 | 
			
		||||
  }) => {
 | 
			
		||||
    // TODO: fix this test on windows after the electron migration
 | 
			
		||||
    test.skip(process.platform === 'win32', 'Skip on windows')
 | 
			
		||||
    /**
 | 
			
		||||
     * Currently we only allow zooming by scroll when no other camera movement is happening,
 | 
			
		||||
     * set within cameraMouseDragGuards in cameraControls.ts,
 | 
			
		||||
@ -383,7 +387,8 @@ test.describe('Testing Camera Movement', () => {
 | 
			
		||||
    const expectedOrbitCamZPosition = 64.0
 | 
			
		||||
 | 
			
		||||
    await test.step(`Test setup`, async () => {
 | 
			
		||||
      await u.waitForAuthSkipAppStart()
 | 
			
		||||
      await homePage.goToModelingScene()
 | 
			
		||||
      await u.waitForPageLoad()
 | 
			
		||||
      await u.closeKclCodePanel()
 | 
			
		||||
      // This test requires the mouse controls to be set to Solidworks
 | 
			
		||||
      await u.openDebugPanel()
 | 
			
		||||
@ -480,9 +485,14 @@ test.describe('Testing Camera Movement', () => {
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  test('Right-click opens context menu when not dragged', async ({ page }) => {
 | 
			
		||||
  test('Right-click opens context menu when not dragged', async ({
 | 
			
		||||
    homePage,
 | 
			
		||||
    page,
 | 
			
		||||
  }) => {
 | 
			
		||||
    const u = await getUtils(page)
 | 
			
		||||
    await u.waitForAuthSkipAppStart()
 | 
			
		||||
 | 
			
		||||
    await homePage.goToModelingScene()
 | 
			
		||||
    await u.waitForPageLoad()
 | 
			
		||||
 | 
			
		||||
    await test.step(`The menu should not show if we drag the mouse`, async () => {
 | 
			
		||||
      await page.mouse.move(900, 200)
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user