Files
modeling-app/e2e/playwright/app-header-tests.spec.ts
Jace Browning 55e1ec7dad Rename desktop e2e scripts and tags for consistency (#7240)
* 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
2025-05-29 09:29:03 -04:00

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()
})
})