403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/ilovecveti.ru/bitrix/js/ui/text-editor/test/e2e/tests/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/js/ui/text-editor/test/e2e/tests/selection.spec.js
const { test, expect } = require('@playwright/test');
const {
	IS_MAC,
	focusEditor,
	initializeTest,
	pasteFromClipboard,
	assertHTML,
	sleep,
	clickToolbarButton,
	keyDownCtrlOrMeta,
	keyUpCtrlOrMeta,
	insertTable,
	pressToggleBold,
	assertSelection,
	insertSampleImage,
	insertYoutubeVideo,
} = require('./utils');

const {
	moveToLineBeginning,
	moveRight,
	pressShiftEnter,
	deleteBackward,
	moveLeft,
	selectAll,
	moveToPrevWord,
	selectPrevWord,
} = require('./keyboard');
const { paragraph, bold, code, word, text, br } = require('./html');

test.describe.parallel('Selection', () => {
	test.beforeEach(async ({ page }) => initializeTest({ page }));

	test('does not focus the editor on load', async ({ page }) => {
		const editorHasFocus = async () => {
			return page.evaluate(() => {
				const editorElement = document.querySelector('[data-lexical-editor="true"]');

				return document.activeElement === editorElement;
			});
		};

		expect(await editorHasFocus()).toEqual(false);
		await sleep(500);
		expect(await editorHasFocus()).toEqual(false);
	});

	test('can wrap post-linebreak nodes into new element', async ({ page }) => {
		await focusEditor(page);
		await page.keyboard.type('Line1');
		await pressShiftEnter(page);
		await page.keyboard.type('Line2');
		await page.keyboard.down('Shift');
		await moveToLineBeginning(page);
		await page.keyboard.up('Shift');

		await clickToolbarButton(page, 'enclose-text-in-code-tag');
		await assertHTML(
			page,
			paragraph('Line1') + code(word('Line2')) + paragraph(),
		);
	});

	test('can delete text by line with CMD+delete', async ({ page }) => {
		test.skip(!IS_MAC);
		await focusEditor(page);
		await page.keyboard.type('One');
		await page.keyboard.press('Enter');
		await page.keyboard.press('Enter');
		await page.keyboard.type('Two');
		await page.keyboard.press('Enter');
		await page.keyboard.press('Enter');
		await page.keyboard.type('Three');

		const deleteLine = async () => {
			await keyDownCtrlOrMeta(page);
			await page.keyboard.press('Backspace');
			await keyUpCtrlOrMeta(page);
		};

		const lines = [
			paragraph('One'),
			paragraph('Two'),
			paragraph('Three'),
		];

		await assertHTML(page, lines.join(''));
		await deleteLine();
		await assertHTML(page, lines.slice(0, 2).join(''));
		await deleteLine();
		await assertHTML(page, lines.slice(0, 1).join(''));
		await deleteLine();
		await assertHTML(page, paragraph());
	});

	// test('can delete line which ends with element with CMD+delete', async ({ page }) => {
	// 	test.skip(!IS_MAC);
	//
	// 	await focusEditor(page);
	// 	await page.keyboard.type('One');
	// 	await page.keyboard.press('Enter');
	// 	await page.keyboard.press('Enter');
	// 	await page.keyboard.type('Two');
	//
	// 	await insertSampleImage(page);
	//
	// 	const deleteLine = async ()=> {
	// 		await keyDownCtrlOrMeta(page);
	// 		await page.keyboard.press('Backspace');
	// 		await keyUpCtrlOrMeta(page);
	// 	};
	//
	// 	await deleteLine();
	//
	// 	await assertHTML(page, paragraph('One'));
	// 	await deleteLine();
	// 	await assertHTML(page, paragraph());
	// });

	test('Can insert inline element within text and put selection after it', async ({ page }) => {
		await focusEditor(page);
		await page.keyboard.type('Hello world');
		await moveToPrevWord(page);
		await pasteFromClipboard(page, {
			'text/html': '<a href="https://test.com">link</a>',
		});
		await sleep(3000);
		await assertSelection(page, {
			anchorOffset: 4,
			anchorPath: [0, 1, 0, 0],
			focusOffset: 4,
			focusPath: [0, 1, 0, 0],
		});
	});

	test('Can delete at boundary', async ({ page }) => {
		await focusEditor(page);
		await page.keyboard.type('aaa');
		await page.keyboard.press('Enter');
		await page.keyboard.type('b');
		await page.keyboard.press('Enter');
		await page.keyboard.type('c');

		await page.keyboard.down('Shift');
		await moveLeft(page, 3);
		await page.keyboard.up('Shift');
		await page.keyboard.press('Delete');
		await assertHTML(
			page,
			paragraph(text('aaa') + br(2)),
		);

		await page.keyboard.down('Shift');
		await moveLeft(page, 1);
		await page.keyboard.up('Shift');
		await page.keyboard.press('Delete');
		await assertHTML(
			page,
			paragraph(text('aaa')),
		);
	});

	test('Can select all with node selection', async ({ page }) => {
		await focusEditor(page);
		await page.keyboard.type('Text before');
		await insertSampleImage(page);
		await page.keyboard.type('Text after');
		await selectAll(page);
		await deleteBackward(page);
		await assertHTML(page, paragraph());
	});

	test('Can delete block elements', async ({ page }) => {
		await focusEditor(page);
		await page.keyboard.type('A');
		await page.keyboard.press('Enter');
		await page.keyboard.press('Enter');
		await page.keyboard.type('b');
		await assertHTML(page, paragraph('A') + paragraph('b'));
		await moveLeft(page, 2);

		await deleteBackward(page);
		await assertHTML(page, paragraph() + paragraph('b'));

		await deleteBackward(page);
		await assertHTML(page, paragraph('b'));
	});

	test('Select all from Node selection', async ({ page }) => {
		await focusEditor(page);
		await insertYoutubeVideo(page);
		await page.keyboard.type('abcdefg');
		await moveLeft(page, 'abcdefg'.length + 1);

		await selectAll(page);
		await page.keyboard.press('Backspace');

		await assertHTML(page, paragraph());
	});

	test('Select all (DecoratorNode at start)', async ({ page }) => {
		await focusEditor(page);
		await insertYoutubeVideo(page);
		// Delete empty paragraph in front
		await moveLeft(page, 2);
		await page.keyboard.press('Backspace');
		await moveRight(page, 2);
		await page.keyboard.type('abcdefg');

		await selectAll(page);
		await page.keyboard.press('Backspace');
		await assertHTML(page, paragraph());
	});

	test('Can delete table node present at the end', async ({ page }) => {
		await focusEditor(page);
		await insertTable(page, 1, 2);
		await page.keyboard.press('ArrowDown');
		await page.keyboard.down('Shift');
		await page.keyboard.press('ArrowUp');
		await page.keyboard.up('Shift');
		await page.keyboard.press('Backspace');
		await assertHTML(page, paragraph());
	});

	// test('Can persist the text format from the paragraph', async ({ page }) => {
	// 	await focusEditor(page);
	// 	await pressToggleBold(page);
	// 	await page.keyboard.type('Line1');
	// 	await page.keyboard.press('Enter');
	// 	await page.keyboard.press('Enter');
	// 	await page.keyboard.type('Line2');
	// 	await page.keyboard.press('ArrowUp');
	// 	await page.keyboard.type('Line3');
	// 	await assertHTML(
	// 		page,
	// 		paragraph(bold('Line 1')) + paragraph(bold('Line 2')),
	// 	);
	// });

	// test('toggle format at the start of paragraph to a different format persists the format', async ({ page }) => {
	// 	await focusEditor(page);
	// 	await pressToggleBold(page);
	// 	await page.keyboard.type('Line1');
	// 	await page.keyboard.press('Enter');
	// 	await page.keyboard.press('Enter');
	// 	await page.keyboard.press('Enter');
	// 	await pressToggleItalic(page);
	// 	await page.keyboard.type('Line2');
	// 	await page.keyboard.press('ArrowUp');
	// 	await pressToggleBold(page);
	// 	await page.keyboard.type('Line3');
	// 	await assertHTML(
	// 		page,
	// 		paragraph(),
	// 	);
	// });

	test('formatting is persisted after deleting all nodes from the paragraph node', async ({ page }) => {
		await focusEditor(page);
		await pressToggleBold(page);
		await page.keyboard.type('Line1');
		await page.keyboard.press('Enter');
		await page.keyboard.press('Enter');
		await pressToggleBold(page);
		await page.keyboard.type('Line2');
		await selectPrevWord(page);
		await page.keyboard.press('Backspace');
		await page.keyboard.type('Line3');

		await assertHTML(page, paragraph(bold('Line1')) + paragraph(bold('Line3')));
	});
});

Youez - 2016 - github.com/yon3zu
LinuXploit