* Rename desktop e2e scripts and tags for consistency * Show local command in main test step * Restore 'e2e' prefix to clarify GitHub UI * Add web script to contributor guide
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { expect, test } from '@e2e/playwright/zoo-test'
 | 
						|
import { join } from 'path'
 | 
						|
import * as fsp from 'fs/promises'
 | 
						|
 | 
						|
test.describe('Electron app header tests', () => {
 | 
						|
  test(
 | 
						|
    'Open Command Palette button has correct shortcut',
 | 
						|
    { tag: '@desktop' },
 | 
						|
    async ({ page }, testInfo) => {
 | 
						|
      await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
						|
 | 
						|
      // No space before the shortcut since it checks textContent.
 | 
						|
      let text
 | 
						|
      switch (process.platform) {
 | 
						|
        case 'darwin':
 | 
						|
          text = 'Commands⌘K'
 | 
						|
          break
 | 
						|
        case 'win32':
 | 
						|
          text = 'CommandsCtrl+K'
 | 
						|
          break
 | 
						|
        default: // 'linux' etc.
 | 
						|
          text = 'CommandsCtrl+K'
 | 
						|
          break
 | 
						|
      }
 | 
						|
      const commandsButton = page.getByRole('button', { name: 'Commands' })
 | 
						|
      await expect(commandsButton).toBeVisible()
 | 
						|
      await expect(commandsButton).toHaveText(text)
 | 
						|
    }
 | 
						|
  )
 | 
						|
 | 
						|
  test(
 | 
						|
    'User settings has correct shortcut',
 | 
						|
    { tag: '@desktop' },
 | 
						|
    async ({ page, toolbar }, testInfo) => {
 | 
						|
      await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
						|
 | 
						|
      // Open the user sidebar menu.
 | 
						|
      await toolbar.userSidebarButton.click()
 | 
						|
 | 
						|
      // No space after "User settings" since it's textContent.
 | 
						|
      const text =
 | 
						|
        process.platform === 'darwin' ? 'User settings⌘,' : 'User settingsCtrl,'
 | 
						|
      const userSettingsButton = page.getByTestId('user-settings')
 | 
						|
      await expect(userSettingsButton).toBeVisible()
 | 
						|
      await expect(userSettingsButton).toHaveText(text)
 | 
						|
    }
 | 
						|
  )
 | 
						|
 | 
						|
  test('Share button is disabled when imports are present', async ({
 | 
						|
    page,
 | 
						|
    context,
 | 
						|
    homePage,
 | 
						|
    toolbar,
 | 
						|
  }) => {
 | 
						|
    const projectName = 'share-disabled-for-imports'
 | 
						|
    await context.folderSetupFn(async (dir) => {
 | 
						|
      const testDir = join(dir, projectName)
 | 
						|
      await fsp.mkdir(testDir, { recursive: true })
 | 
						|
 | 
						|
      await fsp.writeFile(join(testDir, 'deps.kcl'), 'export x = 42')
 | 
						|
      await fsp.writeFile(join(testDir, 'main.kcl'), 'import x from "deps.kcl"')
 | 
						|
    })
 | 
						|
 | 
						|
    await page.setBodyDimensions({ width: 1200, height: 500 })
 | 
						|
    await homePage.openProject(projectName)
 | 
						|
    const shareButton = page.getByTestId('share-button')
 | 
						|
 | 
						|
    // Open deps.kcl (which has no imports) and verify share button is enabled
 | 
						|
    await toolbar.fileTreeBtn.click()
 | 
						|
    await toolbar.openFile('deps.kcl')
 | 
						|
    await expect(shareButton).not.toBeDisabled()
 | 
						|
 | 
						|
    // Open main.kcl (which has an import) and verify share button is disabled
 | 
						|
    await toolbar.openFile('main.kcl')
 | 
						|
    await expect(shareButton).toBeDisabled()
 | 
						|
  })
 | 
						|
})
 |