diff --git a/e2e/playwright/user-sidebar-menu-tests.spec.ts b/e2e/playwright/user-sidebar-menu-tests.spec.ts new file mode 100644 index 000000000..4ac0b1cdc --- /dev/null +++ b/e2e/playwright/user-sidebar-menu-tests.spec.ts @@ -0,0 +1,34 @@ +import { test, expect } from '@playwright/test' + +import { setupElectron, tearDown } from './test-utils' + +test.afterEach(async ({ page }, testInfo) => { + await tearDown(page, testInfo) +}) + +test.describe('Electron user sidebar menu tests', () => { + test( + 'User settings has correct shortcut', + { tag: '@electron' }, + async ({ browserName }, testInfo) => { + const { electronApp, page } = await setupElectron({ + testInfo, + folderSetupFn: async () => {}, + }) + + await page.setViewportSize({ width: 1200, height: 500 }) + + // Open the user sidebar menu. + await page.getByTestId('user-sidebar-toggle').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) + + await electronApp.close() + } + ) +}) diff --git a/src/hooks/usePlatform.ts b/src/hooks/usePlatform.ts index 8ef85a892..cd751f013 100644 --- a/src/hooks/usePlatform.ts +++ b/src/hooks/usePlatform.ts @@ -7,12 +7,29 @@ export default function usePlatform() { const [platformName, setPlatformName] = useState('') useEffect(() => { - async function getPlatform() { - setPlatformName((window.electron.platform ?? '') as Platform) + function getPlatform(): Platform { + const platform = window.electron.platform ?? '' + // https://nodejs.org/api/process.html#processplatform + switch (platform) { + case 'darwin': + return 'macos' + case 'win32': + return 'windows' + // We don't currently care to distinguish between these. + case 'android': + case 'freebsd': + case 'linux': + case 'openbsd': + case 'sunos': + return 'linux' + default: + console.error('Unknown platform:', platform) + return '' + } } if (isDesktop()) { - void getPlatform() + setPlatformName(getPlatform()) } else { if (navigator.userAgent.indexOf('Mac') !== -1) { setPlatformName('macos')