@ -295,6 +295,101 @@ test.fixme(
 | 
			
		||||
    await electronApp.close()
 | 
			
		||||
  }
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
test(
 | 
			
		||||
  'Deleting projects, can delete individual project, can still create projects after deleting all',
 | 
			
		||||
  { tag: '@electron' },
 | 
			
		||||
  async ({ browserName }, testInfo) => {
 | 
			
		||||
    const { electronApp, page } = await setupElectron({
 | 
			
		||||
      testInfo,
 | 
			
		||||
    })
 | 
			
		||||
    await page.setViewportSize({ width: 1200, height: 500 })
 | 
			
		||||
 | 
			
		||||
    page.on('console', console.log)
 | 
			
		||||
 | 
			
		||||
    const createProjectAndRenameIt = async (name: string) =>
 | 
			
		||||
      test.step(`Create and rename project ${name}`, async () => {
 | 
			
		||||
        await page.getByRole('button', { name: 'New project' }).click()
 | 
			
		||||
        await expect(page.getByText('Successfully created')).toBeVisible()
 | 
			
		||||
        await expect(page.getByText('Successfully created')).not.toBeVisible()
 | 
			
		||||
 | 
			
		||||
        await expect(page.getByText(`project-000`)).toBeVisible()
 | 
			
		||||
        await page.getByText(`project-000`).hover()
 | 
			
		||||
        await page.getByText(`project-000`).focus()
 | 
			
		||||
 | 
			
		||||
        await page.getByLabel('sketch').first().click()
 | 
			
		||||
 | 
			
		||||
        await page.waitForTimeout(100)
 | 
			
		||||
 | 
			
		||||
        // type "updated project name"
 | 
			
		||||
        await page.keyboard.press('Backspace')
 | 
			
		||||
        await page.keyboard.type(name)
 | 
			
		||||
 | 
			
		||||
        await page.getByLabel('checkmark').last().click()
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
    // we need to create the folders so that the order is correct
 | 
			
		||||
    // creating them ahead of time with fs tools means they all have the same timestamp
 | 
			
		||||
    await createProjectAndRenameIt('router-template-slate')
 | 
			
		||||
    // await createProjectAndRenameIt('focusrite_scarlett_mounting_braket')
 | 
			
		||||
    await createProjectAndRenameIt('bracket')
 | 
			
		||||
    await createProjectAndRenameIt('lego')
 | 
			
		||||
 | 
			
		||||
    await test.step('delete the middle project, i.e. the bracket project', async () => {
 | 
			
		||||
      const project = page.getByText('bracket')
 | 
			
		||||
 | 
			
		||||
      await project.hover()
 | 
			
		||||
      await project.focus()
 | 
			
		||||
 | 
			
		||||
      await page
 | 
			
		||||
        .locator('[data-edit-buttons-for="bracket"]')
 | 
			
		||||
        .getByLabel('trash')
 | 
			
		||||
        .click()
 | 
			
		||||
 | 
			
		||||
      await expect(page.getByText('This will permanently delete')).toBeVisible()
 | 
			
		||||
 | 
			
		||||
      await page.getByTestId('delete-confirmation').click()
 | 
			
		||||
 | 
			
		||||
      await expect(page.getByText('Successfully deleted')).toBeVisible()
 | 
			
		||||
      await expect(page.getByText('Successfully deleted')).not.toBeVisible()
 | 
			
		||||
 | 
			
		||||
      await expect(page.getByText('bracket')).not.toBeVisible()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await test.step('Now that the middle project is deleted, check the other projects are still there', async () => {
 | 
			
		||||
      await expect(page.getByText('router-template-slate')).toBeVisible()
 | 
			
		||||
      await expect(page.getByText('lego')).toBeVisible()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await test.step('delete other two projects', async () => {
 | 
			
		||||
      await page
 | 
			
		||||
        .locator('[data-edit-buttons-for="router-template-slate"]')
 | 
			
		||||
        .getByLabel('trash')
 | 
			
		||||
        .click()
 | 
			
		||||
      await page.getByTestId('delete-confirmation').click()
 | 
			
		||||
 | 
			
		||||
      await page
 | 
			
		||||
        .locator('[data-edit-buttons-for="lego"]')
 | 
			
		||||
        .getByLabel('trash')
 | 
			
		||||
        .click()
 | 
			
		||||
      await page.getByTestId('delete-confirmation').click()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await test.step('Check that the home page is empty', async () => {
 | 
			
		||||
      await expect(page.getByText('No Projects found')).toBeVisible()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await test.step('Check we can still create a project', async () => {
 | 
			
		||||
      await page.getByRole('button', { name: 'New project' }).click()
 | 
			
		||||
      await expect(page.getByText('Successfully created')).toBeVisible()
 | 
			
		||||
      await expect(page.getByText('Successfully created')).not.toBeVisible()
 | 
			
		||||
      await expect(page.getByText('project-000')).toBeVisible()
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    await electronApp.close()
 | 
			
		||||
  }
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
test(
 | 
			
		||||
  'Can sort projects on home page',
 | 
			
		||||
  { tag: '@electron' },
 | 
			
		||||
 | 
			
		||||
@ -120,7 +120,10 @@ function ProjectCard({
 | 
			
		||||
        </div>
 | 
			
		||||
      </Link>
 | 
			
		||||
      {!isEditing && (
 | 
			
		||||
        <div className="absolute z-10 flex items-center gap-1 opacity-0 bottom-2 right-2 group-hover:opacity-100 group-focus-within:opacity-100">
 | 
			
		||||
        <div
 | 
			
		||||
          className="absolute z-10 flex items-center gap-1 opacity-0 bottom-2 right-2 group-hover:opacity-100 group-focus-within:opacity-100"
 | 
			
		||||
          data-edit-buttons-for={project.name?.replace(FILE_EXT, '')}
 | 
			
		||||
        >
 | 
			
		||||
          <ActionButton
 | 
			
		||||
            Element="button"
 | 
			
		||||
            iconStart={{
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user