Previous: ``` startProfileAt([x, y], %) startProfileAt([x, y], sketch001) ``` New: ``` startProfile(%, at = [x, y]) startProfile(sketch001, at = [x, y]) ```
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { getUtils } from '@e2e/playwright/test-utils'
 | |
| import { expect, test } from '@e2e/playwright/zoo-test'
 | |
| 
 | |
| function countNewlines(input: string): number {
 | |
|   let count = 0
 | |
|   for (const char of input) {
 | |
|     if (char === '\n') {
 | |
|       count++
 | |
|     }
 | |
|   }
 | |
|   return count
 | |
| }
 | |
| 
 | |
| test.describe('Debug pane', () => {
 | |
|   test('Artifact IDs in the artifact graph are stable across code edits', async ({
 | |
|     page,
 | |
|     context,
 | |
|     homePage,
 | |
|   }) => {
 | |
|     const code = `sketch001 = startSketchOn(XZ)
 | |
|     |> startProfile(at = [0, 0])
 | |
|   |> line(end = [1, 1])
 | |
|   `
 | |
|     const u = await getUtils(page)
 | |
|     await page.setBodyDimensions({ width: 1200, height: 500 })
 | |
| 
 | |
|     const tree = page.getByTestId('debug-feature-tree')
 | |
|     const segment = tree.locator('li', {
 | |
|       hasText: 'segIds:',
 | |
|       hasNotText: 'paths:',
 | |
|     })
 | |
| 
 | |
|     await test.step('Test setup', async () => {
 | |
|       await homePage.goToModelingScene()
 | |
|       await u.openKclCodePanel()
 | |
|       await u.openDebugPanel()
 | |
|       // Set the code in the code editor.
 | |
|       await u.codeLocator.click()
 | |
|       await page.keyboard.type(code, { delay: 0 })
 | |
|       // Scroll to the artifact graph.
 | |
|       await tree.scrollIntoViewIfNeeded()
 | |
|       // Expand the artifact graph.
 | |
|       await tree.getByText('Artifact Graph').click()
 | |
|       // Just expanded the details, making the element taller, so scroll again.
 | |
|       await tree.getByText('Plane').first().scrollIntoViewIfNeeded()
 | |
|     })
 | |
|     // Extract the artifact IDs from the debug artifact graph.
 | |
|     const initialSegmentIds = await segment.innerText({ timeout: 5_000 })
 | |
|     // The artifact ID should include a UUID.
 | |
|     expect(initialSegmentIds).toMatch(
 | |
|       /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/
 | |
|     )
 | |
|     await test.step('Move cursor to the bottom of the code editor', async () => {
 | |
|       // Focus on the code editor.
 | |
|       await u.codeLocator.click()
 | |
|       // Make sure the cursor is at the end of the code.
 | |
|       const lines = countNewlines(code) + 1
 | |
|       for (let i = 0; i < lines; i++) {
 | |
|         await page.keyboard.press('ArrowDown')
 | |
|       }
 | |
|     })
 | |
|     await test.step('Enter a comment', async () => {
 | |
|       await page.keyboard.type('|> line(end = [2, 2])', { delay: 0 })
 | |
|       // Wait for keyboard input debounce and updated artifact graph.
 | |
|       await page.waitForTimeout(1000)
 | |
|     })
 | |
|     const newSegmentIds = await segment.innerText()
 | |
|     // Strip off the closing bracket.
 | |
|     const initialIds = initialSegmentIds.slice(0, initialSegmentIds.length - 1)
 | |
|     expect(newSegmentIds.slice(0, initialIds.length)).toEqual(initialIds)
 | |
|   })
 | |
| })
 |