Files
AFFiNE-Mirror/tests/blocksuite/e2e/image/keymap.spec.ts

80 lines
2.0 KiB
TypeScript

import { expect } from '@playwright/test';
import {
activeEmbed,
enterPlaygroundRoom,
initImageState,
pressArrowDown,
pressArrowUp,
pressBackspace,
pressEnter,
type,
} from '../utils/actions/index.js';
import {
assertBlockCount,
assertBlockSelections,
assertRichImage,
assertRichTextInlineRange,
assertRichTexts,
} from '../utils/asserts.js';
import { test } from '../utils/playwright.js';
test.beforeEach(async ({ page }) => {
await enterPlaygroundRoom(page);
await initImageState(page, true);
await assertRichImage(page, 1);
});
test('press enter will create new block when click and select image', async ({
page,
}) => {
await activeEmbed(page);
await pressEnter(page);
await type(page, 'aa');
await assertRichTexts(page, ['', 'aa']);
});
test('press backspace after image block can select image block', async ({
page,
}) => {
await activeEmbed(page);
await pressEnter(page);
await assertRichTextInlineRange(page, 1, 0);
await assertBlockCount(page, 'paragraph', 2);
await pressBackspace(page);
await assertBlockSelections(page, ['3']);
await assertBlockCount(page, 'paragraph', 1);
});
test('press enter when image is selected should move next paragraph and should placeholder', async ({
page,
}) => {
await activeEmbed(page);
await pressEnter(page);
const placeholder = page.locator('.affine-paragraph-placeholder.visible');
await expect(placeholder).toBeVisible();
});
test('press arrow up when image is selected should move to previous paragraph', async ({
page,
}) => {
await activeEmbed(page);
await pressArrowUp(page);
await assertRichTextInlineRange(page, 0, 0);
await type(page, 'aa');
await assertRichTexts(page, ['aa']);
});
test('press arrow down when image is selected should move to previous paragraph', async ({
page,
}) => {
await activeEmbed(page);
await pressEnter(page);
await type(page, 'aa');
await activeEmbed(page);
await pressArrowDown(page);
await type(page, 'bb');
await assertRichTexts(page, ['', 'bbaa']);
});