diff --git a/e2e/playwright/projects.spec.ts b/e2e/playwright/projects.spec.ts index 1fcc86867..51cf72c1a 100644 --- a/e2e/playwright/projects.spec.ts +++ b/e2e/playwright/projects.spec.ts @@ -1682,6 +1682,78 @@ test.describe('Renaming in the file tree', () => { ) }) +test.describe('Deleting files from the file pane', () => { + test( + `when main.kcl exists, navigate to main.kcl`, + { tag: '@electron' }, + async ({ browserName }, testInfo) => { + test.skip( + process.platform === 'win32', + 'TODO: remove this skip https://github.com/KittyCAD/modeling-app/issues/3557' + ) + const { electronApp, page } = await setupElectron({ + testInfo, + folderSetupFn: async (dir) => { + await fsp.mkdir(`${dir}/testProject`, { recursive: true }) + await fsp.copyFile( + 'src/wasm-lib/tests/executor/inputs/cylinder.kcl', + `${dir}/testProject/main.kcl` + ) + await fsp.copyFile( + 'src/wasm-lib/tests/executor/inputs/basic_fillet_cube_end.kcl', + `${dir}/testProject/fileToDelete.kcl` + ) + }, + }) + const u = await getUtils(page) + await page.setViewportSize({ width: 1200, height: 500 }) + page.on('console', console.log) + + // Constants and locators + const projectCard = page.getByText('testProject') + const projectMenuButton = page.getByTestId('project-sidebar-toggle') + const fileToDelete = page + .getByRole('listitem') + .filter({ has: page.getByRole('button', { name: 'fileToDelete.kcl' }) }) + const deleteMenuItem = page.getByRole('button', { name: 'Delete' }) + const deleteConfirmation = page.getByTestId('delete-confirmation') + + await test.step('Open project and navigate to fileToDelete.kcl', async () => { + await projectCard.click() + await u.waitForPageLoad() + await u.openFilePanel() + + await fileToDelete.click() + await u.waitForPageLoad() + await u.openKclCodePanel() + await expect(u.codeLocator).toContainText('getOppositeEdge(thing)') + await u.closeKclCodePanel() + }) + + await test.step('Delete fileToDelete.kcl', async () => { + await fileToDelete.click({ button: 'right' }) + await expect(deleteMenuItem).toBeVisible() + await deleteMenuItem.click() + await expect(deleteConfirmation).toBeVisible() + await deleteConfirmation.click() + }) + + await test.step('Check deletion and navigation', async () => { + await u.waitForPageLoad() + await expect(fileToDelete).not.toBeVisible() + await u.closeFilePanel() + await u.openKclCodePanel() + await expect(u.codeLocator).toContainText('circle(') + await expect(projectMenuButton).toContainText('main.kcl') + }) + + await electronApp.close() + } + ) + + test.fixme('TODO - when main.kcl does not exist', async () => {}) +}) + test( 'Original project name persist after onboarding', { tag: '@electron' },