Pass command bar tests

This commit is contained in:
49lf
2024-11-22 16:03:18 -05:00
parent fd39fcdb25
commit 8e450378c3

View File

@ -1,21 +1,11 @@
import { test, expect } from '@playwright/test' import { test, expect } from './zoo-test'
import { getUtils, setup, tearDown } from './test-utils' import { getUtils } from './test-utils'
import { KCL_DEFAULT_LENGTH } from 'lib/constants' import { KCL_DEFAULT_LENGTH } from 'lib/constants'
import { normalizeLineEndings } from 'lib/codeEditor'
test.beforeEach(async ({ context, page }, testInfo) => {
await setup(context, page, testInfo)
})
test.afterEach(async ({ page }, testInfo) => {
await tearDown(page, testInfo)
})
test.describe('Command bar tests', () => { test.describe('Command bar tests', () => {
test('Extrude from command bar selects extrude line after', async ({ test('Extrude from command bar selects extrude line after', async ({ page, homePage }) => { await page.addInitScript(async () => {
page,
}) => {
await page.addInitScript(async () => {
localStorage.setItem( localStorage.setItem(
'persistCode', 'persistCode',
`sketch001 = startSketchOn('XY') `sketch001 = startSketchOn('XY')
@ -29,9 +19,9 @@ test.describe('Command bar tests', () => {
}) })
const u = await getUtils(page) 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.openDebugPanel()
await u.expectCmdLog('[data-message-type="execution-done"]') await u.expectCmdLog('[data-message-type="execution-done"]')
@ -49,11 +39,9 @@ test.describe('Command bar tests', () => {
await page.waitForTimeout(200) await page.waitForTimeout(200)
await expect(page.locator('.cm-activeLine')).toHaveText( await expect(page.locator('.cm-activeLine')).toHaveText(
`extrude001 = extrude(${KCL_DEFAULT_LENGTH}, sketch001)` `extrude001 = extrude(${KCL_DEFAULT_LENGTH}, sketch001)`
) ) })
})
test('Fillet from command bar', async ({ page }) => { test('Fillet from command bar', async ({ page, homePage }) => { await page.addInitScript(async () => {
await page.addInitScript(async () => {
localStorage.setItem( localStorage.setItem(
'persistCode', 'persistCode',
`sketch001 = startSketchOn('XY') `sketch001 = startSketchOn('XY')
@ -63,13 +51,13 @@ test.describe('Command bar tests', () => {
|> line([0, -10], %) |> line([0, -10], %)
|> lineTo([profileStartX(%), profileStartY(%)], %) |> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%) |> close(%)
extrude001 = extrude(-10, sketch001)` extrude001 = extrude(-10, sketch001)`
) )
}) })
const u = await getUtils(page) const u = await getUtils(page)
await page.setViewportSize({ width: 1000, height: 500 }) await page.setBodyDimensions({ width: 1000, height: 500 })
await u.waitForAuthSkipAppStart() await homePage.goToModelingScene()
await u.openDebugPanel() await u.openDebugPanel()
await u.expectCmdLog('[data-message-type="execution-done"]') await u.expectCmdLog('[data-message-type="execution-done"]')
await u.closeDebugPanel() await u.closeDebugPanel()
@ -87,16 +75,12 @@ extrude001 = extrude(-10, sketch001)`
await page.keyboard.press('Enter') // submit await page.keyboard.press('Enter') // submit
await page.waitForTimeout(100) await page.waitForTimeout(100)
await expect(page.locator('.cm-activeLine')).toContainText( await expect(page.locator('.cm-activeLine')).toContainText(
`fillet({ radius = ${KCL_DEFAULT_LENGTH}, tags = [seg01] }, %)` `fillet({ radius: ${KCL_DEFAULT_LENGTH}, tags: [seg01] }, %)`
) ) })
})
test('Command bar can change a setting, and switch back and forth between arguments', async ({ test('Command bar can change a setting, and switch back and forth between arguments', async ({ page, homePage }) => { const u = await getUtils(page)
page, await page.setBodyDimensions({ width: 1200, height: 500 })
}) => { await homePage.goToModelingScene()
const u = await getUtils(page)
await page.setViewportSize({ width: 1200, height: 500 })
await u.waitForAuthSkipAppStart()
const commandBarButton = page.getByRole('button', { name: 'Commands' }) const commandBarButton = page.getByRole('button', { name: 'Commands' })
const cmdSearchBar = page.getByPlaceholder('Search commands') const cmdSearchBar = page.getByPlaceholder('Search commands')
@ -153,7 +137,7 @@ extrude001 = extrude(-10, sketch001)`
// Check that the visibility changed // Check that the visibility changed
await expect(paneSelector).not.toBeVisible() await expect(paneSelector).not.toBeVisible()
commandOptionInput = page.getByPlaceholder('off') commandOptionInput = page.locator('[id="option-input"]')
// Test case for https://github.com/KittyCAD/modeling-app/issues/2882 // Test case for https://github.com/KittyCAD/modeling-app/issues/2882
await commandBarButton.click() await commandBarButton.click()
@ -169,15 +153,11 @@ extrude001 = extrude(-10, sketch001)`
// Test case for https://github.com/KittyCAD/modeling-app/issues/2881 // Test case for https://github.com/KittyCAD/modeling-app/issues/2881
await commandThemeArgButton.click() await commandThemeArgButton.click()
await expect(commandThemeArgButton).toBeDisabled() await expect(commandThemeArgButton).toBeDisabled()
await expect(commandLevelArgButton).toHaveText('level: project') await expect(commandLevelArgButton).toHaveText('level: project') })
})
test('Command bar keybinding works from code editor and can change a setting', async ({ test('Command bar keybinding works from code editor and can change a setting', async ({ page, homePage }) => { const u = await getUtils(page)
page, await page.setBodyDimensions({ width: 1200, height: 500 })
}) => { await homePage.goToModelingScene()
const u = await getUtils(page)
await page.setViewportSize({ width: 1200, height: 500 })
await u.waitForAuthSkipAppStart()
await expect( await expect(
page.getByRole('button', { name: 'Start Sketch' }) page.getByRole('button', { name: 'Start Sketch' })
@ -218,11 +198,9 @@ extrude001 = extrude(-10, sketch001)`
page.getByText(`Set theme to "system" as a user default`) page.getByText(`Set theme to "system" as a user default`)
).toBeVisible() ).toBeVisible()
// Check that the theme changed // Check that the theme changed
await expect(page.locator('body')).not.toHaveClass(`body-bg dark`) await expect(page.locator('body')).not.toHaveClass(`body-bg dark`) })
})
test('Can extrude from the command bar', async ({ page }) => { test('Can extrude from the command bar', async ({ page, homePage }) => { await page.addInitScript(async () => {
await page.addInitScript(async () => {
localStorage.setItem( localStorage.setItem(
'persistCode', 'persistCode',
`distance = sqrt(20) `distance = sqrt(20)
@ -237,9 +215,9 @@ extrude001 = extrude(-10, sketch001)`
}) })
const u = await getUtils(page) 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()
// Make sure the stream is up // Make sure the stream is up
await u.openDebugPanel() await u.openDebugPanel()
@ -293,26 +271,15 @@ extrude001 = extrude(-10, sketch001)`
await continueButton.click() await continueButton.click()
await submitButton.click() await submitButton.click()
// Check that the code was updated
await u.waitForCmdReceive('extrude') await u.waitForCmdReceive('extrude')
// Unfortunately this indentation seems to matter for the test
await expect(page.locator('.cm-content')).toHaveText( await expect(page.locator('.cm-content')).toContainText('extrude001 = extrude(distance001, sketch001)')
`distance = sqrt(20)
distance001 = ${KCL_DEFAULT_LENGTH}
sketch001 = startSketchOn('XZ')
|> startProfileAt([-6.95, 10.98], %)
|> line([25.1, 0.41], %)
|> line([0.73, -20.93], %)
|> line([-23.44, 0.52], %)
|> close(%)
extrude001 = extrude(distance001, sketch001)`.replace(/(\r\n|\n|\r)/gm, '') // remove newlines
)
}) })
test('Can switch between sketch tools via command bar', async ({ page }) => { test('Can switch between sketch tools via command bar', async ({ page, homePage }) => { const u = await getUtils(page)
const u = await getUtils(page) await page.setBodyDimensions({ width: 1200, height: 500 })
await page.setViewportSize({ width: 1200, height: 500 }) await homePage.goToModelingScene()
await u.waitForAuthSkipAppStart()
const sketchButton = page.getByRole('button', { name: 'Start Sketch' }) const sketchButton = page.getByRole('button', { name: 'Start Sketch' })
const cmdBarButton = page.getByRole('button', { name: 'Commands' }) const cmdBarButton = page.getByRole('button', { name: 'Commands' })
@ -356,6 +323,5 @@ extrude001 = extrude(distance001, sketch001)`.replace(/(\r\n|\n|\r)/gm, '') // r
// switch to tangential arc via command bar // switch to tangential arc via command bar
await cmdBarButton.click() await cmdBarButton.click()
await arcToolCommand.click() await arcToolCommand.click()
await expect(arcToolButton).toHaveAttribute('aria-pressed', 'true') await expect(arcToolButton).toHaveAttribute('aria-pressed', 'true') })
})
}) })