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,19 +1,10 @@
 | 
			
		||||
import { test, expect } from '@playwright/test'
 | 
			
		||||
import { test, expect } from './zoo-test'
 | 
			
		||||
 | 
			
		||||
import { doExport, getUtils, makeTemplate, setup, tearDown } from './test-utils'
 | 
			
		||||
import { doExport, getUtils, makeTemplate } from './test-utils'
 | 
			
		||||
 | 
			
		||||
test.beforeEach(async ({ context, page }, testInfo) => {
 | 
			
		||||
  await setup(context, page, testInfo)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test.afterEach(async ({ page }, testInfo) => {
 | 
			
		||||
  await tearDown(page, testInfo)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test('Units menu', async ({ page }) => {
 | 
			
		||||
  const u = await getUtils(page)
 | 
			
		||||
  await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
  await u.waitForAuthSkipAppStart()
 | 
			
		||||
test.fixme('Units menu', async ({ page, homePage }) => {
 | 
			
		||||
  await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
  await homePage.goToModelingScene()
 | 
			
		||||
 | 
			
		||||
  const unitsMenuButton = page.getByRole('button', {
 | 
			
		||||
    name: 'Current Units',
 | 
			
		||||
@ -41,7 +32,7 @@ test('Units menu', async ({ page }) => {
 | 
			
		||||
  await expect(unitsMenuButton).toContainText('mm')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test('Successful export shows a success toast', async ({ page }) => {
 | 
			
		||||
test('Successful export shows a success toast', async ({ page, homePage }) => {
 | 
			
		||||
  // FYI this test doesn't work with only engine running locally
 | 
			
		||||
  // And you will need to have the KittyCAD CLI installed
 | 
			
		||||
  const u = await getUtils(page)
 | 
			
		||||
@ -57,41 +48,41 @@ totalHeightHalf = 2
 | 
			
		||||
armThick = 0.5
 | 
			
		||||
totalLen = 9.5
 | 
			
		||||
part001 = startSketchOn('-XZ')
 | 
			
		||||
  |> startProfileAt([0, 0], %)
 | 
			
		||||
  |> yLine(baseHeight, %)
 | 
			
		||||
  |> xLine(baseLen, %)
 | 
			
		||||
  |> angledLineToY({
 | 
			
		||||
        angle: topAng,
 | 
			
		||||
        to: totalHeightHalf,
 | 
			
		||||
      }, %, $seg04)
 | 
			
		||||
  |> xLineTo(totalLen, %, $seg03)
 | 
			
		||||
  |> yLine(-armThick, %, $seg01)
 | 
			
		||||
  |> angledLineThatIntersects({
 | 
			
		||||
        angle: HALF_TURN,
 | 
			
		||||
        offset: -armThick,
 | 
			
		||||
        intersectTag: seg04
 | 
			
		||||
      }, %)
 | 
			
		||||
  |> angledLineToY([segAng(seg04) + 180, ZERO], %)
 | 
			
		||||
  |> angledLineToY({
 | 
			
		||||
        angle: -bottomAng,
 | 
			
		||||
        to: -totalHeightHalf - armThick,
 | 
			
		||||
      }, %, $seg02)
 | 
			
		||||
  |> xLineTo(segEndX(seg03) + 0, %)
 | 
			
		||||
  |> yLine(-segLen(seg01), %)
 | 
			
		||||
  |> angledLineThatIntersects({
 | 
			
		||||
        angle: HALF_TURN,
 | 
			
		||||
        offset: -armThick,
 | 
			
		||||
        intersectTag: seg02
 | 
			
		||||
      }, %)
 | 
			
		||||
  |> angledLineToY([segAng(seg02) + 180, -baseHeight], %)
 | 
			
		||||
  |> xLineTo(ZERO, %)
 | 
			
		||||
  |> close(%)
 | 
			
		||||
  |> extrude(4, %)`
 | 
			
		||||
|> startProfileAt([0, 0], %)
 | 
			
		||||
|> yLine(baseHeight, %)
 | 
			
		||||
|> xLine(baseLen, %)
 | 
			
		||||
|> angledLineToY({
 | 
			
		||||
      angle = topAng,
 | 
			
		||||
      to = totalHeightHalf,
 | 
			
		||||
    }, %, $seg04)
 | 
			
		||||
|> xLineTo(totalLen, %, $seg03)
 | 
			
		||||
|> yLine(-armThick, %, $seg01)
 | 
			
		||||
|> angledLineThatIntersects({
 | 
			
		||||
      angle = HALF_TURN,
 | 
			
		||||
      offset = -armThick,
 | 
			
		||||
      intersectTag = seg04
 | 
			
		||||
    }, %)
 | 
			
		||||
|> angledLineToY([segAng(seg04) + 180, ZERO], %)
 | 
			
		||||
|> angledLineToY({
 | 
			
		||||
      angle = -bottomAng,
 | 
			
		||||
      to = -totalHeightHalf - armThick,
 | 
			
		||||
    }, %, $seg02)
 | 
			
		||||
|> xLineTo(segEndX(seg03) + 0, %)
 | 
			
		||||
|> yLine(-segLen(seg01), %)
 | 
			
		||||
|> angledLineThatIntersects({
 | 
			
		||||
      angle = HALF_TURN,
 | 
			
		||||
      offset = -armThick,
 | 
			
		||||
      intersectTag = seg02
 | 
			
		||||
    }, %)
 | 
			
		||||
|> angledLineToY([segAng(seg02) + 180, -baseHeight], %)
 | 
			
		||||
|> xLineTo(ZERO, %)
 | 
			
		||||
|> close(%)
 | 
			
		||||
|> extrude(4, %)`
 | 
			
		||||
    )
 | 
			
		||||
  })
 | 
			
		||||
  await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
  await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
 | 
			
		||||
  await u.waitForAuthSkipAppStart()
 | 
			
		||||
  await homePage.goToModelingScene()
 | 
			
		||||
  await u.openDebugPanel()
 | 
			
		||||
  await u.expectCmdLog('[data-message-type="execution-done"]')
 | 
			
		||||
  await u.waitForCmdReceive('extrude')
 | 
			
		||||
@ -106,25 +97,14 @@ part001 = startSketchOn('-XZ')
 | 
			
		||||
    },
 | 
			
		||||
    page
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  // This is the main thing we're testing,
 | 
			
		||||
  // We test the export functionality across all
 | 
			
		||||
  // file types in snapshot-tests.spec.ts
 | 
			
		||||
  await expect(page.getByText('Exported successfully')).toBeVisible()
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test('Paste should not work unless an input is focused', async ({
 | 
			
		||||
  page,
 | 
			
		||||
  browserName,
 | 
			
		||||
  homePage,
 | 
			
		||||
}) => {
 | 
			
		||||
  // To run this test locally, uncomment Firefox in playwright.config.ts
 | 
			
		||||
  test.skip(
 | 
			
		||||
    browserName !== 'firefox',
 | 
			
		||||
    "This bug is really Firefox-only, which we don't run in CI."
 | 
			
		||||
  )
 | 
			
		||||
  const u = await getUtils(page)
 | 
			
		||||
  await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
  await u.waitForAuthSkipAppStart()
 | 
			
		||||
  await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
  await homePage.goToModelingScene()
 | 
			
		||||
  await page
 | 
			
		||||
    .getByRole('button', { name: 'Start Sketch' })
 | 
			
		||||
    .waitFor({ state: 'visible' })
 | 
			
		||||
@ -164,12 +144,12 @@ test('Paste should not work unless an input is focused', async ({
 | 
			
		||||
 | 
			
		||||
test('Keyboard shortcuts can be viewed through the help menu', async ({
 | 
			
		||||
  page,
 | 
			
		||||
  homePage,
 | 
			
		||||
}) => {
 | 
			
		||||
  const u = await getUtils(page)
 | 
			
		||||
  await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
  await u.waitForAuthSkipAppStart()
 | 
			
		||||
  await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
  await homePage.goToModelingScene()
 | 
			
		||||
 | 
			
		||||
  await page.waitForURL('**/file/**', { waitUntil: 'domcontentloaded' })
 | 
			
		||||
  await page.waitForURL('file:///**', { waitUntil: 'domcontentloaded' })
 | 
			
		||||
  await page
 | 
			
		||||
    .getByRole('button', { name: 'Start Sketch' })
 | 
			
		||||
    .waitFor({ state: 'visible' })
 | 
			
		||||
@ -181,7 +161,7 @@ test('Keyboard shortcuts can be viewed through the help menu', async ({
 | 
			
		||||
  await page.getByRole('button', { name: 'Keyboard Shortcuts' }).click()
 | 
			
		||||
 | 
			
		||||
  // Verify the URL and that you can see a list of shortcuts
 | 
			
		||||
  await expect(page.url()).toContain('?tab=keybindings')
 | 
			
		||||
  await expect.poll(() => page.url()).toContain('?tab=keybindings')
 | 
			
		||||
  await expect(
 | 
			
		||||
    page.getByRole('heading', { name: 'Enter Sketch Mode' })
 | 
			
		||||
  ).toBeAttached()
 | 
			
		||||
@ -189,12 +169,13 @@ test('Keyboard shortcuts can be viewed through the help menu', async ({
 | 
			
		||||
 | 
			
		||||
test('First escape in tool pops you out of tool, second exits sketch mode', async ({
 | 
			
		||||
  page,
 | 
			
		||||
  homePage,
 | 
			
		||||
}) => {
 | 
			
		||||
  // Wait for the app to be ready for use
 | 
			
		||||
  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.openDebugPanel()
 | 
			
		||||
  await u.expectCmdLog('[data-message-type="execution-done"]')
 | 
			
		||||
  await u.closeDebugPanel()
 | 
			
		||||
@ -258,7 +239,7 @@ test('First escape in tool pops you out of tool, second exits sketch mode', asyn
 | 
			
		||||
 | 
			
		||||
test.fixme(
 | 
			
		||||
  'Basic default modeling and sketch hotkeys work',
 | 
			
		||||
  async ({ page }) => {
 | 
			
		||||
  async ({ page, homePage }) => {
 | 
			
		||||
    const u = await getUtils(page)
 | 
			
		||||
 | 
			
		||||
    // This test can run long if it takes a little too long to load
 | 
			
		||||
@ -285,8 +266,8 @@ test.fixme(
 | 
			
		||||
          })
 | 
			
		||||
        )
 | 
			
		||||
      })
 | 
			
		||||
      await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
      await u.waitForAuthSkipAppStart()
 | 
			
		||||
      await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
      await homePage.goToModelingScene()
 | 
			
		||||
      await u.openDebugPanel()
 | 
			
		||||
      await u.expectCmdLog('[data-message-type="execution-done"]')
 | 
			
		||||
      await u.closeDebugPanel()
 | 
			
		||||
@ -437,10 +418,11 @@ test.fixme(
 | 
			
		||||
  }
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
test('Delete key does not navigate back', async ({ page }) => {
 | 
			
		||||
  await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
  await page.goto('/')
 | 
			
		||||
  await page.waitForURL('**/file/**', { waitUntil: 'domcontentloaded' })
 | 
			
		||||
test('Delete key does not navigate back', async ({ page, homePage }) => {
 | 
			
		||||
  await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
  await homePage.goToModelingScene()
 | 
			
		||||
 | 
			
		||||
  await page.waitForURL('file:///**', { waitUntil: 'domcontentloaded' })
 | 
			
		||||
 | 
			
		||||
  const settingsButton = page.getByRole('link', {
 | 
			
		||||
    name: 'Settings',
 | 
			
		||||
@ -449,45 +431,45 @@ test('Delete key does not navigate back', async ({ page }) => {
 | 
			
		||||
  const settingsCloseButton = page.getByTestId('settings-close-button')
 | 
			
		||||
 | 
			
		||||
  await settingsButton.click()
 | 
			
		||||
  await expect(page.url()).toContain('/settings')
 | 
			
		||||
  await expect.poll(() => page.url()).toContain('/settings')
 | 
			
		||||
 | 
			
		||||
  // Make sure that delete doesn't go back from settings
 | 
			
		||||
  await page.keyboard.press('Delete')
 | 
			
		||||
  await expect(page.url()).toContain('/settings')
 | 
			
		||||
  await expect.poll(() => page.url()).toContain('/settings')
 | 
			
		||||
 | 
			
		||||
  // Now close the settings and try delete again,
 | 
			
		||||
  // make sure it doesn't go back to settings
 | 
			
		||||
  await settingsCloseButton.click()
 | 
			
		||||
  await page.keyboard.press('Delete')
 | 
			
		||||
  await expect(page.url()).not.toContain('/settings')
 | 
			
		||||
  await expect.poll(() => page.url()).not.toContain('/settings')
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
test('Sketch on face', async ({ page }) => {
 | 
			
		||||
test('Sketch on face', async ({ page, homePage }) => {
 | 
			
		||||
  test.setTimeout(90_000)
 | 
			
		||||
  const u = await getUtils(page)
 | 
			
		||||
  await page.addInitScript(async () => {
 | 
			
		||||
    localStorage.setItem(
 | 
			
		||||
      'persistCode',
 | 
			
		||||
      `sketch001 = startSketchOn('XZ')
 | 
			
		||||
  |> startProfileAt([3.29, 7.86], %)
 | 
			
		||||
  |> line([2.48, 2.44], %)
 | 
			
		||||
  |> line([2.66, 1.17], %)
 | 
			
		||||
  |> line([3.75, 0.46], %)
 | 
			
		||||
  |> line([4.99, -0.46], %)
 | 
			
		||||
  |> line([3.3, -2.12], %)
 | 
			
		||||
  |> line([2.16, -3.33], %)
 | 
			
		||||
  |> line([0.85, -3.08], %)
 | 
			
		||||
  |> line([-0.18, -3.36], %)
 | 
			
		||||
  |> line([-3.86, -2.73], %)
 | 
			
		||||
  |> line([-17.67, 0.85], %)
 | 
			
		||||
  |> close(%)
 | 
			
		||||
  extrude001 = extrude(5 + 7, sketch001)`
 | 
			
		||||
|> startProfileAt([3.29, 7.86], %)
 | 
			
		||||
|> line([2.48, 2.44], %)
 | 
			
		||||
|> line([2.66, 1.17], %)
 | 
			
		||||
|> line([3.75, 0.46], %)
 | 
			
		||||
|> line([4.99, -0.46], %)
 | 
			
		||||
|> line([3.3, -2.12], %)
 | 
			
		||||
|> line([2.16, -3.33], %)
 | 
			
		||||
|> line([0.85, -3.08], %)
 | 
			
		||||
|> line([-0.18, -3.36], %)
 | 
			
		||||
|> line([-3.86, -2.73], %)
 | 
			
		||||
|> line([-17.67, 0.85], %)
 | 
			
		||||
|> close(%)
 | 
			
		||||
extrude001 = extrude(5 + 7, sketch001)`
 | 
			
		||||
    )
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
  await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
			
		||||
 | 
			
		||||
  await u.waitForAuthSkipAppStart()
 | 
			
		||||
  await homePage.goToModelingScene()
 | 
			
		||||
 | 
			
		||||
  // wait for execution done
 | 
			
		||||
  await u.openDebugPanel()
 | 
			
		||||
@ -541,7 +523,8 @@ test('Sketch on face', async ({ page }) => {
 | 
			
		||||
  |> line([2.45, -0.2], %)
 | 
			
		||||
  |> line([-2.6, -1.25], %)
 | 
			
		||||
  |> lineTo([profileStartX(%), profileStartY(%)], %)
 | 
			
		||||
  |> close(%)`)
 | 
			
		||||
  |> close(%)
 | 
			
		||||
`)
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  await u.openAndClearDebugPanel()
 | 
			
		||||
@ -556,7 +539,7 @@ test('Sketch on face', async ({ page }) => {
 | 
			
		||||
  await page.getByRole('button', { name: 'Edit Sketch' }).click()
 | 
			
		||||
  await page.waitForTimeout(400)
 | 
			
		||||
  await page.waitForTimeout(150)
 | 
			
		||||
  await page.setViewportSize({ width: 1200, height: 1200 })
 | 
			
		||||
  await page.setBodyDimensions({ width: 1200, height: 1200 })
 | 
			
		||||
  await u.openAndClearDebugPanel()
 | 
			
		||||
  await u.updateCamPosition([452, -152, 1166])
 | 
			
		||||
  await u.closeDebugPanel()
 | 
			
		||||
@ -574,11 +557,11 @@ test('Sketch on face', async ({ page }) => {
 | 
			
		||||
  previousCodeContent = await page.locator('.cm-content').innerText()
 | 
			
		||||
 | 
			
		||||
  const result = makeTemplate`sketch002 = startSketchOn(extrude001, seg01)
 | 
			
		||||
  |> startProfileAt([-12.83, 6.7], %)
 | 
			
		||||
  |> line([${[2.28, 2.35]}, -${0.07}], %)
 | 
			
		||||
  |> line([-3.05, -1.47], %)
 | 
			
		||||
  |> lineTo([profileStartX(%), profileStartY(%)], %)
 | 
			
		||||
  |> close(%)`
 | 
			
		||||
|> startProfileAt([-12.83, 6.7], %)
 | 
			
		||||
|> line([${[2.28, 2.35]}, -${0.07}], %)
 | 
			
		||||
|> line([-3.05, -1.47], %)
 | 
			
		||||
|> lineTo([profileStartX(%), profileStartY(%)], %)
 | 
			
		||||
|> close(%)`
 | 
			
		||||
 | 
			
		||||
  await expect(page.locator('.cm-content')).toHaveText(result.regExp)
 | 
			
		||||
 | 
			
		||||
@ -602,6 +585,6 @@ test('Sketch on face', async ({ page }) => {
 | 
			
		||||
  await page.getByRole('button', { name: 'checkmark Submit command' }).click()
 | 
			
		||||
 | 
			
		||||
  const result2 = result.genNext`
 | 
			
		||||
  const sketch002 = extrude(${[5, 5]} + 7, sketch002)`
 | 
			
		||||
const sketch002 = extrude(${[5, 5]} + 7, sketch002)`
 | 
			
		||||
  await expect(page.locator('.cm-content')).toHaveText(result2.regExp)
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user