Tests: remove all timeouts and pasting into editor from file name collision PW test (#4352)

remove all timeouts and pasting into editor from file name collision PW test
This commit is contained in:
Frank Noirot
2024-10-29 18:42:53 -07:00
committed by 49lf
parent dbab7876de
commit 83214a88a3
2 changed files with 58 additions and 42 deletions

View File

@ -193,61 +193,74 @@ test.describe('when using the file tree to', () => {
test( test(
'create a new file with the same name as an existing file cancels the operation', 'create a new file with the same name as an existing file cancels the operation',
{ tag: '@electron' }, { tag: '@electron' },
async ({ browser: _, tronApp }, testInfo) => { async (
await tronApp.initialise() { browser: _, tronApp, homePage, scene, editor, toolbar },
testInfo
) => {
const projectName = 'cube'
const mainFile = 'main.kcl'
const secondFile = 'cylinder.kcl'
const kclCube = await fsp.readFile(executorInputPath('cube.kcl'), 'utf-8')
const kclCylinder = await fsp.readFile(
executorInputPath('cylinder.kcl'),
'utf-8'
)
await tronApp.initialise({
fixtures: { homePage, scene, editor, toolbar },
folderSetupFn: async (dir) => {
const cubeDir = join(dir, projectName)
await fsp.mkdir(cubeDir, { recursive: true })
await fsp.copyFile(
executorInputPath('cube.kcl'),
join(cubeDir, mainFile)
)
await fsp.copyFile(
executorInputPath('cylinder.kcl'),
join(cubeDir, secondFile)
)
},
})
const { const {
openKclCodePanel,
openFilePanel, openFilePanel,
pasteCodeInEditor,
createNewFileAndSelect,
renameFile, renameFile,
selectFile, selectFile,
editorTextMatches, editorTextMatches,
waitForPageLoad,
} = await getUtils(tronApp.page, _test) } = await getUtils(tronApp.page, _test)
await tronApp.page.setViewportSize({ width: 1200, height: 500 }) await test.step(`Setup: Open project and navigate to ${secondFile}`, async () => {
tronApp.page.on('console', console.log) await homePage.expectState({
projectCards: [
{
title: projectName,
fileCount: 2,
folderCount: 2, // TODO: This is a pre-existing bug, there are no folders within the project
},
],
sortBy: 'last-modified-desc',
})
await homePage.openProject(projectName)
await waitForPageLoad()
await openFilePanel()
await selectFile(secondFile)
})
await createProject({ name: 'project-000', page: tronApp.page }) await test.step(`Attempt to rename ${secondFile} to ${mainFile}`, async () => {
await openKclCodePanel() await renameFile(secondFile, mainFile)
await openFilePanel() })
// File the main.kcl with contents
const kclCube = await fsp.readFile(
'src/wasm-lib/tests/executor/inputs/cube.kcl',
'utf-8'
)
await pasteCodeInEditor(kclCube)
// TODO: We have a timeout of 1s between edits to write to disk. If you reload the page too quickly it won't write to disk. await test.step(`Postcondition: ${mainFile} still has the original content`, async () => {
await tronApp.page.waitForTimeout(2000) await selectFile(mainFile)
const kcl1 = 'main.kcl'
const kcl2 = '2.kcl'
await createNewFileAndSelect(kcl2)
const kclCylinder = await fsp.readFile(
'src/wasm-lib/tests/executor/inputs/cylinder.kcl',
'utf-8'
)
await pasteCodeInEditor(kclCylinder)
// TODO: We have a timeout of 1s between edits to write to disk. If you reload the page too quickly it won't write to disk.
await tronApp.page.waitForTimeout(2000)
await renameFile(kcl2, kcl1)
await test.step(`Postcondition: ${kcl1} still has the original content`, async () => {
await selectFile(kcl1)
await editorTextMatches(kclCube) await editorTextMatches(kclCube)
}) })
await tronApp.page.waitForTimeout(500)
await test.step(`Postcondition: ${kcl2} still exists with the original content`, async () => { await test.step(`Postcondition: ${secondFile} still exists with the original content`, async () => {
await selectFile(kcl2) await selectFile(secondFile)
await editorTextMatches(kclCylinder) await editorTextMatches(kclCylinder)
}) })
await tronApp?.close?.() await tronApp.close()
} }
) )
@ -273,11 +286,11 @@ test.describe('when using the file tree to', () => {
) )
await pasteCodeInEditor(kclCube) await pasteCodeInEditor(kclCube)
const kcl1 = 'main.kcl' const mainFile = 'main.kcl'
await deleteFile(kcl1) await deleteFile(mainFile)
await test.step(`Postcondition: ${kcl1} is recreated but has no content`, async () => { await test.step(`Postcondition: ${mainFile} is recreated but has no content`, async () => {
await editorTextMatches('') await editorTextMatches('')
}) })

View File

@ -631,6 +631,9 @@ export async function getUtils(page: Page, test_?: typeof test) {
.locator('[data-testid="file-pane-scroll-container"] button') .locator('[data-testid="file-pane-scroll-container"] button')
.filter({ hasText: name }) .filter({ hasText: name })
.click() .click()
await expect(page.getByTestId('project-sidebar-toggle')).toContainText(
name
)
}) })
}, },