2026-05-05 19:12:33 +00:00
|
|
|
import { expect, test } from '@playwright/test'
|
|
|
|
|
|
2026-05-05 23:22:08 +00:00
|
|
|
import { CanvasHelper } from '#tests/helpers/canvas'
|
|
|
|
|
|
2026-05-19 09:27:13 +00:00
|
|
|
test('font settings popover exposes web font access without desktop-only cache actions', async ({
|
|
|
|
|
page
|
|
|
|
|
}) => {
|
2026-05-05 19:12:33 +00:00
|
|
|
await page.goto('/')
|
|
|
|
|
const canvas = new CanvasHelper(page)
|
|
|
|
|
await canvas.waitForInit()
|
|
|
|
|
|
|
|
|
|
await page.evaluate(() => {
|
2026-05-06 09:19:39 +00:00
|
|
|
const store = window.openPencil?.getStore?.()
|
2026-05-05 23:59:56 +00:00
|
|
|
if (!store) throw new Error('OpenPencil store not initialized')
|
2026-05-05 19:12:33 +00:00
|
|
|
const id = store.createShape('TEXT', 120, 120, 240, 40)
|
|
|
|
|
store.updateNode(id, { characters: 'Font settings smoke' })
|
|
|
|
|
store.select([id])
|
|
|
|
|
})
|
|
|
|
|
|
2026-05-15 09:49:49 +00:00
|
|
|
await expect(page.getByTestId('typography-section')).toBeVisible()
|
2026-06-06 08:31:24 +00:00
|
|
|
const fontSettings = page.getByTestId('font-settings-trigger')
|
|
|
|
|
await fontSettings.hover()
|
|
|
|
|
await expect(page.locator('[role=tooltip]').filter({ hasText: 'Font settings' })).toBeVisible()
|
|
|
|
|
await fontSettings.click()
|
|
|
|
|
await expect(page.locator('[role=tooltip]').filter({ hasText: 'Font settings' })).toHaveCount(0)
|
2026-05-05 19:12:33 +00:00
|
|
|
|
2026-05-19 09:27:13 +00:00
|
|
|
await expect(page.getByText('Allow browser access to local fonts')).toBeVisible()
|
2026-05-15 09:49:49 +00:00
|
|
|
await expect(page.getByTestId('font-settings-request-access')).toBeVisible()
|
2026-06-30 13:39:41 +00:00
|
|
|
await expect(page.getByTestId('font-settings-toggle-online-fonts')).toHaveText('Disable')
|
|
|
|
|
await expect(page.getByTestId('font-settings-provider-google')).toBeChecked()
|
|
|
|
|
await expect(page.getByTestId('font-settings-provider-fontsource')).toBeChecked()
|
|
|
|
|
await expect(page.getByTestId('font-settings-provider-bunny')).not.toBeChecked()
|
|
|
|
|
await expect(page.getByTestId('font-settings-provider-fontshare')).not.toBeChecked()
|
|
|
|
|
await page.getByTestId('font-settings-toggle-online-fonts').click()
|
|
|
|
|
await expect(page.getByTestId('font-settings-toggle-online-fonts')).toHaveText('Enable')
|
|
|
|
|
await expect(page.getByTestId('font-settings-provider-google')).toBeDisabled()
|
|
|
|
|
await page.getByTestId('font-settings-toggle-online-fonts').click()
|
|
|
|
|
await expect(page.getByTestId('font-settings-toggle-online-fonts')).toHaveText('Disable')
|
2026-05-19 09:27:13 +00:00
|
|
|
await expect(page.getByTestId('font-settings-download-fallbacks')).toHaveCount(0)
|
|
|
|
|
await expect(page.getByTestId('font-settings-refresh-cache')).toHaveCount(0)
|
|
|
|
|
await expect(page.getByTestId('font-settings-clear-cache')).toHaveCount(0)
|
|
|
|
|
await expect(page.getByText('Download CJK and Arabic fallbacks')).toHaveCount(0)
|
2026-05-05 19:12:33 +00:00
|
|
|
})
|