fix: fixing react race condition on parsing numeric literals in command bar on open
This commit is contained in:
		@ -121,6 +121,23 @@ export class CmdBarFixture {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Added data-testid to the command bar buttons
 | 
			
		||||
  // command-bar-continue are the buttons to go to the next step
 | 
			
		||||
  // does not include the submit which is the final button press
 | 
			
		||||
  // aka the right arrow button
 | 
			
		||||
  continue = async () => {
 | 
			
		||||
    const continueButton = this.page.getByTestId('command-bar-continue')
 | 
			
		||||
    await continueButton.click()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Added data-testid to the commad bar buttons
 | 
			
		||||
  // command-bar-submit is the button for the final step to submit
 | 
			
		||||
  // the command bar flow aka the checkmark button.
 | 
			
		||||
  submit = async () => {
 | 
			
		||||
    const submitButton = this.page.getByTestId('command-bar-submit')
 | 
			
		||||
    await submitButton.click()
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  openCmdBar = async (selectCmd?: 'promptToEdit') => {
 | 
			
		||||
    // TODO why does this button not work in electron tests?
 | 
			
		||||
    // await this.cmdBarOpenBtn.click()
 | 
			
		||||
 | 
			
		||||
@ -30,11 +30,13 @@ test('verify extruding circle works', async ({
 | 
			
		||||
    localStorage.setItem('persistCode', file)
 | 
			
		||||
  }, file)
 | 
			
		||||
  await homePage.goToModelingScene()
 | 
			
		||||
  await scene.waitForExecutionDone()
 | 
			
		||||
 | 
			
		||||
  const [clickCircle, moveToCircle] = scene.makeMouseHelpers(582, 217)
 | 
			
		||||
 | 
			
		||||
  await test.step('because there is sweepable geometry, verify extrude is enable when nothing is selected', async () => {
 | 
			
		||||
    await scene.clickNoWhere()
 | 
			
		||||
    // FIXME: Do not click, clicking removes the activeLines in future checks
 | 
			
		||||
    // await scene.clickNoWhere()
 | 
			
		||||
    await expect(toolbar.extrudeButton).toBeEnabled()
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -119,7 +119,7 @@
 | 
			
		||||
    "test:playwright:electron:local": "yarn tronb:package:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@snapshot'",
 | 
			
		||||
    "test:playwright:electron:windows:local": "yarn tronb:package:dev && set NODE_ENV='development' && playwright test --config=playwright.electron.config.ts --grep-invert=\"@skipWin|@snapshot\"",
 | 
			
		||||
    "test:playwright:electron:macos:local": "yarn tronb:package:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipMacos|@snapshot'",
 | 
			
		||||
    "test:playwright:electron:ubuntu:local": "yarn tronb:package:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot'",
 | 
			
		||||
    "test:playwright:electron:ubuntu:local": "yarn tronb:vite:dev && NODE_ENV=development playwright test --config=playwright.electron.config.ts --grep-invert='@skipLinux|@snapshot'",
 | 
			
		||||
    "test:unit:local": "yarn simpleserver:bg && yarn test:unit; kill-port 3000",
 | 
			
		||||
    "test:unit:kcl-samples:local": "yarn simpleserver:bg && yarn test:unit:kcl-samples; kill-port 3000"
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@ -195,6 +195,7 @@ function ReviewingButton() {
 | 
			
		||||
      type="submit"
 | 
			
		||||
      form="review-form"
 | 
			
		||||
      className="w-fit !p-0 rounded-sm hover:shadow"
 | 
			
		||||
      data-testid="command-bar-submit"
 | 
			
		||||
      iconStart={{
 | 
			
		||||
        icon: 'checkmark',
 | 
			
		||||
        bgClassName: 'p-1 rounded-sm !bg-primary hover:brightness-110',
 | 
			
		||||
@ -213,6 +214,7 @@ function GatheringArgsButton() {
 | 
			
		||||
      type="submit"
 | 
			
		||||
      form="arg-form"
 | 
			
		||||
      className="w-fit !p-0 rounded-sm hover:shadow"
 | 
			
		||||
      data-testid="command-bar-continue"
 | 
			
		||||
      iconStart={{
 | 
			
		||||
        icon: 'arrowRight',
 | 
			
		||||
        bgClassName: 'p-1 rounded-sm !bg-primary hover:brightness-110',
 | 
			
		||||
 | 
			
		||||
@ -97,6 +97,7 @@ function CommandBarKclInput({
 | 
			
		||||
    value,
 | 
			
		||||
    initialVariableName,
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  const varMentionData: Completion[] = prevVariables.map((v) => ({
 | 
			
		||||
    label: v.key,
 | 
			
		||||
    detail: String(roundOff(v.value as number)),
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,16 @@ export function useCalculateKclExpression({
 | 
			
		||||
    bodyPath: [],
 | 
			
		||||
  })
 | 
			
		||||
  const [valueNode, setValueNode] = useState<Expr | null>(null)
 | 
			
		||||
  const [calcResult, setCalcResult] = useState('NAN')
 | 
			
		||||
  // If we pass in numeric literals, we should instantly parse them, they have nothing to do with application memory
 | 
			
		||||
  const _code_value = `const __result__ = ${value}`
 | 
			
		||||
  const codeValueParseResult = parse(_code_value)
 | 
			
		||||
  let isValueParsable = true
 | 
			
		||||
  if (err(codeValueParseResult) || !resultIsOk(codeValueParseResult)) {
 | 
			
		||||
    isValueParsable = false
 | 
			
		||||
  }
 | 
			
		||||
  const initialCalcResult: number | string =
 | 
			
		||||
    isNaN(Number(value)) || !isValueParsable ? 'NAN' : value
 | 
			
		||||
  const [calcResult, setCalcResult] = useState(initialCalcResult)
 | 
			
		||||
  const [newVariableName, setNewVariableName] = useState('')
 | 
			
		||||
  const [isNewVariableNameUnique, setIsNewVariableNameUnique] = useState(true)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user