Add pw tests for cap shell
This commit is contained in:
		@ -768,3 +768,90 @@ loftPointAndClickCases.forEach(({ shouldPreselect }) => {
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
const shellPointAndClickCases = [
 | 
			
		||||
  { shouldPreselect: true },
 | 
			
		||||
  { shouldPreselect: false },
 | 
			
		||||
]
 | 
			
		||||
shellPointAndClickCases.forEach(({ shouldPreselect }) => {
 | 
			
		||||
  test(`Shell point-and-click (preselected sketches: ${shouldPreselect})`, async ({
 | 
			
		||||
    app,
 | 
			
		||||
    page,
 | 
			
		||||
    scene,
 | 
			
		||||
    editor,
 | 
			
		||||
    toolbar,
 | 
			
		||||
    cmdBar,
 | 
			
		||||
  }) => {
 | 
			
		||||
    const initialCode = `sketch001 = startSketchOn('XZ')
 | 
			
		||||
    |> circle({ center = [0, 0], radius = 30 }, %)
 | 
			
		||||
    extrude001 = extrude(30, sketch001)
 | 
			
		||||
    `
 | 
			
		||||
    await app.initialise(initialCode)
 | 
			
		||||
 | 
			
		||||
    // One dumb hardcoded screen pixel value
 | 
			
		||||
    const testPoint = { x: 575, y: 200 }
 | 
			
		||||
    const [clickOnCap] = scene.makeMouseHelpers(testPoint.x, testPoint.y)
 | 
			
		||||
    const shellDeclaration =
 | 
			
		||||
      "shell001 = shell({ faces = ['end'], thickness = 5 }, extrude001)"
 | 
			
		||||
 | 
			
		||||
    await test.step(`Look for the white of the sketch001 shape`, async () => {
 | 
			
		||||
      await scene.expectPixelColor([127, 127, 127], testPoint, 15)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    if (!shouldPreselect) {
 | 
			
		||||
      await test.step(`Go through the command bar flow without preselected sketches`, async () => {
 | 
			
		||||
        await toolbar.shellButton.click()
 | 
			
		||||
        await cmdBar.expectState({
 | 
			
		||||
          stage: 'arguments',
 | 
			
		||||
          currentArgKey: 'selection',
 | 
			
		||||
          currentArgValue: '',
 | 
			
		||||
          headerArguments: {
 | 
			
		||||
            Selection: '',
 | 
			
		||||
            Thickness: '',
 | 
			
		||||
          },
 | 
			
		||||
          highlightedHeaderArg: 'selection',
 | 
			
		||||
          commandName: 'Shell',
 | 
			
		||||
        })
 | 
			
		||||
        await clickOnCap()
 | 
			
		||||
        await cmdBar.progressCmdBar()
 | 
			
		||||
        await cmdBar.expectState({
 | 
			
		||||
          stage: 'review',
 | 
			
		||||
          headerArguments: {
 | 
			
		||||
            Selection: '1 cap',
 | 
			
		||||
            Thickness: '5',
 | 
			
		||||
          },
 | 
			
		||||
          commandName: 'Shell',
 | 
			
		||||
        })
 | 
			
		||||
        await cmdBar.progressCmdBar()
 | 
			
		||||
      })
 | 
			
		||||
    } else {
 | 
			
		||||
      await test.step(`Preselect the two sketches`, async () => {
 | 
			
		||||
        await clickOnCap()
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      await test.step(`Go through the command bar flow with preselected sketches`, async () => {
 | 
			
		||||
        await toolbar.shellButton.click()
 | 
			
		||||
        await cmdBar.progressCmdBar()
 | 
			
		||||
        await cmdBar.expectState({
 | 
			
		||||
          stage: 'review',
 | 
			
		||||
          headerArguments: {
 | 
			
		||||
            Selection: '1 cap',
 | 
			
		||||
            Thickness: '5',
 | 
			
		||||
          },
 | 
			
		||||
          commandName: 'Shell',
 | 
			
		||||
        })
 | 
			
		||||
        await cmdBar.progressCmdBar()
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    await test.step(`Confirm code is added to the editor, scene has changed`, async () => {
 | 
			
		||||
      await editor.expectEditor.toContain(shellDeclaration)
 | 
			
		||||
      await editor.expectState({
 | 
			
		||||
        diagnostics: [],
 | 
			
		||||
        activeLines: [shellDeclaration],
 | 
			
		||||
        highlightedCode: '',
 | 
			
		||||
      })
 | 
			
		||||
      await scene.expectPixelColor([146, 146, 146], testPoint, 15)
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@ -661,7 +661,7 @@ export function addShell({
 | 
			
		||||
  // Check on the selection, and handle the wall vs cap casees
 | 
			
		||||
  let expr: Expr
 | 
			
		||||
  if (selectedArtifact.type === 'cap') {
 | 
			
		||||
    expr = createLiteral(selectedArtifact['subType'])
 | 
			
		||||
    expr = createLiteral(selectedArtifact.subType)
 | 
			
		||||
  } else {
 | 
			
		||||
    const tagResult = mutateAstWithTagForSketchSegment(
 | 
			
		||||
      modifiedAst,
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user