Compare commits
13 Commits
jtran/fix-
...
franknoiro
Author | SHA1 | Date | |
---|---|---|---|
34f8366849 | |||
f59f023d90 | |||
e974d995e3 | |||
8f2cbd69c7 | |||
076bd65038 | |||
39fb1bcc5c | |||
d996da8c45 | |||
8fd482a424 | |||
2cd74a063c | |||
37c77df23b | |||
a283f5aab8 | |||
25a1560d81 | |||
032c4c04eb |
@ -99,7 +99,6 @@ export class HomePageFixture {
|
|||||||
createAndGoToProject = async (projectTitle = 'untitled') => {
|
createAndGoToProject = async (projectTitle = 'untitled') => {
|
||||||
await this.projectsLoaded()
|
await this.projectsLoaded()
|
||||||
await this.projectButtonNew.click()
|
await this.projectButtonNew.click()
|
||||||
await this.projectTextName.click()
|
|
||||||
await this.projectTextName.fill(projectTitle)
|
await this.projectTextName.fill(projectTitle)
|
||||||
await this.projectButtonContinue.click()
|
await this.projectButtonContinue.click()
|
||||||
}
|
}
|
||||||
|
@ -230,16 +230,12 @@ export class SceneFixture {
|
|||||||
await expect(this.networkToggleConnected).toBeVisible({ timeout })
|
await expect(this.networkToggleConnected).toBeVisible({ timeout })
|
||||||
}
|
}
|
||||||
|
|
||||||
settled = async (cmdBar: CmdBarFixture) => {
|
settled = async (cmdBar?: CmdBarFixture) => {
|
||||||
const u = await getUtils(this.page)
|
const u = await getUtils(this.page)
|
||||||
|
|
||||||
await expect(this.startEditSketchBtn).not.toBeDisabled()
|
await expect(this.startEditSketchBtn).not.toBeDisabled({ timeout: 15_000 })
|
||||||
await expect(this.startEditSketchBtn).toBeVisible()
|
await expect(this.startEditSketchBtn).toBeVisible()
|
||||||
|
|
||||||
await cmdBar.openCmdBar()
|
|
||||||
await cmdBar.chooseCommand('Settings · app · show debug panel')
|
|
||||||
await cmdBar.selectOption({ name: 'on' }).click()
|
|
||||||
|
|
||||||
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()
|
||||||
|
@ -68,12 +68,10 @@ test.describe('edit with AI example snapshots', () => {
|
|||||||
body1CapCoords.x,
|
body1CapCoords.x,
|
||||||
body1CapCoords.y
|
body1CapCoords.y
|
||||||
)
|
)
|
||||||
const yellow: [number, number, number] = [179, 179, 131]
|
|
||||||
const submittingToast = page.getByText('Submitting to Text-to-CAD API...')
|
const submittingToast = page.getByText('Submitting to Text-to-CAD API...')
|
||||||
|
|
||||||
await test.step('wait for scene to load select body and check selection came through', async () => {
|
await test.step('wait for scene to load select body and check selection came through', async () => {
|
||||||
await clickBody1Cap()
|
await clickBody1Cap()
|
||||||
await scene.expectPixelColor(yellow, body1CapCoords, 20)
|
|
||||||
await editor.expectState({
|
await editor.expectState({
|
||||||
highlightedCode: '',
|
highlightedCode: '',
|
||||||
activeLines: ['|>startProfileAt([-73.64,-42.89],%)'],
|
activeLines: ['|>startProfileAt([-73.64,-42.89],%)'],
|
||||||
|
@ -588,6 +588,7 @@ test(
|
|||||||
'Draft circle should look right',
|
'Draft circle should look right',
|
||||||
{ tag: '@snapshot' },
|
{ tag: '@snapshot' },
|
||||||
async ({ page, context, cmdBar, scene }) => {
|
async ({ page, context, cmdBar, scene }) => {
|
||||||
|
test.fixme(orRunWhenFullSuiteEnabled())
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await page.setViewportSize({ width: 1200, height: 500 })
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
const PUR = 400 / 37.5 //pixeltoUnitRatio
|
const PUR = 400 / 37.5 //pixeltoUnitRatio
|
||||||
|
15
e2e/playwright/stress-test.spec.ts
Normal file
15
e2e/playwright/stress-test.spec.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { createProject } from '@e2e/playwright/test-utils'
|
||||||
|
import { test } from '@e2e/playwright/zoo-test'
|
||||||
|
|
||||||
|
test.describe('Stress test', () => {
|
||||||
|
test('Create project and load stress test', async ({
|
||||||
|
cmdBar,
|
||||||
|
scene,
|
||||||
|
page,
|
||||||
|
}, testInfo) => {
|
||||||
|
const projectName = 'stress-test-project'
|
||||||
|
// Create and load project
|
||||||
|
await createProject({ name: projectName, page })
|
||||||
|
await scene.settled(cmdBar)
|
||||||
|
})
|
||||||
|
})
|
@ -14,6 +14,7 @@ import {
|
|||||||
commandBarActor,
|
commandBarActor,
|
||||||
useCommandBarState,
|
useCommandBarState,
|
||||||
} from '@src/machines/commandBarMachine'
|
} from '@src/machines/commandBarMachine'
|
||||||
|
import toast from 'react-hot-toast'
|
||||||
|
|
||||||
export const COMMAND_PALETTE_HOTKEY = 'mod+k'
|
export const COMMAND_PALETTE_HOTKEY = 'mod+k'
|
||||||
|
|
||||||
@ -35,13 +36,23 @@ export const CommandBar = () => {
|
|||||||
commandBarActor.send({ type: 'Close' })
|
commandBarActor.send({ type: 'Close' })
|
||||||
}, [pathname])
|
}, [pathname])
|
||||||
|
|
||||||
|
/**
|
||||||
|
* if the engine connection is about to end, we don't want users
|
||||||
|
* to be able to perform commands that might require that connection,
|
||||||
|
* so we just close the command palette.
|
||||||
|
* TODO: instead, let each command control whether it is disabled, and
|
||||||
|
* don't just bail out
|
||||||
|
*/
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (
|
if (
|
||||||
immediateState.type !== EngineConnectionStateType.ConnectionEstablished
|
!commandBarActor.getSnapshot().matches('Closed') &&
|
||||||
|
(immediateState.type === EngineConnectionStateType.Disconnecting ||
|
||||||
|
immediateState.type === EngineConnectionStateType.Disconnected)
|
||||||
) {
|
) {
|
||||||
commandBarActor.send({ type: 'Close' })
|
commandBarActor.send({ type: 'Close' })
|
||||||
|
toast.error('Exiting command flow because engine disconnected')
|
||||||
}
|
}
|
||||||
}, [immediateState])
|
}, [immediateState, commandBarActor])
|
||||||
|
|
||||||
// Hook up keyboard shortcuts
|
// Hook up keyboard shortcuts
|
||||||
useHotkeyWrapper([COMMAND_PALETTE_HOTKEY], () => {
|
useHotkeyWrapper([COMMAND_PALETTE_HOTKEY], () => {
|
||||||
|
@ -3,6 +3,7 @@ import { faBugSlash } from '@fortawesome/free-solid-svg-icons'
|
|||||||
import type { MouseEventHandler, ReactNode } from 'react'
|
import type { MouseEventHandler, ReactNode } from 'react'
|
||||||
import type { ContextFrom } from 'xstate'
|
import type { ContextFrom } from 'xstate'
|
||||||
|
|
||||||
|
import { IS_PLAYWRIGHT_KEY } from '@e2e/playwright/storageStates'
|
||||||
import type { CustomIconName } from '@src/components/CustomIcon'
|
import type { CustomIconName } from '@src/components/CustomIcon'
|
||||||
import {
|
import {
|
||||||
FileTreeInner,
|
FileTreeInner,
|
||||||
@ -241,6 +242,8 @@ export const sidebarPanes: SidebarPane[] = [
|
|||||||
)
|
)
|
||||||
},
|
},
|
||||||
keybinding: 'Shift + D',
|
keybinding: 'Shift + D',
|
||||||
hide: ({ settings }) => !settings.app.showDebugPanel.current,
|
hide: ({ settings }) =>
|
||||||
|
!(window?.localStorage.getItem(IS_PLAYWRIGHT_KEY) === 'true') &&
|
||||||
|
!settings.app.showDebugPanel.current,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
Reference in New Issue
Block a user